We are starting a new major initiative in Sitefinity that aims to enable developers to package certain pieces of website functionality into reusable components (Add-ons). Generally, it will work the following way:
1. Export any piece of the website data using the Data Export functionality
2. Combine the exported data with any files from your project (sources, binaries, static assets, etc.) and create it as a package
3. Install the add-on package to the target instance
4. Activate the add-on from the Sitefinity backend (there will be a new interface for this)
To get an idea about the new screens in the backend, you can have a look at http://l77ps2.axshare.com/
Here's some more details.
What can be included in the addon
We are trying to cover a broad range of scenarios here and allow you to place any piece of your website, i.e. any piece of exported data types and files that exist in your project.
Packaging and dependencies
The add-ons will be packaged and installed as nuget packages, which will allow to utilize the dependency management of Microsoft NuGet. The packages will have a special structure with placeholders for Sitefinity-specific data, that will be handled in a special way by Sitefinity after the nuget is installed.
Customization and upgrades of installed packages
Once installed, the add-ons will allow some level of customization to suit the needs of the target site they are installed to.
We will also offer upgrades, based on the versioning and upgrade mechanism of MS NuGet. On upgrade, Sitefinity will be also upgrading the previously exported data structures.
We are still figuring out the details what should and shouldn't be customized and how to balance between ease of customization and security of upgrades, so any feedback, ideas and suggestions on the topic will be most welcome.
Please share your thoughts, ideas and questions. Also, you'd help us a lot if you share a few minutes to fill in the following 8-question survey:
I have filled in the survey, thanks for that.
In my opinion there are two critical points that will make or break this feature:
The dialog at l77ps2.axshare.com/ allows the user to select "Pages". What I don't see is how dependencies of the selected pages will be treated. What happens to the page templates the page depends on? If they are included but there is already a page template with the same name on the target site, what happens then? What about templates of the widgets that are included with the page? Are they included? All of them? Only some of them? Who decides?
I picked "Pages" as an example but this applies equally to any other content types on the page.
IMO the most problematic aspect here is content or database migrations. Is it possible for add-on developers to hook into an event during upgrade and execute any code required to migrate the database to a new schema? What if this fails? Is it easy to retry or rollback? Can an add-on developer get access to the version number of the currently installed version and make choices depending on the result?
Generally, Sitefinity upgrades of sites with many customizations are hard enough as it is and this should not get worse due to upgrade problems in add-ons. If this isn't solved thoroughly we'll simply ignore add-ons, as the amount of pain we've been going through while doing upgrades over the past years is much higher than the minor convenience benefits that add-ons might bring.
For the initial version, developers need to take care of dependencies between pages and page templates by themselves - i.e. if Page A requires template X, add-on developers should take care to export both.
The page templates dependencies will be handled by ID and only custom created page templates will be exported for packaging, so there should be no conflict with the templates existing on the target instance.
Widget templates that live in the database are included. The widget templates on the file system will be included when picked by add-on developers.
About the events hookup and querying the DB version - we don't have this in the initial version, but we are certainly going to consider it. Our priority with Add-ons is to reduce the complexity of upgrading, so whatever needs to be done to achieve that, will be done.
Darrin Robertson said:How is this feature coming on?
Do you expect to release the first phase of it in the next release of Sitefinity?
Thank you for your interest. Yes, the first phase of these capabilities will be available in next Sitefinity release in October :)
That's good to know Mariush
Is it possible to get a beta release of 9.2 so I can look and experiment with the feature?