Matt RaibleMatt Raible is a Web Developer and Java Champion. Connect with him on LinkedIn.

The Angular Mini-Book The Angular Mini-Book is a guide to getting started with Angular. You'll learn how to develop a bare-bones application, test it, and deploy it. Then you'll move on to adding Bootstrap, Angular Material, continuous integration, and authentication.

Spring Boot is a popular framework for building REST APIs. You'll learn how to integrate Angular with Spring Boot and use security best practices like HTTPS and a content security policy.

For book updates, follow @angular_book on Twitter.

The JHipster Mini-Book The JHipster Mini-Book is a guide to getting started with hip technologies today: Angular, Bootstrap, and Spring Boot. All of these frameworks are wrapped up in an easy-to-use project called JHipster.

This book shows you how to build an app with JHipster, and guides you through the plethora of tools, techniques and options you can use. Furthermore, it explains the UI and API building blocks so you understand the underpinnings of your great application.

For book updates, follow @jhipster-book on Twitter.


Over 10 years ago, I wrote my first blog post. Since then, I've authored books, had kids, traveled the world, found Trish and blogged about it all.

Open Source CMS Evaluation - Part II: Customization

This is the third and final post in my quest to find the best open source CMS for my needs. Previous posts include Building a website with an Open Source CMS and Open Source CMS Evaluation - Part I: Installation. Based on these two posts, reader feedback, and my installation experience, the final round of candidates include Joomla, Drupal, Magnolia, OpenCms and MeshCMS. These are listed in the order that I expected the final rankings to be - just to let you know what my feelings were going into this final process. ;-)

The CMS I choose will be used to build Virtuas's website, as well as customers of Virtuas. By using a CMS to produce websites, the design is separated from the content - and the "adding content" process can be much easier for the customer. This greatly simplifies the "creating a website" process for us, and will likely save our customers a fair amount of design costs. In addition, it makes it much easier for site owner's to maintain the site after it's been published.

As for Virtuas's site, it's static right now, and we'd like to change that. We want to ability to show recent blog posts on the front page, as well as make it easy for Practice Leaders to publish articles. In addition, it should be easy for our designers to change the design (1-2 files) and for our marketing team to add press releases and update existing content. Tomorrow, I'll be presenting my choice to the rest of the team, and we hope to design and start publishing content this week. Our goal is to have a new Virtuas site up and running one week from today.

My goal today was to see how easy each CMS was to customize. In addition, I wanted to see how easy it was to publish an article, as well as to aggregate our latest RSS feed titles onto the homepage. To test the design customizability, I tried to reproduce the current Virtuas homepage. Then I published Jeff's Geronimo Article, and attempted to aggregate feeds from Maria's and Bruce's blogs. My main reason for putting the Java CMS'es lower than the PHP ones in my suspected order of finishing is because I don't they don't have the RSS Aggregation feature.

Rather than just jumping in and using each CMS in anger, I tried to start off by reading the documentation for each. My main focus was on how to customize, but I also looked for an RSS Aggregation feature and ease-of-publishing for articles. I read documentation for 15-20 minutes, then dived into creating a custom theme and adding content. I installed each CMS on my PowerBook, and used Safari and Firefox on OS X, as well as Firefox on Windows XP in some cases.

MeshCMS - I spent 40 minutes looking into MeshCMS before I knew it wasn't the one. The main problem I had with it was the upgrade process. To upgrade to a new version, they recommend that you use symlinks to your files and store them in a separate location on the file system. While this may work for some, it seems a little brittle to me. I'd rather use a solution that keeps everything stored outside of the application by default. Creating a new theme was quite easy - but there didn't seem to be any support for multiple menus (i.e. global and local navigation), nor was there any means to customize the menu template.

