MOSS Site Definitions, Features and the moving site collections - moss

The general consensus is that devlopment of MOSS publishing sites, should be done using site definitions, Solutions, Features but due to project timescales we had to do all list/site column/content type/master page development using the SharePoint UI and SPD. We then used the contentdeployment wizard to migrate everything from devlopment.
Having done this, the future plan is to possibly, given the budget, change what has been built to use a site definition and features to get in line with best practices.
Has anyone done anything similar or have any tips on how best to plan for this?
Kind Regards

This is somewhat dependent on how large and complex your solution is. I was in the same situation with a project I started to work in. They initially started to do everything in SharePoint Designer. But when I was thrown in to the project, I decided to scrap all those changes, starting from the requirements and build up everything as site definitions/solutions/features in Visual Studio. In this case, it was feasible since the customizations were not too complex.
You can take a look at the SharePoint Solutions Generator, to see if that could help you as well. It can give you at least a good starting point.

Related

Choosing a CMS: EPiServer vs Orchard vs SiteCore vs Umbraco

Increasingly, I have noticed the number of Content Management Systems in use. I have some familiarity with SiteCore. I have read some literature on Umbraco. I only just got wind of Orchard the other day. I have only heard positive feedback about EPiServer. I am soon to move into a role that uses it.
Do these differ vastly in features and price? What has led you to choose one (or several) over the others?
EDIT
I did a brief review of so-called free CMSs here: On Free Microsoft Compatible Content Management Systems
Reasons I ditched Orchard when developing a 50k page website:
The Orchard CMS import tool is simply too slow. It would only accept
small batches at a time. Initially, it took eight minutes to import
1000 records. So, working on that principle I expected that it could
take seven hours to import all the records. Unfortunately, I started
to receive performance issues as more records were inserted into the
database. I even started to reduce the batch size, which helped only
temporarily in the early stages. (See Saying no to Orchard)
I can only comment mainly on Sitecore and a bit on Umbraco from my knowledge of others using it:
Sitecore is an enterprise level web CMS with an "enterprise price tag." It's very extensible, has a lot of developer/community support, and is very developer friendly. The structure of content is based on a tree of nodes with parent-children relationships. Sitecore is well known in the WCM community as a leader in content management and is rated very well by companies sch as Forrester Research, etc.
Based on my previous research and conversations with friends, Umbraco is very similar to Sitecore. It has a lower price compared to Sitecore but its not a complete rip off. Umbraco is also built on ASP.NET like Sitecore.
Here's a three-part series on Sitecore vs. Umbraco from a developer.
Of the ones you mention above, I have only used Umbraco and Sitecore to build with and am certified in both. I like the way they allow me to build systems that really work well for my customers. They both have a feel that they simply give you building blocks to create your masterpiece instead of "modules" of functionality plugged in that give you a blog, forum, etc. They make it really easy to share content throughout the site and create really nice admin experiences.
Umbraco's community is really great. They both struggle a little on the documentation side IMO, but Umbraco's videos really help and the community is quick to help. Also, if you're talking cost then its free (Umbraco) vs. quite expensive (Sitecore).
But the reality is that each developer has their own taste and the style of CMS they like to work with. Ultimately, its the team that has to build the site that really matters most when it comes to how each CMS performs for the end user.
In addition to the links above, here are a couple blog posts that may help you get a feel for the different systems:
Orchard & Umbraco - Introduction (part 1 of 4) - Aaron Powell
Sitecore vs. Umbraco Terminology
Good luck!
I mostly work with EPiServer and Sitecore, and I can tell you the difference in short:
Sitecore has broader architecture and more powerfull UI. CMS is deeply configurable and highly extensible, it has clever publishing and caching system, powerful search and page editor. But it doesn't provide much out of box and UI is pretty old, slow and hard to learn. So this will be a long journey until you understand it good and make a good support of all its features for editors.
EPiServer is easy, friendly to users and developers. It provides an essential bunch of features out of box, has easy UI and page editor, good drag-and-drop experience, easy personalization. It is code-first, distributed with NuGet, provides dependency injection for its services, out of box MVC support. But it's not so extensible and configurable, has pure search (without expensive EPiFind module) and generally lower-featured comparing to Sitecore. So it's good for small/middle websites, but can be an obstacle in complex solutions.
Both have similar tree-item concept, rich documentation, pure public module system and hard UI customization. Both expensive and not open source.
As I know, Umbraco is pretty similar to EPiServer and Sitecore, but free and open source. Of course you get less features, more bugs, not much docs and no free support.
Orchard is really different comparing to other three CMS. It is module-based like Wordpress: you use standard or public modules and themes, instead of writing the whole website from scratch. You create your own themes and modules to customize the website and CMS. So entire CMS is highly extensible and provides a lot of free community modules. But in the same time you lose control and learning curve is much longer. Orchard is free and open-source, entirely MVC-based, UI and API are well done, but it can be hard for both developers and editors to understand it.
Wordpress vs Episerver:
http://tedgustaf.com/blog/2011/2/comparison-of-episerver-and-wordpress/
OK so the guy who wrote that is an Episerver consultant but it's interesting and balanced.
All the different web content management systems have different strengths. So which one is best for you depends a lot on what kind of sites you create, what kind of budget you have and what you think matters the most in a CMS.
For example, Orchard and SiteCore are VERY different systems.
I'm a bit biased as I work there, but I believe that Webnodes CMS have several important advantages over the systems you mention.
Keywords: Relations between content, actual classes for the different content types, custom LINQ provider for all data access, expose all content as an OData endpoint etc.
Microsoft used our CMS to demonstrate OData at Mix11. Video from Mix 11

