We at Vega IT love uSiteBuilder and use it every day on our projects. We've been listening at comments from the community on what should be improved for the past 2.5 years, since uSiteBuilder was released and we are sorry because we couldn't adopt all good suggestions in short time.
The major issues that we have experienced, and which were also reported by the community, are related to performance of uSiteBuilder on medium and large projects (those with tens to hundreds of document types) - more specifically the initial load/initialization time. There were many comments from the community as well, some posted here on our.umbraco.org, some posted as blog posts (as this recent one: https://offroadcode.com/blog/1774/the-state-of-code-first-development-in-umbraco/) and many posted on Twitter.
The last work that we've done was support for v6 of Umbraco. That work was done in a separate branch on the official repository at codeplex but it was just some small work to make it possible for uSiteBuilder to be used on v6 projects. That version of uSiteBuilder still didn't get any performance improvements.
After looking at the current approach and implementation of uSiteBuilder and comparing that to the v4 and v6 APIs, we concluded that for major improvements, we need to rebuild uSiteBuilder from scratch.
We are happy to announce that we have started with the rebuild process with these main goals in mind:
support Umbraco v6.x and v7.x projects
make initial sync process super-fast
implement lazy-load for properties of our document types
implement integration with uQuery
implement full-support for MVC
There will be many more changes of course but the five listed above will be our main priorities.
Our estimate is that the work will be completed and tested in three months.
We are looking forward to getting any feedback from you during the development but also when uSiteBuilder v2 gets released.
There are various projects that all try to do the (more or less) same thing (uSiteBuilder, uSync...) and that's good. One thing to keep in mind:although Core can't take over these devs (and that's very good), Core can make life easier for code-first experimenters. So don't hesitate to share feedback about all the points of friction that you may have with Core, missing interfaces and hooks, that would make your life easier.
Sometime ppl do huge efforts to circumvent those limitations of Core... whereas it might be quite easy to just make an interface public, add a hook, whatever.
Yes, this will be an open source project, like version 1. And it will be hosted on codeplex (http://usitebuilder.codeplex.com/) as before and will be open for contributions as it is at the moment.
Yes, it will be available as a Nuget package as well.
Not really because the purpose of uSiteBuilder is not document types sync or template sync or similar - the idea is to have a strongly typed, compile time error checked, etc. and in sync solution in Umbraco so in that sense partial releases would not make much sense. There are tools out there that are used only for sync of document types for example so you could use such tools before uSiteBuilder v2 gets released.
We use uSiteBuilder quite extensively and we're currently trying to decide whether we should use Umbraco 7 for a new project. Is v2 progressing according to plan i.e. you're aiming for a Jan release or should we hold off?
If realistically v2 won't be available anytime soon then we'll continue with Umbraco 6.
Would it maybe be an option to do what you did for v6 - just get it working, not necessarily with all the new features and performance enhancements? This would at least get developers on to using Umbraco 7, then, when uSiteBuilder 2 is released, it's an upgrade.
I don't mind exploring the possibility of forking 3.0.0 branch and looking into this, unless you think this will cause more problems than it solves - to be honest, I haven't looked at the uSiteBuilder source.
I don't think we would be able to do that as we are quite busy at the moment. We managed to plan the right developers for v2 build and we had to wait for a few months to be able to start with that work.
I would still suggest you stick to Umbraco 6 until v2.
I hope this is the right forum to suggest a feature. We work with a similar solution for EPiServer sites, called PageTypeBuilder. One of the great features in this product (albeit it is not included in the core product) is an Admin interface that enables an Administrator to view:
Page/Document Types that exist in the system but do not exist in code i.e. those that were not created with uSiteBuilder; ability to delete Document Type
Properties on any Page/Document Type that does not exist in code; ability to delete Properties
Properties on any Page/Document Type that does not match the code definition; ability to reset to the code definition
I appreciate that currently uSiteBuilder does not delete anything for obvious reasons, but this is functionality that only Administrators should be able to use.
Thanks for the tips. I'll add it to the list of TODOs and we'll consider these features (and an admin area in general) for one of future releases.
We actually work quite a lot with PageTypeBuilder as well so I'll ask one of my colleagues to have a look at the features that you've mentioned.
Btw, it's possible to delete properties using uSiteBuilder - you just have to mark your property as "obsolete" using an atribute and uSiteBuilder will delete it from the CMS on next run.
It's got it's quirks, but it does just about work.
Also, it needs a little tweaking, but uSiteBuilderAdmin does work with Umbraco 7. You need to install the package, move it from /umbraco/plugins to /umbraco/Dashboard/plugins and modify the Dashboard.config to combine the developer sections and change the path to the dashboard usercontrol. Some of the CSS is broken, but you can sync (import and export). Result(-ish)!
This sounds great :-) When is the planned release date of v2? (23. october+ 3 months == 1. february?)
A few ideas:
You can use MVC's build-in attributes in System.ComponentModel.Annotations to decorate the document types, maybe this is a good idea instead of implementing your own attributes? (Display, UIHint, etc.)
My colleagues are still working with a local repository for the v2 build. Our plan is to have the code pushed either to the same old repository at codeplex or to a new one on GitHub or a similar service (a few people have suggested that we move to GitHub so we are considering that now).
I'll let you know when we make the code of our minimal viable product (MVP) available so that you can test it out before the first release gets published. You could then contribute as well as we plan to work on additional features after the MVP gets published?
Some people mentioned that we could contact the Core team in case a change in Core can make our life easier when building uSiteBuilder (Stephen https://twitter.com/zpqrtbnk was one of them).
A colleague of mine is now building templates sync support in v2 but the problem is that method "Template.MakeNew" from the Core will always add a line like this to the template:
That would be me ;-) Which version of Umbraco are you targetting? Because I think what you want is already possible with the new API that's in 6.1 and 7. For older version that would be complicated. Let me know.
Stephen, sorry for not replying sooner. You are right, we checked and the issue has been fixed in 6.1 and 7. We found many other issues with the 6.0.x versions so we'll have to support 6.1+.
Anyone who wants to give it a try can download the latest source from the GitHub repository, build it and give it a try. There are also test projects within the same solution - one for a web forms solution and one for an MVC solution.
When is Umbraco 7 going to be supported by uSiteBuilder? I am about to start an Umbraco 7 project and couldn't find anything mentioning that - only that it is going to be supported but not stating when. It would be very useful to know that.
Hi Sassa,
I tried the code from github, but I just dropped the DLL (and castle.core.dll) into an existing project.... (we use autofac for DI)
Is there a doc or primer on differences from the old version?
In our project I get this error:
The model item passed into the dictionary is of type 'Castle.Proxies.HomepageProxy', but this dictionary requires a model item of type 'Umbraco.Web.Models.RenderModel'.
Ahh.... is there a way to limit uSiteBuilder to just the creation of doctypes? we have all our own infrastructure set up for creating viewModels and wiring them up.
We've been using it on two Umbraco 6.x projects and one Umbraco 7.x project so far. There were some minor issues but we solved them in the meantime. So I can confirm that it works fine already.
Any feedback is most welcome. We'll still be working on it as performance can still be improved and we got some good feedback already from the community on how some things could be reorganized in code.
We are eager to use the new version uSiteBuilder but could do with some quick pointers on how to setup. Do you have any sort of notes on how to setup and run uSiteBuilder?
Ive had a look at the example code on GitHub but its a bit unclear as to whats needed to get uSiteBuilder up and running.
To setup the actual DocumentTypes just add new classes to the MvcApplication1.USiteBuilder project as per the example project in GitHub (see project Vega.Test.Entities in that solution for examples).
since this is my first post in the Umbraco forum, I want to thank all of you for providing such a huge amount of useful information. That's really invaluable!!
We have been starting to use Umbraco v7 6 months ago and have moved to doing a code first approach now, using the great uSiteBuilder tool. In general it works fine for us and saves us a lot of headache especially when it comes to migrating the CMS to our production system. However, I have one question: Is it possible to include the code first approach also for Media-Types (resembling the synchronization mechanism for Document-Types)? Since we also maintain quite a lot of different media in Umbraco, this feature would be extremely helpful for us.
uSiteBuilder doesn't support Media Types at the moment.
We might add support for Media Types in the future but we also welcome people from the community (including you) to contribute to the project by adding cool new features to uSiteBuilder. In case you want to contribute to the project, the latest source is here: https://github.com/spopovic/uSiteBuilder
We've been using it for a few months on a number of Umbraco 7 projects and it's working very well.
Just be sure to take the latest version from GitHub (https://github.com/spopovic/uSiteBuilder) or at least the latest NuGet package (https://www.nuget.org/packages/uSiteBuilder/).
The model item passed into the dictionary is of type 'Umbraco.Web.Models.RenderModel', but this dictionary requires a model item of type 'Models.Pages.HomePage'.
This is not the thread for that question but what you need to do is to make your HomePage view model extend RenderModel.
public class HomePageViewModel : RenderModel { public HomePageViewModel(RenderModel renderModel) : base(renderModel.Content, renderModel.Culture) { } }
I'm wondering whether there is any support for PropertyGroups in the latest version of uSiteBuilder. PropertyGroups in PageTypeBuilder (for EPiServer) enable you to add multiple properties to a DocType where you can't acheive that purely through inheritance.
uSiteBuilder v2 - a rebuild
Hello everyone,
We at Vega IT love uSiteBuilder and use it every day on our projects. We've been listening at comments from the community on what should be improved for the past 2.5 years, since uSiteBuilder was released and we are sorry because we couldn't adopt all good suggestions in short time.
The major issues that we have experienced, and which were also reported by the community, are related to performance of uSiteBuilder on medium and large projects (those with tens to hundreds of document types) - more specifically the initial load/initialization time. There were many comments from the community as well, some posted here on our.umbraco.org, some posted as blog posts (as this recent one: https://offroadcode.com/blog/1774/the-state-of-code-first-development-in-umbraco/) and many posted on Twitter.
The last work that we've done was support for v6 of Umbraco. That work was done in a separate branch on the official repository at codeplex but it was just some small work to make it possible for uSiteBuilder to be used on v6 projects. That version of uSiteBuilder still didn't get any performance improvements.
After looking at the current approach and implementation of uSiteBuilder and comparing that to the v4 and v6 APIs, we concluded that for major improvements, we need to rebuild uSiteBuilder from scratch.
We are happy to announce that we have started with the rebuild process with these main goals in mind:
There will be many more changes of course but the five listed above will be our main priorities.
Our estimate is that the work will be completed and tested in three months.
We are looking forward to getting any feedback from you during the development but also when uSiteBuilder v2 gets released.
Regards,
Sasa and the Vega IT team.
Super great.
There are various projects that all try to do the (more or less) same thing (uSiteBuilder, uSync...) and that's good. One thing to keep in mind:although Core can't take over these devs (and that's very good), Core can make life easier for code-first experimenters. So don't hesitate to share feedback about all the points of friction that you may have with Core, missing interfaces and hooks, that would make your life easier.
Sometime ppl do huge efforts to circumvent those limitations of Core... whereas it might be quite easy to just make an interface public, add a hook, whatever.
Stephan
Thanks Stephen, we'll do.
We were actually doing huge efforts with v1 of uSiteBuilder to overcome some limitations of Core.
Sasa
Hi Sasa,
This is great news. I wondered if you could tell me:
Thanks, Andrew
Hi Andrew,
Regards, Sasa
Hi Sasa,
We use uSiteBuilder quite extensively and we're currently trying to decide whether we should use Umbraco 7 for a new project. Is v2 progressing according to plan i.e. you're aiming for a Jan release or should we hold off?
If realistically v2 won't be available anytime soon then we'll continue with Umbraco 6.
Greg.
Hi Greg,
I would suggest you continue with Umbraco 6 as it's still early for us to guaranty release date of uSiteBuilder v2.
Regards, Sasa
Hi Sasa,
Would it maybe be an option to do what you did for v6 - just get it working, not necessarily with all the new features and performance enhancements? This would at least get developers on to using Umbraco 7, then, when uSiteBuilder 2 is released, it's an upgrade.
I don't mind exploring the possibility of forking 3.0.0 branch and looking into this, unless you think this will cause more problems than it solves - to be honest, I haven't looked at the uSiteBuilder source.
Greg.
Hi Greg,
I don't think we would be able to do that as we are quite busy at the moment. We managed to plan the right developers for v2 build and we had to wait for a few months to be able to start with that work.
I would still suggest you stick to Umbraco 6 until v2.
Regards, Sasa
Hi Sasa,
I hope this is the right forum to suggest a feature. We work with a similar solution for EPiServer sites, called PageTypeBuilder. One of the great features in this product (albeit it is not included in the core product) is an Admin interface that enables an Administrator to view:
Hi Al,
Thanks for the tips. I'll add it to the list of TODOs and we'll consider these features (and an admin area in general) for one of future releases.
We actually work quite a lot with PageTypeBuilder as well so I'll ask one of my colleagues to have a look at the features that you've mentioned.
Btw, it's possible to delete properties using uSiteBuilder - you just have to mark your property as "obsolete" using an atribute and uSiteBuilder will delete it from the CMS on next run.
Regards,
Sasa
Hi guys,
There's a package called uSiteBuilder Admin that has the functionality you're describing, higgsy. Maybe check that out:
http://our.umbraco.org/projects/backoffice-extensions/usitebuilder-admin
Greg.
Al (never met you before in my life ;-}) and Sasa,
With regards to admin there is http://our.umbraco.org/projects/backoffice-extensions/usitebuilder-admin so could continue using that or update it to work with v2?
Regards
Ismail
I agree with Ismail, if such package is already there then the best would be to just update it to work with uSiteBuilder v2.
Regards,
Sasa
FYI usitebuilderAdmin doesn't work properly in umbraco 6.x
It's got it's quirks, but it does just about work.
Also, it needs a little tweaking, but uSiteBuilderAdmin does work with Umbraco 7. You need to install the package, move it from /umbraco/plugins to /umbraco/Dashboard/plugins and modify the Dashboard.config to combine the developer sections and change the path to the dashboard usercontrol. Some of the CSS is broken, but you can sync (import and export). Result(-ish)!
Greg.
This sounds great :-) When is the planned release date of v2? (23. october+ 3 months == 1. february?)
A few ideas:
Hi Thomas,
Thanks for the ideas, I'll pass them to my colleagues who are working on the project.
And yes, we are still targeting end of January/begging of February.
Regards,
Sasa
Sasa
Keen to know of how you are progressing
I am hanging out for the update
+1
Hi Sasa,
I just caught up with the fact you're upgrading the awesome uSiteBuilder. I wanted to see if I could get some early bits and test it out (perhaps contribute), but I don't see anything new here: http://usitebuilder.codeplex.com/SourceControl/list/changesets?branch=3.0.0
Am I looking in the right place?
Cheers.
Murray.
Hi Murray,
My colleagues are still working with a local repository for the v2 build. Our plan is to have the code pushed either to the same old repository at codeplex or to a new one on GitHub or a similar service (a few people have suggested that we move to GitHub so we are considering that now).
I'll let you know when we make the code of our minimal viable product (MVP) available so that you can test it out before the first release gets published. You could then contribute as well as we plan to work on additional features after the MVP gets published?
Regards,
Sasa
Hi everyone,
Some people mentioned that we could contact the Core team in case a change in Core can make our life easier when building uSiteBuilder (Stephen https://twitter.com/zpqrtbnk was one of them).
A colleague of mine is now building templates sync support in v2 but the problem is that method "Template.MakeNew" from the Core will always add a line like this to the template:
<%@ Master Language="C#" MasterPageFile="~/umbraco/masterpages/default.master" AutoEventWireup="true" %>
Can anyone help and suggest who we can contact to get a new overload of the Template.MakeNew method which would not be adding the above line?
Regards,
Sasa
That would be me ;-) Which version of Umbraco are you targetting? Because I think what you want is already possible with the new API that's in 6.1 and 7. For older version that would be complicated. Let me know.
Stephen, sorry for not replying sooner. You are right, we checked and the issue has been fixed in 6.1 and 7. We found many other issues with the 6.0.x versions so we'll have to support 6.1+.
Thanks for your help with this issue.
Regards,
Sasa
So, any progress? :) I'm dying to try this thing out in VS2013/Umbraco7 development :)
For those of you interested to look at the current work in progress, a status update is available here: http://www.vegaitsourcing.rs/#!/articles/2014/03/usitebuilder-v2-%E2%80%93-a-status-update-from-the-10th-of-march-2014
Anyone who wants to give it a try can download the latest source from the GitHub repository, build it and give it a try. There are also test projects within the same solution - one for a web forms solution and one for an MVC solution.
Any feedback is welcome.
Regards,
Sasa
When is Umbraco 7 going to be supported by uSiteBuilder? I am about to start an Umbraco 7 project and couldn't find anything mentioning that - only that it is going to be supported but not stating when. It would be very useful to know that.
Thanks
Hi Sassa,
I tried the code from github, but I just dropped the DLL (and castle.core.dll) into an existing project.... (we use autofac for DI)
Is there a doc or primer on differences from the old version?
In our project I get this error: The model item passed into the dictionary is of type 'Castle.Proxies.HomepageProxy', but this dictionary requires a model item of type 'Umbraco.Web.Models.RenderModel'.
Cheers.
Murray.
Murray,
I was playing with uSitebuilder and you need to set it to the DocumentType you set or inherited from. Much like the example on the github
https://github.com/spopovic/uSiteBuilder/blob/master/source/Vega.Test.MVC/Views/FirstLevel.cshtml
@inherits Vega.USiteBuilder.UmbracoTemplatePageBase<Vega.Test.Entities.DocumentTypes.FirstLevelDT>
Ahh.... is there a way to limit uSiteBuilder to just the creation of doctypes? we have all our own infrastructure set up for creating viewModels and wiring them up.
What do you use for the viewModels I am not 100% happy with purely using uSitebuilder for that aswell
We have our own custom mapper.
We like to have viewModels that are not 1:1 mapped to the doc-type.
Hi Sasa, in this thread on November 13, 2013 @ 11:02 you mentioned there would be a uSiteBuilder nuget package.
Do you have a date for when this is going to happen?
Thanks
Hi Fabio,
We'll have both v1 and v2 of uSiteBuilder available as NuGet packages by the end of the week.
Regards,
Sasa
hi Sasa,
Will it be possible to use uSitebuilder v2 solely for Code First development i.e. just Document Type (and Data type?) synchronization?
thanks
Hi Andrew,
That was always possible (with versions 1.x) and is now possible as well.
Regards,
Sasa
Sasa I have had issues with this and using
In the class SiteBuilderApplicationBase the line
mvc. DefaultRenderMvcControllerResolver.Current.SetDefaultControllerType(typeof(TemplateBaseController));
I think needs to be an option to turn on and off. As if you only want it for code first you don't need to change the default base controller.
I am happy to send this change in githib if make it easier for you.
Shannon,
Feel free to make a fork and a pull request on GitHub. We'll then review your update and approve it if it's all fine.
Regards,
Sasa
Hi Shannon,
Sorry for my late reply, I was quite busy for the last few days.
We have reviewed and merged your change.
Thanks for supporting the uSiteBuilder team!
Regards,
Sasa
hi Sasa, do you have a timeframe on a beta release of v2? thanks
Hi Andrew,
It's actually already available as a NuGet package: http://www.nuget.org/packages/uSiteBuilder/.
The source code on GitHub is also up to date with the latest changes: https://github.com/spopovic/uSiteBuilder.
We've been using it on two Umbraco 6.x projects and one Umbraco 7.x project so far. There were some minor issues but we solved them in the meantime. So I can confirm that it works fine already.
Any feedback is most welcome. We'll still be working on it as performance can still be improved and we got some good feedback already from the community on how some things could be reorganized in code.
Regards,
Sasa
Hi Sasa
We are eager to use the new version uSiteBuilder but could do with some quick pointers on how to setup. Do you have any sort of notes on how to setup and run uSiteBuilder?
Ive had a look at the example code on GitHub but its a bit unclear as to whats needed to get uSiteBuilder up and running.
Cheers
Steve
I manged to get a simple test application up and running using the following rough steps :
<add key="siteBuilderUserLoginName" value="YOUR_ADMIN_USERNAME" />
<add key="siteBuilderSuppressSynchronization" value="false" />
<add key="siteBuilderEnableDefaultControllerType" value="false"/>
<add key="siteBuilderAssembly" value="MvcApplication1.USiteBuilder"/>
To setup the actual DocumentTypes just add new classes to the MvcApplication1.USiteBuilder project as per the example project in GitHub (see project Vega.Test.Entities in that solution for examples).
Hope that helps
Steve
Hi Stephen,
Sorry for my late reply. But it seems that you've figured it out already, which is even better ;-)
Thanks for sharing the instructions!
Regards,
Sasa
Hi Sasa,
since this is my first post in the Umbraco forum, I want to thank all of you for providing such a huge amount of useful information. That's really invaluable!!
We have been starting to use Umbraco v7 6 months ago and have moved to doing a code first approach now, using the great uSiteBuilder tool. In general it works fine for us and saves us a lot of headache especially when it comes to migrating the CMS to our production system. However, I have one question: Is it possible to include the code first approach also for Media-Types (resembling the synchronization mechanism for Document-Types)? Since we also maintain quite a lot of different media in Umbraco, this feature would be extremely helpful for us.
Best Regards and keep up the great work,
Christian
Hi Christian,
uSiteBuilder doesn't support Media Types at the moment.
We might add support for Media Types in the future but we also welcome people from the community (including you) to contribute to the project by adding cool new features to uSiteBuilder. In case you want to contribute to the project, the latest source is here: https://github.com/spopovic/uSiteBuilder
Regards,
Sasa
Hi all,
I would really like to use uSitebuilder and umbraco v7. How stable is the build to use with v7?
Would anyone not recommend using this approach?
Hi Adam,
We've been using it for a few months on a number of Umbraco 7 projects and it's working very well.
Just be sure to take the latest version from GitHub (https://github.com/spopovic/uSiteBuilder) or at least the latest NuGet package (https://www.nuget.org/packages/uSiteBuilder/).
Regards,
Sasa
Thanks Sasa, much appreciated!
Hi Sasa,
I keep recieving
The model item passed into the dictionary is of type 'Umbraco.Web.Models.RenderModel', but this dictionary requires a model item of type 'Models.Pages.HomePage'.
Any ideas?
Thanks
Adam
This is not the thread for that question but what you need to do is to make your HomePage view model extend RenderModel.
public class HomePageViewModel : RenderModel
{
public HomePageViewModel(RenderModel renderModel)
: base(renderModel.Content, renderModel.Culture)
{
}
}
Hi all,
I'm wondering whether there is any support for PropertyGroups in the latest version of uSiteBuilder. PropertyGroups in PageTypeBuilder (for EPiServer) enable you to add multiple properties to a DocType where you can't acheive that purely through inheritance.
Any thoughts? This would be hugely beneficial.
Thanks
Al
Anyone any thoughts on PropertyGroups?
is working on a reply...