I did manage to blow up the whole application at one point, simply because I was missing a JSP tag in my template. Since I had this template selected for the administration as well - it hosed the whole application and spit out stack traces for each page. Luckily, renaming the template directory caused MeshCMS change to revert to the default settings and everything was fixed. The interesting thing about MeshCMS is it looks very similar to the SiteMesh+JSPWiki CMS I wrote a few weeks ago. However, mine allowed full menu creation by editing/creating wiki pages.

OpenCms - When I installed OpenCms a couple of days ago, I initially did it on Windows. Everything worked fine and after waiting 18 minutes for everything to import, I was able to browse and edit the default site. However, today was a different story. The version I installed on my Windows XP box no longer works. When I got to http://localhost:8080/opencms/, I get a directory listing with "resources" and "setup" on it. The same day I installed OpenCms on Windows, I installed it on my PowerBook. It took 38 minutes to complete, but nevertheless, it said the process worked. Today I re-ran the setup and now I have the same result as on my Windows XP box. If the setup and installation is this fragile, I'm not interested. Blame me and the fact that I'm a redneck all you like, but the Magnolia installation is still functioning just fine. ;-)

Magnolia - I spent about a half hour with Magnolia before I knew it wasn't for me. While the admin UI is impressive with all it's Ajax goodies, creating a new template is cumbersome and not designer-friendly at all. You have to create a "new node" and then a bunch of "data nodes" under that. The documentation (a QuickStart PDF) is 17 pages long and forgets to mention the "title" data node is needed before the template will show up properly as an option. Once you've created a new template in the admin UI, you have to create the template on your file system - inside the web application. This may make it difficult to upgrade if you're deploying Magnolia as a WAR. The worst part is after creating the template, you have to restart the server. WTF? That seems a bit ridiculous to me. Granted you'll likely be designing your master template in a development environment - but good luck installing Magnolia for a client and having them create a new template.

One of the most interesting things about Magnolia is most of the folks who've recommended it have highlighted that it's "built on the revolutionary Java Content Repository Standard JSR-170". While I can admire the technical merits of this effort, it doesn't necessarily make this a good product. A good product, IMHO, is easy and intuitive to use. The admin interface for Magnolia is not intuitive. I like the fact that I can right-click on a page/node/etc., but on my Mac (with Firefox and Safari), the real context menu shows up on top of the application menu after a second or two. I'm going to pass on Magnolia due to the fact that its not designer friendly, as well as the fact that templates can't be edited in the browser. It looks like something that might be very interesting for developers, but it's simply not friendly for HTML developers.

At this point, it's 10:30 p.m. on Sunday night. I need to make a decision before I go to bed tonight and I'm scheduled to meet with our designer at 7:00 a.m. to start implementing his new design. I haven't started the PHP options, and I've had a couple new ones recommended on my blog while doing this evaluation today. Mal recommended Exponent and Jacob recommended MySource Matrix.

Because I'm down to two choices (and I haven't tried to customize either one), I decided it was worth looking at both of these PHP solutions. Exponent installed easy enough, but MySource Matrix failed miserably. Joomla, Drupal and Exponent all had an easy-to-use web installer that *just worked*. MySource spit out a bunch of permissions errors (even after chmod -R 777 *) and told me I had to run .php files from the command line. Since the other options all installed easily, I decided not to continue evaluating MySource Matrix.

Exponent - I didn't spend very long looking at Exponent. At first, I didn't think it had any documentation b/c it was a bit difficult to find on their site. Maybe it's because they don't have a background set on their site and my browser defaults to gray - making the gray text difficult to read. Even w/o documentation, I was able to navigate around the default Exponent site and figure out how to edit content. It's an easy UI to use, but again I was disappointed to find the "corporate" theme doesn't have a white background. Most good web designers know to set a default background color - and it always annoys me when someone misses this step. It's possible they don't set the background on purpose - like Yahoo does.