CMS: Build or Buy? [closed]

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 8 years ago.
Improve this question
This question is a little subjective, however, it aims to give me a bit of information about whether it is better to build or buy.
My company is looking to enter the world of CMSs for our clients websites, do we provide an open source one, or do we build our own model from scratch?
If you buy, which do you use?
If you build, how does your architecture differ?
EDIT: The CMS we are looking to use isn't to maintain our own website, it is something we can offer our clients and pinned onto websites we are custom building for them, it needs to be something that we adapt and manipulate easily for many different website designs and purposes.
How about using opensource one? :-)
Today the only reasons to develop new CMS are:
1) non-usual requirements (deadly rare)
2) You just like to code "your own CMS" (c)
If none is the case, take opensource one.
Personally, I have my own CMS for all my private & commercial purposes, but this was mostly just for programming fun. If you need to deliver, you have to use existing products.
The company I work for wrestled with this same question recently. This depends a lot on your client's expertise and needs. It's generally not advisable to build your own CMS unless you're using it to offer something very novel.
Drupal has lots of plugins available giving a great deal of customizability. It's handy in the same way that most CMSs are in that you can use PHP files as your templates and code them outside of the CMS.
Wordpress has the best user interface of all the CMS's I've used (Drupal, EE, Wordpress, Joomla). If you need to program plugins it's also very well documented and (when the plugin is finished) provides a drag-and-drop interface for the client to make changes to their own web site easily.
I'm currently in the process of moving our site from EE to WP.
Well I can build a simple CMS in less than a day (and everybody can do that with any good web framework). So it depends on how complex it is and how much the open source solutions can do what you want your CMS to do. I generally avoid to use open source CMS because it is usually an overkill compared with my usual client's needs but that's me. Most open source CMS (drupal, joomla, wordpress) have many features that most people simply don't care and they clutter their user interface, so I prefer to build my own as far as it is simple instead of using an open source and struggling to add a new feature and make it scalable.
First, to address your build or "buy" questions - you would be crazy to build. The resourced needed to support code you write as it changes to meet each clients needs will end up costing you a fortune in the long run. It's hard to beat the resources of thousands of developers that many of the big projects have. Does your firm have a security specialist? How about a QA team that constantly searches for ans squashes bugs? Unless you are trying to do a one off, highly specialized application, pick a CMS and go with it.
Next, as far as being able to implement the CMS across many types of sites, that is entirely dependent on your firms developers. If your developer knows XYZ CMS, then he should be able to take any design and make it work for the CMS. Any good CMS has the design layer completely separated from the content and code so the design should not be limited by the CMS in any way. It's just a matter of learning the particular templating system employed by the CMS of your choice.
Last, I am surprised that no one has mentioned the solution to your wanting to limit the amount of control your clients have over their sites. As mentioned you can go the SaaS route and never give the client access to the administrative back end of the site. Any of the good CMS projects offer front end editing. This will allow your client to add/remove/edit the content on the site without giving them access to anything structure or design related. You can completely control the admin, layout, and functionality while the client simply controls the content only, which seems like what you are trying to accomplish.
This depends heavily on what you need, but many CMSs are a platform that you can build upon, getting the best of both worlds.
Wordpress has a very rich plug-in framework.
If you are ok with Windows servers, SharePoint has an extensive plug-in/extension architecture.
I don't think there's any reason to build from scratch unless you are planning to compete in the CMS market.
Do not reinvent the wheel. It takes really a lot of time and money to make a CMS.
If I were you, I would go with an open source CMS, start building custom stuff and contribute back what you can (this is how the company works where I work).
My choice is Drupal, because of the rich set of contribs, excellent flexibility/extensibility and good security.
I think it depends on how many clients are supposed to use the CMS.
We have only one client and built a proprietary CMS which we heavily customize to the client's specific needs.
It also gives us a strategic benefit since this client can hardly migrate his web sites to another company now.
If you have a couple (> 2) of clients who are supposed to use the CMS, IMHO an open source CMS would be the best choice.
Can you develop a new CMS as good as some other ones that have been around for years and hundreds of people have worked on it's development?
That's a question I always ask myself at the start of every website buliding project.
There is surely a good open source platform that meets your requierments and that you can improve.
I suggest these:
Liferay : for large organisations and advanced projects it's written in java. I personally love this CMS. Big places like NASA use it and my company used it for a project, it was great.
Plone : Same as above - language = Python
EZPublish for large organisations but not as advanced as Liferay - language = PHP
Joomla and drupal for normal websites.
As a design agency, presumably with a number of customers with live websites that constantly need to change that are taking manpower away from new projects,
My first question would be if I intend to migrate my existing customers to the CMS based version of their site
Then, What are the commonalities/differences in your customer sites?
If there is a lot of commonality (in the back end code as opposed to the front end design), then maybe integrating a basic article editor is all you need?
Look at how a CMS is going to affect your design flow, Your designs will then be CMS 'Themes', that'll be a learning curve.
I'm not trying to discourage you from Buying or Building a CMS, but the decision will be completely decided by your companies situation.
Personally I use Joomla and DotNetNuke. I'm a developer not a designer, so I buy off the shelf themes and modify them. I also had no existing clients when I started out. I decided to use a CMS specifically because I could buy themes, and secondry to that was the client modifying the articles.
I cant think of an open source CMS that doesn't provide everything that most companies would need.
you get the benefits of bug fixes, little deployment time and ease of documentation.
When selecting the CMS try to use one that is not too bulky or not too popular.
most CMS allow for easy expansion so if a client has special needs then its easy to add functionality.
A reason that you start to build you're CMS could be because the landscape of CMS systems is big (and you can't make up your mind on one system to put in all you're energy).
Do you want a simple CMS for a website, an integrations framework or personalization / social media.
As there are a lot of OS CMS out there, I wouldn't recommend you to start from scratch. Check for research EG:
http://www.slideshare.net/OpenSourceCMS/451-group-future-of-web-content-management-open-source-cms
Also check the OS license of products and how this could affect your projects.
Good luck!
Lots of good responses already, but I don't see anyone talking about the real users, the customer who is paying for this site.
One reason a CMS product is often better is that it can give you a lot of help material, usability refinements and add-ons that you won't get when you build it yourself. More importantly for the end-users, it can mean they extend and add to the site without needing to get IT to give them permission (and the run-around on budget/resources) to do so.
Another issue is that if you build it yourself, then that is the only copy of that software that is being security tested and probed. A product will have been through more penetration tests and probing.
On the other hand there are a wealth of CMS' out there and it can be confusing if you do not know what you want. The CMS Matrix is a good site for comparing all sorts of CMS' to find one that suits your needs.
I work for a CMS vendor, Elcom Technology, so I am slightly biased - but I have also used WordPress, SharePoint, DotNetNuke, Joomla and Drupal to various levels of degree and they all offer a big step up over something home-built.
A very important reason why you may want to choose something that is already made (FOSS or commercial) is that someone else may be able to support it.
PS
I've used CMSMS on various projects. It has enough user control to let them edit, but not mess with the layout and stuff.

