// February 9th, 2008 // No Comments » // Web
So, Miami is an interesting place. There is a crazy fetish around here with small dogs, making them into an almost accessory, if you will. And more than you might expect. It’s common enough that we probably saw a dozen of them while eating. Roller blading is still popular too. Lincoln Road is also a neat (expensive) place to explore at night too. You can see everything from living statues to dancing transvestites that look like the serial killer from Silence of the Lambs. I gave him a wide berth.
Today is a big day for more training and roadmap discussions. I started out in the server admin training, since that will be one of my big responsibilities at the college. Jason Tesser, one of the lead developers, was in charge of this discussion. I want to note how awesome it is getting to work directly with the people who make dotCMS. It really helps with insights into the software. He took the time to explain how while dotCMS runs on Tomcat, it can run on really any Java application server. Also, even though dotCMS was based on the Liferay project, Liferay is becoming almost a non-issue in regards to the project, mainly being used for permissioning and users. I talked with him last night some about this, and the thought is that eventually Liferay will disappear entirely as a component of the CMS (Content Management System), and it will be all dotCMS code from that point on. Think Joomla vs. Mambo, how Joomla forked the Mambo project, but by version 2.0 will be wholly Joomla’s own code, not Mambo’s.
In the front end, most content is served to users via the static file storage, which in the latest version is /dotCMS/WEB-INF/velocity/live (in 1.5.x, just swap out “dotCMS” for “liferay”). This allows a site to run with little to no database interaction, and provides a level of redundancy in the event of a loss of database connectivity. This is the same place that the getContentMapDetail() macro references that I mentioned from yesterday’s blogging session. If a page isn’t serving, checking the file store can give you a clue as to where the problem is originating at, if it is or isn’t showing up there. Go up one directory to the velocity file and you can read files in there to see how Velocity macros are written.
He gave a pretty good commentary on what Lucene does, which acts as a query language that indexes the static file store. Sending Lucene queries to the system references pointers in its index to the file store. In the /dotLucene directory, you can view versions of the index, and change the number in the currentindex.txt file to switch to an older or newer index for troubleshooting. Lucene currently will create and manage up to 10 indexes (0-9).
This followed up with information on where configuration data is stored and how it all comes together. I’m not going to provide the nuts and bolts of this info since you can holler on the mailing list and get answers as to where a certain config is stored (besides, I don’t type fast enough to keep up). However, in the portal-ext.properties file, he did talk about the skeleton folder creation section, which is neat for giving a user a default folder architecture to operate within. This is similar to plugin functionality available in CMS’s like Joomla.
The performance tuning section was very interesting, and gave me some good insight into getting into settings to keep servers running top notch. This also included info for clustering environments, not that we run one. Googling for “Java memory options” was recommended as a good way to take care of some settings, and using that in the catalina.sh file. It was also pointed out that the connectors information in server.xml is a big place where you can optimize, especially in lower resource environments. This is because connection threads run in native memory, and not the java memory set in catalina.sh, so between the two, you can potentially overflow your RAM into swap, which slows things down. Threads use up to about 2Mb per connection. If you have 150 HTTP threads, and 150 SSL threads at 2Mb each, that’s 600Mb plus whatever you gave Java. Depending on your server and traffic load, you can do a lot to control memory usage there. Similarly, keep track of database connections that might be higher than what your database server actually allows.
Prior to developer training, I got pointed to some good tools that I tagged in del.icio.us like Aptana and Veloeclipse. These can be helpful for debugging code that you develop that you want to eventually incorporate into dotCMS. This session seems to be much more technically minded, greasemonkey type stuff. I have every reason to believe that this might be largely over my head. Hopefully that’s true, because this is an area I need to improve in. Unfortunately, by lack of experience in Java and Eclipse will limit my ability to comment on this, but it seems very fascinating, and something that will eventually be put to heavy use by me in the future. They did recommend sticking in Java 1.5 for the time being, and not using 1.6, as they won’t be switching to it for at least a year or so.
For Velocity work, learn by doing or learn by example; those were the two main suggestions, which aren’t bad advice. There’s enough information and examples out there and on their demo site that there’s a lot of opportunity to see how Velocity works in files to create content. Plus the Apache documentation is pretty decent with respect to Velocity. The thing that one must remember, Velocity is not Java, but ViewTools are. I’m not particularly good enough to explain what a viewtool is/does. But development of the two are very different, and if I knew Java, it’d make more sense. What I can say is that ViewTools are basically tiny Java applications that run within dotCMS to provide special functionality. The key is that dotCMS provides a lot of tools that you might never even need to worry about making a ViewTool.
And now for what everyone’s been waiting for, the roadmap discussion. Right now we are on version 1.5.1.1. 1.6 is on the way, probably in the next month, and 2.0 sometime this year. They’ve recently topped 10,000 downloads, and still growing, and were 2nd place as the most promising open source content management system. There’s already a lot of headway being made with users helping users on the mailing list, and users committing code to the project. One of the big plans that I think will make a huge break through for them is an open source community source for users to contribute things like macros, viewtools, and reports for others to share (think plugins and modules in other systems). They’ll also be coming out with dotCMS as software as a service to help lower the entry to barrier. On the community side, they are planning to put together a community team that helps with planning, suggestions, task coverage, and supplying feedback. That would be very interesting and really help with exposure too, get people excited about the product. It puts the consumer in a position to “own” the project, even if they can’t directly supply code or development help.
In the spring of 2008 a new documentation site is planned, designed in the fashion of PHP’s or MySQL’s documentation sites, providing the ability for people to add comments and examples, etc. Color me excited. This has been another barrier that has limited dotCMS, that the documentation just isn’t there, and where it is, it isn’t as mature as it could be to provide real, structured help for new users.
On the subject of lowering the barrier to entry, they plan on packaging a starter site into a default installation, based on Yahoo’s CSS (Cascading Style Sheets) framework. Also look for an honest to goodness module framework. Initial configuration will be wizard based, which should definitely help keep people from getting lost in different config files on the file structure. It’s not a big deal, but it’s just cludgy. People are used to, and expect easy configuration these days. WordPress is a good example of a project that took that to heart in an impressive way.
Deploying dotCMS as a software as a service will allow users to have upgrades, backups, and maintenance included. They are looking at using Amazon’s Elastic Cloud Computing to serve as a backbone to that, allowing users to only pay for the load they create.
Partnership is on their mind, working with other groups in different regions and countries to help service people they can’t easily get to. They can also get a different type of feedback from them, and gain marketshare. This also would increase training and support options for end users.
Version 1.6 is scheduled for a spring of ’08 release (the chatter seems to think a month or so from now). It will move off of Tomcat 5.5 and onto Tomcat 6. More items are moving into being based on structures, like events and such, that used to be more self contained (this is very cool). This should open things up for a whole new level of interaction and usability in the front/backend. They will be opening up the API (Application Program Interface), and providing over 200 bug fixes and performance enhancements. Inside 1.6, there is an improved LDAP module, a starter site, added category level permissions, better content ownership features, a customizable content entry form, and a brand new, structure based, social calendar.
Version 2.0 is scheduled for Fall of ’08. It will have a 100% dedicated team internally devoted to developing dotCMS (separate from work they do for clients). They will have a completed framework for add on modules, which will be tied in with the launch of the dotCMSForge, where users will be able to collaborate. dotCMS 2.0 will be JSR-170 compliant, and they will add RESTful Web Services for content, users, and data. RESTful will allow better interaction with external applications, allowing dotCMS to exist as a true content repository, regardless of use.
On the subject of modules, one they are looking at deploying (in conjunction with the JSR-170 specs) is a digital asset management solution. This would be in competition with the likes of the Fedora project, and allow storing and recalling of content through macros, etc into other uses. This is partly because Fedora, in dotMarketing’s eyes, is not a mature enough solution for their customers. They’ll also be releasing an event and conference registration module that works with custom forms, sub events with separate registration, and tie all that into e-commerce and reporting. E-commerce would be a module, allowing products as content. There’s a potential for social networking (including Open Social and OpenID) and wiki functionality as well. The social networking module sounds a lot like Ning. All in all, this module thing will be very good, as that’s part of what makes other open source CMS’s so successful, as it helps really drive a community.
Some links worth noting, in part from the round table, are the Pibb channel and the Facebook group that have been set up to facilitate group intercommunication. These are also tagged in del.icio.us of course. What would people think of a Ning group?
Okay, I’m spent. I hope this was helpful. I’ll probably throw up some closing thoughts tomorrow. After we go BOWLING tonight. Heck yeah baby.