The deal-breaker with this CMS was that I couldn't edit any files w/in my browser to change anything (all I wanted was a white background). While it's theme management and templating looks powerful - it's another file-based system where you have to configure everything and then upload it. I agree that this is likely the path that web designers will want to use to get started - but I think it's important that files can be tweaked on-the-fly. Using a good FTP tool is certainly an option, but I'd prefer theme-editing to be part of my CMS. The one thing I did like about this CMS was the clean URLs. Granted, they aren't static-looking by any means, but having a simple ?section=# seems cleaner than the multiple parameters that other systems use.

Drupal - This CMS seems to have a lot of things I want/need as first class citizens. A blog, news feed aggregation and the ability to provide pretty URLs (aliases) for more cryptic CMS-type URLs. I couldn't get the URL aliases to work, but I suspect I was doing something wrong and didn't give it enough attention. I didn't spend a whole lot of time with this CMS, but rather just browsed around the admin interface and read a bit about how to create themes. I installed the PHPTemplate engine, but never installed any themes. When I found out I couldn't edit any of the uploaded templates contents, I started to get discouraged by Drupal. One thing I found disappointing, with both Drupal and Joomla, is they seemed to hard-code my server name into many of their URLs. When I installed these applications on my PowerBook, I used "localhost" for the server name. When testing out things from my Windows box, I couldn't even login to Drupal b/c it kept redirecting me to "localhost". Joomla had a similar problem with localhost, except that it only screwed up stylesheet paths. I was still able to administer the application.

Joomla - My time with Drupal was short-lived, mainly because I was itching to start playing with Joomla - which I've heard a lot of good things about in the past week. Furthermore, it's got a really good-looking administration UI. It's the type of UI that a designer would look at and appreciate. When trying to edit pages from my Windows box - everything worked, but I couldn't save the page. No JavaScript errors or anything, there was simply no reaction. Editing pages and content from my PowerBook solved the problem. I was able to easily create a simple theme that looked like and upload it. The theme isn't perfect, but it was easy enough to create using the Velvet theme from as a template. The weird thing about Joomla, at least with the default install, is there's no notion of pages. Everything is some sort of news item. In the pages I created, I was also unable to remove all the authoring notation and other junk that I don't want to show. The admin UI had options to remove the stuff, but even after "applying" the changes, they still showed up in the reader view.

It's now 1:30 a.m. on Monday morning and the last three CMS's definitely didn't get the attention they deserved. Nevertheless, I think they're the best of the bunch. Not only were they much easier (and quicker) to install than the Java options, but their UIs are also good-looking and easy to use. Drupal and Joomla both seem like excellent choices. Drupal seems to be more of what I'm looking for since it has all the features I want, and allows aliasing of URLs to make it appear like a static site. However, Joomla is a lot more eye-catching and that alone makes me want to use it. Neither of these CMS'es seem to have a full-featured blogging engine, at least not one that's as good as Roller.

Conclusion: I'm going to recommend we use Joomla, and look into doing some URL Rewriting to pretty up it's URLs. I doubt there's a whole lot we can do, but I'd like to figure out a way to make them a bit more search engine friendly. Drupal seems like an excellent choice as well, but the fact that I can't edit templates from the UI kinda sucks.

Thanks for listening y'all - all your comments and feedback during this evaluation have been great.

Posted in Open Source at Sep 26 2005, 01:32:58 AM MDT 27 Comments

I recommend Drupal :-)
There are some short answers to your problems with Drupal:

You can edit your themes using the extra module 'Theme Editor':
"Allows users to edit themes without access to the file system, entirely through a web-based admin interface."

The localhost problem can be solved by adding an extra 'site' in the 'sites' directory. So Create another directory next to default which has the reference to your windows box. This way you can setup multiple sites for several domains with just 1 installation of drupal. The problem with the url-aliases is probably a wrong setup of apache. Because it works very well on my site.

I hope this helps you and maybe changes your mind....

Posted by Armand Janssen on September 26, 2005 at 01:50 AM MDT #

What's the difference between Mambo and Joomla?

Posted by -FoX- on September 26, 2005 at 02:46 AM MDT #