Please confirm: Is Windows Workflow Foundation a good horse to be backing right now?

We are in the process of selecting a workflow solution for a company that uses Microsoft products end to end. Given the news on WF4, in that it seems to be essentially a rewrite of previous versions, is it a wise move to back the current version or should we be looking elsewhere?
Ie - is the current version so bad that we would not be wise to try and use it?
Haiving just launched a project which .NET 3.5 and workflow I'd say that the current release of WF is good enough to use and run with. It has helped us to get a product out quickly (we have the usual feature creep and requirements changing weekly). However, I have a list of complaints with it:
The workflow designer will drive you insane because it is so slow (in certain circumstances) and re-arranges your state machines as it sees fit.
There is no built in upgrade strategy for keeping your old workflows running once you do a bug fix release. If you are going to use WF think carefully how to do upgrades early.
Itegrating with WCF (the send and recieve activity) hide the WorkflowRuntime from you this makes it very difficult to understand what is going on on the hood.
Its not easy to unit test them. There are ideas out there but none seemed particulary easy when we started this WorkFlow Unit Testing
I like the ideas and potential of Workflow based development, however I am not in a hurry to repeat this experience and would probably stick without it for long running processes. One place I would use it again would be in a short, complicated process (like a rules engine for working out prices).
Maybe it is a little late for you, but now that WF 4.0 is released in beta, other people thinking the same question can consider backing the 4.0 horse instead of 3.5 horse.
This goes some way to fixing the following problems:
•The workflow designer will drive you insane because it is so slow (in certain circumstances) and re-arranges your state machines as it sees fit.
[Designer Perf Improved]
•Its not easy to unit test them. There are ideas out there but none seemed particulary easy when we started this WorkFlow Unit Testing
[I think it's a little easier now, some of the introduction to workflow samples include plenty of unit testing]
My understanding is that Microsoft will provide backwards compatibility and/or a migration strategy to the new WF, so I would guess that you are safe to use it. However, I have heard from other developers in my organization that the current version of WF is extremely painful to use. If you have the budget (and depending on the complexity of your workflows), you may want to consider K2: http://www.k2.com/en/index.aspx
I, as a workflow developer, think that current version is painful to use. This is not surprising as this is a v1.0 software out from microsoft :)
I think you should first consider your expectations from a workflow software. Do you have a well defined list of expectations from WF? Acutally I am wondering content of such a list. Maybe we can help more detailed on each topic.
I don't know why people have such negative impressions about WF. Sure it has it drawbacks, but I thought it was pretty useful. The one major issue I have about it is the lack of support for upgrading existing workflow (bullent #2 in gbanfill's list).
Another point to use the current version is that "Dublin" (Microsoft new App Server) will be built on WCF & WF .NET 4.0 but will gladly host 3.5 WF's. So you will be able to migrate to that without a rewrite.
Just a quick note to mention that Visual Studio 2010 CTP contains a new updated WF designer as part of the Oslo objective.

