In part 1 of this series, I provided 6 time management tips for independent developers. In this post, I will discuss why I chose Umbraco as a CMS for this project. Part 3 will cover best-practices and tools for managing self-managed projects – people management, task management, quality assurance, deployments, sales, and communications. Part 4 will cover content migration, custom feature implementation, launch planning, performance optimization, Amazon Web Services integration, and team engagement
WordPress, Umbraco, or Custom?
Most web developers who were around before the explosion of modern content management applications have built one themselves. I built my first CMS using Classic ASP and Access around 2002 for a university newspaper. In 2004, I designed a new CMS for Mises.org and evolved it through the latest Microsoft technologies for just over 10 years. (More on this project here.) It was a great learning experience to build the site from a simple article archive to a million+ visits per month. During that time, I build sites using Joomla, WordPress, and Umbraco, so I was able to appreciate the costs and benefits of build a CMS from scratch.
Running a custom CMS was fun and educational, but there were many downsides. Building a popular website is a huge investment, and requires specialized expertise. It requires extensive knowledge about search engine optimization, content workflows, user experience design, full-stack performance optimization and much more. Software development in general is difficult, risky and requires continuing effort to stay up to date.
Build custom software is fun, but the criteria in choosing a CMS strategy should be to minimize technical investment and leverage third party experience as much as possible.
Selecting a CMS:
Here are the options I considered:
- A commercial, proprietary application with most required features built in such as SiteFininity, SiteCore, ExpressionEngine, etc
- An open-source (free) application such as WordPress, Drupal, and Umbraco.
- A custom CMS, written from scratch
Benefits of a commercial CMS:
- Well supported by vendor.
- Has most needed features out of the box.
- Can be expensive. The median Adobe CQ/AEM licensing cost is $450K and median install cost is $2 million. (I had an opportunity to work an on Adobe AEM project – it’s a great tool, but I find it hard to recommend the $2 million premium over the free alternatives for most organizations.)
- More likely to undergo major changes in future releases such as doubling in cost, targeting a different market, discontinuing product, etc.
- No access to source code means core changes to functionality may be impossible.
- Usually have a smaller development community and fewer and more expensive add-ons.
Benefits of an open-source CMS:
- For popular apps, have millions of users, with community support
- More likely to have add-ons which provide needed features
- Access to source code means anything is customizable
- Usually code base and features stable over long periods of time and upgrades are possible
- Provide a set of different features often requires cobbling together plugins by different authors, with very different quality
- The above can lead to poor performance and poor integration
- Lack of vendor support, or perhaps expensive support by a third party
Benefits of a custom CMS:
- Very fast and storage-efficient database and code are possible by avoiding layers of abstraction.
- No limits on customization
- Potentially more secure and spam proof, but avoiding bots and known exploits of popular applications
- A completely proprietary implementation provides exactly the solution that a client needs – assuming (!) that they know what they need and it does not change over time.
- Long-term cost of implementing features which already exist in a third party CMS
For the project of implementing a new CMS for fee.org, I considered the following candidates:
- WordPress: the most popular CMS with 50% of market
- Umbraco: an open-source .Net CMS with only about .1% of market. It’s high quality, mature and well-supported by the community
- Sitefinity 1% share – Commercial .Net CMS
- SiteCore .3% share Commercial .Net CMS
- ExpressionEngine $299+support PHP CMS/MySQL. 1.5%
- Custom CMS: write the FEE.org CMS from scratch
Top two: WordPress vs Umbraco
Ultimately, it came down to WordPress vs Umbraco:
In regard to WordPress, building Liberty.me exposed me to the pros and cons of WordPress. I decided to use WordPress for Liberty.me because we needed to get a massive amount of functionality implemented quickly, and WordPress was the only platform with development ecosystem to make that possible. It was easy to source talent and find a plugin that did everything we needed, but we ended up with a bloated site (over 120 plugins) that stepped all over each other and required massive optimization and many layers of caching to perform well. We use nginx, varnish, hhvm, redis, three specialized CDN providers, Amazon AuroraDB and much more to get the site to perform acceptably.
Umbraco was a natural choice because of my successful experience building Hersheys Kitchens using Umbraco 4.0, and the great features it had added since then.
- It is a blank slate with a lot of flexibility to create great customer experiences.
- It is a fast and stable ASP.Net platform (with queries using the on Lucene engine) that works well out of the box.
- It is open source, but commercially supported Great free and paid components are available
- I’m an expert .Net/Microsoft developer, but junior in PHP, so I would have to rely on contractors much more if we went with WordPress.
Stay tuned for details of how I implemented this project in the next post…