Matt, I like very much the software u develop! I love Appfuse, and hope that one day u will start an open source CMS product. You defenetly know how to make simple, working and usable products that meet many of the requirements out there. And it would fill a big gap in the java cms space. Cesidio

Posted by on September 26, 2005 at 03:21 AM MDT #

Hi Matt,
I came to the same conclusion some weeks ago and had to chose between Joomla!/Mambo and Drupal. I chose Drupal, because it is nearly impossible to get pure xhtml without tables for layout with Joomla!/Mambo. I really hope Joomla! 1.2 changes this. Besides that I think it depends on site you build.

@-FoX-: At the moment Joomla! is nearly the same as Mambo, except for the brand. Miro, the company behind Mambo, and the core-dev team split up and they continue under differend brands.

Posted by Hendrik Noot on September 26, 2005 at 03:53 AM MDT #

Matt, you should have tried pebble. Whilst it is a blog app, its trivial to modify a few JSPs to remove the "blogginess" of it. It works, its quick, its a small download. If you have time, take a look.

Posted by Lee on September 26, 2005 at 05:09 AM MDT #

Matt, You must have some special powers, because I already installed more than 10 instances of OpenCMS and all keep working nicely without any problem.... :) :) But, I'm must tell you that the problem is not from OpenCMS, but its yours... The url to the installed OpenCMS is http://localhost:8080/opencms/opencms and not http://localhost:8080/opencms/ Its writting on the install docs....(where is explained that you can change it and how to put it behind Apache or IIS) and you should have it on the history of your browser. You will miss a very nice product... just dont blame it becasue you dont read the docs... :) Regards, Pedro Costa

Posted by Pedro Costa on September 26, 2005 at 05:48 AM MDT #

Raible Way impressed here. Excellent work...your dedication to this project and thoroughness is greatly appreciated beyond words. We are certainly looking forward to applying everything you learned here. Get some ZZZZZ?s would ya? THANX! -max

Posted by Maxi on September 26, 2005 at 06:05 AM MDT #

Hi Matt I have been reading and learning from you for quite a while now and it's time for some last minute payback :) I went through what you did a short while back (evaluating open CMS for small site clients) and pretty much went through the same list of CMSes. As I posted b4, I went with Drupal and the more I worked with it, the better it gets. You should really postpone ur meeting for 1 hr and take a look into node aliasing, flexinode, navigation creation, just to name a few wonderful feature of Drupal that I haven't found in other cms (incl Vignette which what the square heads at our company have chose). and while u'r at it, d/l and try out the theme editor. I knew I chose the right CMS when in July, Drupal site went down b/c the old hardware couldn't handle the loads. After Drupal posted an appeal for donation, in 48 hrs, they raised over $10000. And that was not all. Sun called and offered them a kick ass server. OSL called and offered Drupal free hosting. That told me many people really valued Drupal. So again, I urge you to really take another long and hard look. :) A final word, thanks for Appfuse, Matt ! :)

Posted by td on September 26, 2005 at 06:25 AM MDT #

I forgot to mention, the friendly urls instruction is here:

and some explanations

node alias allow the poster to create an easy to remember url to his post
flexinode allow anyone with proper role to create a new kind of node, associate it a form, st when the user try to access that node, the form will come up first.

And I also forgot to mention taxonomy, the realllll distinguishing feature of Drupal !
Have a nice day Matt

Posted by td on September 26, 2005 at 06:31 AM MDT #

Hi, I have some notes about MeshCMS. I posted them on the related Mailing List to avoid a long message here. If you are interested, you can read the post at

Posted by Luciano Vernaschi on September 26, 2005 at 06:33 AM MDT #

I am evaluating many CMSes too (both Java and PHP solutions) and my needs are very close to yours.
On the PHP side I am evaluating Mambo/Joomla and Drupal. I read that you have already chosen Mambo/Joomla, but maybe you can spend a little time reading these (recent) articles that I found interesting: one, two, and expecially this one: three.
Well, it seems that Mambo/Joomla is not clearly designed both in the front end (templating, HTML, CSS) and in the back end (API for plugins/modules).
On the Java side I think that OpenCMS and Magnolia have no rivals at the moment.