Workflow Tools Comparison?

There is a pretty strong need for us to design some workflows around various processes. The problem is none of us actually know any workflow technology yet, and finding good data to compare the available options has been tedious and not entirely fruitful.
So I figured I'd ask you guys.
The main technologies we are looking at are Windows Workflow Foundation and eDocs Workflow. What other options are there? Sharepoint 2007 has workflow functionality too, right? Is that just based on WF?
What are the pros and cons of the various technologies? How do they compare?
EDIT: Also, one feature the administrative types like with eDocs Workflow is that it provides a method for them to edit it themselves. I believe Sharepoint '07 does as well. Is there some other way to allow that with a straight WWF implementation?
Sharepoint and WF more like complementary technologies, designed as two different workflow authoring tools in the same ecosystem. There's a Sharepoint workflow designer, and a WF (Windows Workflow Foundation) workflow designer.
The Sharepoint designer is meant to be an Office-like workflow editing experience, easier to get started with, geared for non-technical types, and generates all the web forms automatically.
The 'WF' workflow designer on the other hand is actually a component of Visual Studio (by default - as Bernie says you can rehost it), and designed to allow programmers to be able to fully customize workflow, and integrate it with any other code/systems desired. Building and deploying sharepoint sites this way is still possible, through the use of 'Sharepoint Activities', but more complex.
If you take the former route, you can hopefully let the administrative types do their own basic customizations (up to the limits of that environment) without causing total chaos.
It is possible to 'rehost' the WF designer (the one from Visual Studio) in your own application, so that users can author workflows. There are a number of code examples on the web, the most important one from MS itself: http://msdn.microsoft.com/en-us/library/aa480213.aspx).
At some point, when evaluating WF, I implemented a demo application that did this and added some features and found that although it works, not everybody can understand and use the more difficult activities (like the policy activity) that require understanding of how the rules engine works.

