A Day with dotCMS 1.6.5
// December 2nd, 2008 // Software, Tech, Web
It was long coming and well worth waiting for. On Halloween dotCMS released version 1.6.5, and feeling confident in the code base release, we finally tested and rolled out the upgrade on our production servers (I try not to jump on updates right away, just in case there are any surprise bugs that need to be worked out). Naturally, we tested things out on our dev box first, were satisfied, and just before Thanksgiving we finalized the upgrade on our live server. I can say with confidence that this upgrade has proven to be a nice kick in the butt, without a single hitch so far. Even the improved edit mode interface hasn’t drawn any complaints for being “different.”
I’m among the people who think that 1.6.5 is really more like a 1.7 in that it’s not just a minor patch of the 1.6 codebase – there’s a lot of new crap. Among things to look for:
- WebDav is all new
- Edit Mode is all new
- Widgets have been added
- Updated TinyMCE
- Caching is now in memory instead of disk
- Lucene index has been moved
- PDF page output macro
- A whole crap ton of other stuff
All in all, it’s like 322 different changes, fixes, and additions. Nothing to sneeze at. And it all matters. First off, compared to 1.6.0.10, it’s substantially faster on both the front and the back end thanks to the improved caching. And it flat out blows away 1.5, so if you’re still lingering on that version, I suggest an upgrade pronto. The speed is coupled with a less noisy log as well, making it easier to tell actual errors from random chatter from the system. They went through and completely refactored the WebDav interface, so if you use it for bulk adding files or live editing, you should notice a substantial boost in speed there, as well as the ability to autopublish files uploaded through it (great for photos for photo galleries, or live editing things like CSS (Cascading Style Sheets) or VTL files). The upgrade process itself didn’t feel overly painful either. One thing that has been a constant complaint was that the system was a little overly painful to actually upgrade, especially from much older revisions. What I can say is that going from 1.6.0.10 was about the fastest and smoothest upgrade I’ve done so far (that wasn’t just a simple maintenance patch). SVN update, copy back some server settings, ant clean and deploy, reindex, and we were pretty well off and running (on top of that, I was also switching SVN branches as well). I could have probably even gotten away with using my old Lucene index, but, fresh system seemed to call for a fresh index. Interesting side note, I was talking with Chris Falzone over at Edinboro, and he thought upgrading from 1.5 straight to 1.6.5 proved easier than going from 1.5 to 1.6.
My apologies for no real stats on this on my end, but prior to rolling out the upgrade live, I did do some load testing against our 1.6.5 test server using Apache JMeter, and the results were excellent. I was able to run up about 100 threads within a 30 second time period without drops. Actually, the machine I was testing with crapped out before the server in some cases. I also saw some stats that Jason, their lead developer, shared on the mailing list after testing it with Siege that I’ll pass on:
I wanted to share some performance numbers with you.
The test was run on a server with 8 GIGs Ram Dual Quad-Core Xeon E5320 / 1.86 GHz processor running the latest Ubuntu LTS. The server had Postgres 8.3 install locally and Java 5 64bit.
dotCMS configuration
JVM 1536M of memory for the start and max of the heap. The connector was set to 380 Max thread and the Db had 390 max db connections.The benchmark tool used was siege. We ran siege on 2 separate boxes each with 180 concurrent connections and 0 delay between the connections, so the traffic was a full 360 users attempting to hit the server throughout the entire test. For those who use siege this was the command siege -f urls.txt -r 100 -c 180 -b -i. I will attach the urls used for the test. They were a mix of urls from a starter site. The test was of course performed on our lan. There were 3 switches between the server and the machines running siege.
The total test results were
Total Transactions : 35987
Availability : 99.97%
Average Response time : 0.85 seconds
Total Concurrency : 313.12Here are the individual numbers from each siege machine.
Transactions: 17996 hits
Availability: 99.98 %
Elapsed time: 97.50 secs
Data transferred: 145.27 MB
Response time: 0.85 secs
Transaction rate: 184.57 trans/sec
Throughput: 1.49 MB/sec
Concurrency: 157.58
Successful transactions: 17996
Failed transactions: 4
Longest transaction: 28.39
Shortest transaction: 0.00Transactions: 17991 hits
Availability: 99.95 %
Elapsed time: 97.65 secs
Data transferred: 145.22 MB
Response time: 0.84 secs
Transaction rate: 184.24 trans/sec
Throughput: 1.49 MB/sec
Concurrency: 155.54
Successful transactions: 17991
Failed transactions: 9
Longest transaction: 29.46
Shortest transaction: 0.00We also have some similar numbers with 1.6.5 running on VMWare ESX Server. We will be sharing them soon here. Need to gather all the compiled data for it and specs for the test.
On of the two big, important updates you’ll see a lot of is the much improved edit mode interface, seen above. Gone are the clunky, vertically columned edit, preview, and live mode buttons. They’ve moved to the top, and been replaced by a clickable side bar that lets you hide the whole side console completely. Some much needed UI facelifting was applied with nicer icons and a splash of color. On the page, container interfaces are squared up nicer, and dropdowns were (mostly) eliminated in favor of one click editing, sorting, and deleting. That doesn’t sound like much, but if you did much with Flash, you probably fell prey to the dreaded layer monster, where the popups would pop “under” the Flash interface, making it hard or impossible to click the options there. All in all, the changes were largely cosmetic, somewhat functional, and much needed. It just feels a little more put together now.
The other big change is somewhat related, and that’s the addition of widgets. Widgets have been discussed before, usually as pieces of Web Page Content that are just designed to be dynamic. This is all well and good, but it didn’t really allow for proper segmentation of functional elements of a site. Now, widgets are properly defined with a structure. You set them up like structured content, except your fields basically serve as the variables for a macro. Think of it as a UI for macros. The primary difference being a macro can be embedded in content, while a widget goes in place of content. Why this is so awesome is because one, like I said, it allows you to properly segment dynamic tools for your site, and two, even though a macro is only like a line of code, we all know that for some people one line is just one line too many. This let’s them fill out a simple, non-threatening form, and see results. The interface itself is cool, as adding a widget brings up a nice little modal window with all the widgets defined available right there in the page. Plus, any container can be widget enabled, so that you can make containers fairly multipurpose, in the event that you want one container on a particular page to do something different, but still adhere to a basic layout option.
Speaking of the modal window, I would love to see this applied throughout the site to get rid of popups all together. Get rid of the content search popup forms for reusing content. Use a modal window for quick adding or editing of content. It makes people feel connected when they don’t physically have to juggle windows, especially when in some cases (like adding a picture to content), the popup adds information to a different popup below it, and it doesn’t go away when you click it, so you don’t actually get any feedback from the system that a change has taken place. So there’s a wishlist item from me.
What makes this so worthwhile is that there is a definite maturing of the code base taking place. The attention to the UI of edit mode, while not changing substantially in a functional way so much, shows dotCMS becoming a much more professional system that cares as much about the user experience as the functionality. This is an excellent sign as we get ever so closer to what should be a real dam breaker of a version 2.0 next year (hopefully), and the rate of progression is fairly steady. Like I said, rather than being 1.6.5, this would really almost qualify as a 1.7 in my books, but hey, I don’t do the versioning.




More secure than passwords.
Thanks for the nice overview! It’s very well put. It feels good to finally be on the latest version. I echo your urge to those still on 1.5, upgrade now!
-cfalzone
Hey man, thanks for this. It’s nice to have some foresight as we’re moving toward dotCMS. The features you outlined make me pretty excited.
Great article, I’ve never worked with dotcms but will have to remember to comeback to this article if I get the chance.
Sounds like an exciting product to work with.
Great overview! We just upgraded our development server and after reading your article I can’t wait to put it through it’s paces. Thanks again for sharing your wisdom!
Very nice! Keep up the amazing work Jason! =]