At Edinboro University we use a content management system called dotCMS. dotCMS is an Enterprise-level, open source CMS and is based on Java. dotCMS also integrates with many well-known open source technologies such as:
- Apache Tomcat for the application server,
- Apache Lucene for its structured content and indexing,
- Apache Velocity for templating,
- JBOSS for Caching,
- Spring and Struts,
- and Hibernate to drive the back-end database structure.
These technologies allow dotCMS to be very versatile in an enterprise by allowing it to deploy to existing database engines and Java application server technologies, as well as being fully extendable, customizable, and internationalizable.
At Edinboro, We are running dotCMS with the bundled Apache Tomcat server and have both a production and a development/staging environment. Each of these environments runs on its own front-end Windows server (dotCMS can run in both Windows and Linux Environments). Both instances run off of one back-end MSSQL database server (dotCMS is database engine independent and is currently fully supported to run on MySQL, PostgresSQL, Oracle and MSSQL). All three servers have two dual core processors, and twelve gigabytes of RAM. We also employ a SAN for file-storage and backup.
In the future we plan on adding an additional front-end server for the production environment (dotCMS fully supports clustering for scalability and high availability). This will also include a hardware load balancing device. All this supports our nearly 300 content editors and publishers, as well as our roughly 350,000 visits per month and roughly 50,000 pages.
Deploying dotCMS
Deploying dotCMS can be a bit of work at first. However, the product has come a long way in recent years to ease the entry barrier for new users. You no longer have to create the database tables and load them with initial data; dotCMS does this for you the first time you start up. There is also a bundled Windows installer for the most recent version (1.7a) that includes all the software you need to get started and sets it up in one, easy to follow installer. While it took us here at Edinboro a few weeks to get up and running, it is entirely possible to have a working dotCMS install in a matter of a few hours. It can be as simple as downloading the current release, pointing it to a blank database and telling it to start. This is in stark contrast to the good ol’ days when it took hours to get everything up and running. Our original installation (based on version 1.5) took a few weeks to get everything hammered out, from installing the OS and database to configuring LDAP authentication (something that dotCMS now supports out of the box with minimal configuration).
Once you have dotCMS deployed and running, the next step is getting your content and templates converted/imported/created. At Edinboro we chose to take the staged approach. We started by building our templates (originally we contracted dotCMS to do this for us) and then converted the top-most sections of the website. Once we had the main sections of the website completed, we switched the system on and started training our users to convert their pages. The initial work to get the templates and top most pages done took around 2-3 months. Over the course of six months to a year we systematically trained our content contributors and worked with them to convert their department webpages. All said and done the entire process, from vendor selection to switching off the old system, took a little over a year.
Staffing needs
As I am sure is the case with most universities, the staff required to run a 50,000 page website and support nearly 300 editors is not necessarily what we are given to work with. At Edinboro we have three core individuals supporting our system. I take care of the systems (software and hardware), development of web-based applications, as well as training and support for our content contributors. We also have two people in marketing and public relations that take care of the content and design of main University’s webpages. Ideally I would like to see a DBA (backups and database maintenance), a content expert, and another person or two to handle user support.
Costs
One of the nice things about dotCMS is that it is open source, so there are no license fees to worry about. However, the company that supports dotCMS offers a number of support options and packages for the enterprise world. At Edinboro we decided to go with their enterprise product and support. Unlike other open source solutions that offer an enterprise package, dotCMS does not cripple their open source offering just to get you to buy into their enterprise package. The enterprise package is actually a step behind the cutting edge open source product. This allows dotCMS to offer things like a warranty and enterprise support without having to worry about the instability of the cutting-edge code as well as supporting the numerous clients that are on older versions of the software. This doesn’t mean that the open source releases have not passed quality assurance and community testing, just that there is a version that has been locked down to the most stable code they currently run. The enterprise license will currently run you about $4750 per CPU per year. This gets you the warranty (if there is a bug they fix it for free with 24 hour response), automatic updates and hot-fixes, and web-based case management. On top of that, it also opens up the enterprise support options which you can view here: https://dotcms.org/support. Currently there is no support offered for the open source except what you can get from the community.
Support and documentation
Currently to get enterprise support from dotCMS staff, you will need to purchase an enterprise license. However, that does not stop you from taking advantage of the growing community support options available. The main method to access community support is through the official mailing list. There are many dotCMS experts in the community and the company that regularly watch the mailing list and are there to answer questions as we can. However, you first stop might be to jump into the IRC channel (#dotcms on freenode) and ask away. There are a growing number of people in the channel there to help. And when you’ve exhausted the community options and need to go the extra mile, there are a few 3rd party support options that include me (pardon the shameless plug) or eduGuru’s own, Director of Web Marketing Fienen.
In the past year or so, dotCMS’s documentation has come a long way. There is a great documentation wiki (built on dotCMS itself) that can provide a lot of detail on the inner workings of dotCMS. The API is also available in javadoc format here: https://www.dotcms.org/api/. Not to mention that Fienen has created a dotCMS Cheat Sheet and has a beginner’s book in the works.
What is it doing well?
- User Training and Adoption - It is very easy for my users to jump in and start working with dotCMS, and normally it doesn’t take me more than a few minutes to answer their questions as they come in. The system is simple and easy to use with a built-in TinyMCE WYSIWYG Editor and pseudo-in-place editing (you can see the content in the page as you are editing but the editor opens in a separate page).
- Templating / Development - I have found Velocity (dotCMS’s templating language) more than powerful enough to code just about everything I’ve been thrown. Velocity gets its strength from being able to directly access Java objects via View Tools. Despite that, there are a few times where you really need some custom tooling or functionality that dotCMS does not provide. With dotCMS’s plugin architecture and little bit of Java programming, you can accomplish these types of customizations with ease.
- Scalability - Of the open source solutions I have used, this is the only one that I have found to be scalable enough to suit the needs of Enterprise. Most systems are great until you try to manage hundreds of users, but dotCMS really excels in this area. dotCMS fully supports clustering.
- Structured Content - In my opinion where dotCMS truly shines is the Structured Content Engine. Of all the systems I have tried, none have come close to the functionality and flexability that dotCMS provides. With just about every system there is a way to create dynamic structures of content. However, it is usually clunky, not very well thought through, and tied to a specific set of content types. Some systems even require a plugin or hack to even provide the simplest structures. dotCMS uses a structured content engine called Lucene. This is a very powerful system that sits at the core of dotCMS. If you need to create new content types you are not limited to what the tool will provide. Wrap that all up with a Lucene’s indexing capabilities and an easy way to pull dynamic content into your pages and you have a very powerful system in your hands.
- Multi-Site Hosting - dotCMS also supports multiple sites fairly well. In terms of scalability and whether or not the system can handle it, it is not a problem. In terms of managing multiple sites, the current (1.7a) version’s tooling works, but is clunky if you get more than a couple sites. However, in the next release (1.9) this tooling has been completely reworked to make it much easier to manage the content for multiple sites.
What is it not doing well?
- Entrance Barrier - Having this powerful of a system does come with a cost. Even with the new windows installer, dotCMS is not just something you throw at a cheap hosting plan and have up in running in a few hours. It is going to take some work to get up and running. The templating language also takes some getting used to, just like any system, but since the templating is not written in a more popular language, you will need to learn some Velocity to get started.
- Integration - Integrating dotCMS with other systems is not overly elegant. In all reality though, I don’t know of many solutions that are. You can certainly directly access external sources via SQL, but tighter integration will require writing a plugin. In this regard dotCMS is looking into a number of things which may help to ease the pain of integrating external data sources. A few of these include switching to a UUID (Universally Unique Identifier) for all its content, and adopting the CMIS standard.
- Forms - dotCMS offers a couple solutions for building and handling forms. At its current state, I have not found either solution to fit what I need. The next version of dotCMS has integrated the Front End Content Submission plugin into the product.
- Staging / Push Publishing - Currently there is no way to stage content on a staging server and then push that content to another system. This also hurts plugin development as there is no elegant way to package up and ship content to another system. They also plan on addressing this with UUID’s in version 1.9, but full UI support for doing this won’t come until later down the line.
What should I consider before moving to dotCMS?
When you get down to it dotCMS is a great open source option for higher education. There are some things dotCMS might not be the best option for. If you are looking to host a site on a cheap hosting package, dotCMS is not an option. It is going to take root or administrator access to the machine you are going to host it on. Another thing to keep in mind is that while you can build just about anything in dotCMS, you have to build it. It’s not like WordPress or a wiki where the functionality to do certain tasks is already provided. It certainly can be built and you may even find some good resources out there to get you 90% of the way, but in the end, you are going to have to build things out.
So there you have it. dotCMS = Enterprise Open Source Content Management. If you have any questions or want to get a hold of me you can certainly post a comment. Otherwise, I can be reached at @chris_falzone on twitter or you can email me at cfalzone@cfalzone.com.
Awesome, the article went up today.
can you please tell me how to take backup in dotcms.i treied with their documentation but it only tkes the folder that are present in dotcms setup(folder like blog,home,news etc.). it does not take the backup of the folder made my user.
Sure, with any system it is necessary to ensure working backups. A backup in dotCMS is achieved in two steps. First you need to backup your Assets folder. In version 1.7 this located in {DOTCMSROOT}/dotCMS/assets. The second step is to take a backup of your database. This will be different depending on what DB you use, but should be easily done.
I have a nightly task that does this for me. One thing to keep in mind is that your two steps need to be with dotCMS in the same state. In other words, at the same time.
Note also that dotCMS has a backup/restore option in the Maintenance Tasks — I do not recommend using this feature. For smaller sites it should work fine, but when your site gets larger the load of performing a backup with that tool on your system is great and in my case, my CPU cannot handle it along with concurrent traffic. Hopefully in future versions we will see this tooling improve.
Another thing to mention, for a full backup you will need to store your configuration changes somewhere as well. I make all of my configuration in a plugin, so that all I have to do to restore is:
1. Install DotCMS and Necessary Components
2. Configure Root.XML and server.xml
3. Drop my assets and config plugin in
4. Restore the Database
Hope that helps.