What should I propose for a reusable code library organization?

My organization has begun slowly repurposing itself to a less product-oriented business model and more contract-oriented business model over the last year or two. During the past year, I was shifted into the new contracting business to help put out fires and fill orders. While the year as a whole was profitable (and therefore, by at least one measure, successful, we had a couple projects that really dinged our numbers for the year back around June.
I was talking with my manager before the Christmas holiday, and he mentioned that, while he doesn't like the term "post-mortem" (I have no idea what's wrong with the term, any business folks or managers out there know?), he did want to hold a meeting sometime mid-January where the entire contract group would review the year and try to figure out what went right, what went wrong, and what initiatives we can perform to try to improve profitability.
For various reasons (I'll go into more detail if it's requested), I believe that one thing our team, and indeed the organization as a whole, would benefit from is some form of organized code-sharing. The same things get done again and again by different people and they end up getting done (and broken) in different ways. I'd like to at least establish a repository where people can grab code that performs a certain task and include (or, realistically, copy/paste) that code in their own projects.
What should I propose as a workable common source repository for a team of at least 10-12 full-time devs, plus anywhere from 5-50 (very) part time developers who are temporarily loaned to the contract group for specialized work?
The answer required some cultural information for any chance at a reasonable answer, so I'll provide it here, along with some of my thoughts on the topic:
Developers will not be forced to use this repository. The barrier to
entry must be as low as possible to
encourage participation, or it will
be ignored. Sadly, this means
that anything which requires an
additional software client to be
installed and run will likely fail.
ClickOnce deployment's about as
close as we can get, and that's awfully iffy.
We are a risk-averse, Microsoft shop. I may be able to sell open-source solutions, but they'll be looked upon with suspicion. All devs have VSS, the corporate director has declared that VSTS is not viable going forward. If it isn't too difficult a setup and the license is liberal, I could still try to ninja a VSTS server into the lab.
Some of my fellow devs care about writing quality, reliable software, some don't. I'd like to protect any shared code written by those who care from those who don't. Common configuration management practices (like checking out code while it's being worked on) are completely ignored by at least a fifth of my colleagues on the contract team.
We're better at writing processes than following them. I will pretty much have to have some form of written process to be able to sell this to my manager. I believe it will have to be lightweight, flexible, and enforced by the tools to be remotely relevant because my manager is the only person who will ever read it.
Don't assume best practices. I would very much like to include things like mandatory code reviews to enforce use of static analysis tools (FxCop, StyleCop) on common code. This raises the bar, however, because no such practices are currently performed in a consistent manner.
I will be happy to provide any additional requested information. :)
EDIT: (Responsing to questions)
Perhaps contracting isn't the correct term. We absolutely own our own code assets. A significant part of the business model on paper (though not, yet, in practice) is that we own the code/projects we write and we can re-sell them to other customers. Our projects typically take the form of adding some special functionality to one of the company's many existing software products.
From the sounds of it you have a opportunity during the "post-mortem"to present some solutions. I would create a presentation outlining your ideas and present them at this meeting. Before that I would recommend that you set up some solutions and demonstrate it during your presentation. Some things to do -
Evangelize component based programming (A good read is Programming .NET Components - Jubal Lowy). Advocate the DRY (Don't Repeat Yourself) principle of coding.
Set up a central common location in you repository for all your re-usable code libraries. This should have the reference implementation of your re-usable code library.
Make it easy for people to use your code libraries by providing project templates for common scenarios with the code libraries already baked in. This way your colleagues will have a consistent template to work from. You can leverage the VS.NET project template capabilities to this - check out the following links VSX Project System (VS.Net 2008), Code Project article on creating Project Templates
Use a build automation tool like MSBuild (which is bundled in VS2005 and up) to copy over just the components needed for a particular project. Make this part of your build setup in the IDE (VS.NET 2005 and up have nifty ways to set up pre-compile and post-compile tasks using MSBuild)
I know there is resistance for open source solutions but I would still recommend setting up and using a continuous automation system like CruiseControl.NET so that you can leverage it to compile and test your projects on a regular basis from a central repository where the re-usable code library is maintained. This way any changes to the code library can be quickly checked to make sure it does not break anything, It also helps bring out version issues with the various projects.
If you can set this up on a machine and show it during your post-mortem as part of the steps that can be taken to improve, you should get better buy since you are showing something already working that can be scaled up easily.
Hope this helps and best of luck with your evangelism :-)
I came across this set of frameworks recently called the Chuck Norris Frameworks - They are available on NuGet at http://nuget.org/packages/chucknorris . You should definitely check them out, as they have some nice templates for your ASP.NET projects. Also definitely checkout Nuget.
organize by topic, require unit tests (feature-level) for check-in/acceptance into library; add a wiki to explain what/why and for searching
One question: You say this is a consulting group. What code assets do you have? I would think most of your teams' coding efforts would be owned by your clients as part of your work-for-hire contract. If you are going to do this you need to make absolutely certain that your contracts grant you rights to your employees' work.
Maven has solved code reuse in the Java community - you should go check it out.
I have a .NET developer that's devised something similar for our internal use for .NET assemblies. Because there's no comparable .NET Internet community, this tool will just access an internal repository in our corporate network. Otherwise will work rather much the way Maven does.
Maven could really be used to manage .NET assemblies directly (we use it with our Flex .swf and .swc code modules) is just .NET folk would have to get over using a Java tool and would probably have to write a Maven plugin to drive msbuild.
First of all for code organization check out Microsoft Framework Design Guidelines at http://msdn.microsoft.com/en-us/library/ms229042.aspx and then create a central Location source control for the new framework that your going to create. Set up some default namespaces, assemblies for cleaner seperation and make sure everyone gets a daily build.
Just an additional point, since we have "shared code" in my shop as well.
We found out this is very much a packaging issue:
Whatever code your are producing or tool you are using, what you should have is a common build tool able to package your sources into a "delivery component", with everything used to actually execute the code, but also the documentation (compressed), and the source (compressed).
The main interest into having a such a "delivery package unit" is to have as less files to deploy as possible, in order to ease the download of those units.
The build process can very well be managed by Maven or any other (ant/nant) tool you want.
When some audit team want to examine all our projects, we just deploy on their post the same packages we deploy on a production machine, except they will un-compressed the source files and do their work.
Since our source files also includes whatever files are needed to compile them (like for instance eclipse files), they even can re-compile those projects in their development environment).
That way:
Developers will not be forced to use this repository. The barrier to entry must be as low as possible to encourage participation, or it will be ignored: it is just a script to execute to get the "delivery module" with everything in it they need (a maven repository can be used for that too)
We are a risk-averse, Microsoft shop: you can use any repository you want
Some of my fellow devs care about writing quality, reliable software, some don't: this has nothing to do with the quality of code written in these packages modules
We're better at writing processes than following them: the only process involved in this is the packaging process, and it can be fairly automated
Don't assume best practices: you are not forced to apply any kind of static code analysis before packaging executable and source files.