Posted by Marcello Mannino on September 26, 2005 at 07:20 AM MDT #

Armand - thanks for the tip on Drupal's Theme Editor. Due to yours and other's comments, I'm going to install Drupal alongside Joomla on our dev box today. We'll be targeting Joomla initially, but I may play with Drupal if I have time - adapting our designer's look-n-feel into a theme. In Joomla's favor, it was interesting to show our designer the admin UIs for both Drupal and Joomla this morning. His jaw dropped when he saw the Joomla UI - it's just <em>sooo</em> much better looking.

Lee - I'm very aware of Pebble and know it's author (Simon Brown) quite well. However, we're not looking for a blogging engine - even it it does make a decent CMS. IMHO, Roller or JSPWiki could be considered good CMS'es too. Primarily, I don't want to be the guy recommending a blogging engine to large corporations who are looking to adopt an open source CMS.

Pedro - I appreciate your persistence and agree that it's likely my ignorance that keeps me from liking OpenCms. However, you have to understand my situation. I'm looking for <em>any</em> excuse to trim down the number of viable CMS'es. This is *not* saying that OpenCms is a bad choice for other folks by any means - simply that it's not one for me (b/c it keeps failing the initial installation test). Also, I'm trying to hide the fact that I'm using a CMS - so it's a little annoying that "/opencms/" is going to show up in the URL. And why is it so hard to redirect from the context path's root to /opencms so rookies like me don't have to remember the starting URL?

The problem with this whole evaluation was it was very much rushed. I had to make a decision in 3 days and I didn't have time to thoroughly evaluate each solution out there. I apologize to those of you who are offended that I didn't pick your CMS. However, are the ones I've chosen really that bad? Is your CMS of choice *that* much better than Joomla or Drupal?

Posted by Matt Raible on September 26, 2005 at 08:51 AM MDT #

Your choice is probably the right one. Considering how much you seem to value the visually attractive interface in the Joomla admin, you would not like Drupal as much. I hope you never need a decent categorization system because Joomla has none, whereas Drupal is born with the most powerful of the kind. Most people seem to overlook that feature, and not understand the power of it.

Posted by Gunnar Langemark on September 26, 2005 at 12:03 PM MDT #

In the end you should choose the cms which gives you the best feeling. And if it lacks some specific functionality, just build it yourself. It gives you a certain feeling of power and control :-) At least that's the enjoyment of programming for me....

Posted by Armand Janssen on September 26, 2005 at 12:31 PM MDT #

Matt, we're you disappointed by the showing of the java based CMS options? You're criteria seemed fairly mainstream to me and it seems a shame that they fell away so easily?

Posted by Niall on September 26, 2005 at 06:55 PM MDT #

Matt, you must look at this CMS Matrix web site. It will allow you to compare CMS tools with a very cool app.

Posted by Richard Williams on September 27, 2005 at 03:51 AM MDT #

Hi Matt!

Last comment about Magnolia. Indeed, it is not the JSR170 usage that makes Magnolia a good product. It is something you need or not. I need to be sure that in a couple of months I am not required to write some hundred lines of code just to move my content from a solution to another. This is something that may look small at the beginning. But later, if you performance and scaling doesn't match your needs, you are gonna be doomed.

The problem with Firefox drop-down menu is something that can be configured from inside Firefox (I have faced this problem and somebody pointed me to the correct solution): Tools -> Options -> Web Features -> Advanced -> and check Disable or replace context menus. That's all.

I kindda agree that Magnolia doesn't look very appealling from the point of view of a HTML developer/designer.

Finally, your decission should fit your needs. What I have suggested kept more about what my needs were and the good and bad I have identify. Good luck,


Posted by Alexandru Popescu on September 27, 2005 at 05:53 AM MDT #

And yet one more comment about Magnolia
1) No, you do *not* need to restart magnolia after creating new templates. This was the case with 2.0 but since 2.1 all changes to the configuration are picked up while the system is running
2). as pointed out by alex, the context menu issue is not a magnolia problem. We develop and use Magnolia on Mac's and never had the issue you are talking about.
3) templates itself are simple JSP files that can be edited easily with any text editor out there. In fact, feedback from many was that they would not like templating to happen in the browser, as this is limiting. It is on the other hand straight forward to write a "meta template" that lets you configure lots of the look & feel, like uploading CSS or images. So its all a question of what you need / are willing to do yourself.
4) templates need to be configured to be seen by the system. I agree that this is not extremely user friendly but it is well documented and very flexible. A template config panel that makes adding templates easier would definitely be a nice addition though, and is on "wanted" list.

Best of luck

Posted by Boris Kraft on September 28, 2005 at 01:59 AM MDT #

Matt another Drupal note. I've often had complaints about the look and feel. I recently started working with the Drupal-HEAD version that will become 4.7 and there are some great things just around the corner (release candidates are to start shipping within two weeks). Many of the pages have nice show and hide sections to make some of the very long pages much easier to work with. Also the taxonomy theme module makes it pretty easy to have a vocabulary (even one called "page type" etc) that would choose a different/customized appearance for different pages.

You can also change the hard coded URL in the /sites/sitename/settings.php file. There is a lot of development power here because you can easily "move" sites from to once the site is done and not worry about having to change things in multiple places.

Posted by Joshua Brauer on September 28, 2005 at 07:59 AM MDT #

I am currently installing OpenCms and I stepped into the same trap Matt did: I got a directory listing trying to use the system the next day. Only Pedro Costa's hint to use the opencms/opencms URL helped me out of that - I think the installation instructions of OpenCms could make that point clearer!

Posted by Christian Ey on October 13, 2005 at 08:01 PM MDT #

how can i make a link between two html files(Any)and if i delete one content in first file it will delete the same content in the another file.Its very Urgent Any one know means send that code to my mailid... Karthick

Posted by Karthick on December 21, 2005 at 07:54 AM MST #

I am testing portals for a year or so, one for private use, one for corporate use. The winners : - Drupal for private and to some extends corporate use - Liferay / Exo / Jahia for corporate use (I have not yet decided which is best) Chris

Posted by CP on July 05, 2007 at 03:24 PM MDT #

I have recently been evaluating CMS solutions as well and found a interesting one called Silverstripe. It won an open source award in New Zealand recently and I believe it was used for the recent Democratic Party's National Convention website.

So far I have been impressed by it as it seems to have a bit more out of the box than the others.

Posted by Mark Wolfe on October 07, 2008 at 02:46 PM MDT #

Yeah, silverstripe really is a well-built CMS. We just used silverstripe to convert our previously static HTML corporate website to a posh new website with friendly URLs. Check it out here: I like silverstripe because it has a nice MVC layer for developers, but still has all the WYSIWYG tools for the sales guys. ;)

Posted by Anthony Musselwhite on December 03, 2008 at 03:39 PM MST #

Have you all tried out CMS made simple? I find it very easy to use and customize. It's just amazing what you can do with it. You can do a complete proper site in days otherwise would take weeks other CMS'.

Posted by Hein on March 11, 2009 at 03:02 PM MDT #

"The CMS I choose will be used to build Virtuas's website, as well as customers of Virtuas." So I looked at the Virtuas site and at the bottom guess what? "Copyright ©2009 Virtuas. All Rights Reserved. Theme by Blue Angel | Powered by WordPress"

Posted by Tony Palmer on November 25, 2009 at 10:32 AM MST #

@Tony - Virtuas shut down 2 1/2 years ago. I think a squatter owns the domain name now as it seems to be a combination of our old content and spam.

Posted by Matt Raible on November 25, 2009 at 10:34 AM MST #

Post a Comment:
  • HTML Syntax: Allowed