CQ5 developer wiki

I’ve started to put together a public wiki for CQ5 & AEM6 resources, unimaginatively titled ‘AEM Developers’. It can be found at http://www.aemdevelopers.com/ and is hosted on WikiDot. I’m using it as a place to promote links to articles that are useful, a blog roll, and profiles of developers and companies specialising in Adobe AEM. There’s an events section too that hopefully will fill out nicely as time goes on.

Please sign up and add any blogs or links to guides, and add comments to the pages that are already there. You’re all invited.

Vagrant VMs for Tomcat or MongoDB Developers

I’ve set up a couple of small GitHub projects to help development when using MongoDB or Tomcat 7.

Tomcat 7

This is a Java 7 + Tomcat 7 machine, with host folder mappings for ./webapps, ./log, and ./conf. It makes it really easy to deploy a .war file into the VM for testing assuming that no other configuration is needed – just put it in the ./webapps folder.


This was the original project, stemming from frustration at having to install different flavours of Mongo to learn and experiment depending on which operating system. It has a mapping of ./data on the host to /data on the guest machine, to preserve the MongoDB. 

Vagrant and Puppet

Vagrant makes it really easy to script VirtualBox machine configurations, and Puppet is a good tool to design machine configurations, so getting this to work was fun. The hardest part probably was getting the permissions on the shared folders in the Vagrantfile right; they are a little too open for my taste but this is intended to be a development environment and not used in production. You could take the Puppet manifests and use them on real servers if you wish.

The Vagrant base box

Ironically I’ve used a Chef base box for Vagrant from the Vagrant cloud for a configuration based on Puppet. There are a few reasons for this. Firstly, I has it already downloaded. At the time I needed one that was close to RHEL6. Secondly, amongst all the boxes I tried, this one seemed the most stable. Finally, I didn’t was to build a custom box yet as this one works just fine. It has a long startup first time as it installs updates and dependencies for the Puppet tool, but it’s otherwise good and seems to be as bare a machine as possible.


These projects are licenced as ‘unlicenced’ as in public domain. For more information, please refer to http://unlicense.org. You can do whatever you want with the code in the Git Repositories,

Five ways to prepare for AEM6

So, AEM6 has the option of using MongoDB instead of TarPM, and Solr instead of Lucene. What does this mean to the developers who work with CQ5, those who are looking to get into AEM, and the architects who are designing and planning implementations?

First up, developers should be proactive and research Mongo and Solr. An ideal place to start is Mongo University, who offer free certifications at the base level delivered over a number of weeks via YouTube.

Secondly, go download the software – both Mongo and Solr are open source. We’ll not know the exact versions needed to use with AEM6 until it’s released, but the differences are minor anyway when it’s used for learning. Both are highly documented and popular with plenty of online and printed resources to help learn how to best use their services.

Thirdly, be prepared for a barrage of CVs inbound for AEM roles with only Mongo / Solr experience because of the way some recruiters work by pattern matching. Some of these will be great developers, so don’t turn them away for a lack of CQ skills – if they have any general Java web dev experience they’ll do well. Also expect some CQ developers to take this opportunity to leave the niche and enter a larger market (which also has a skills shortage as far as I can tell). It’ll take a while for this to start, but it’ll happen.

Fourthly, ignore Sightly. It pains me to make that recommendation, but it’s a proprietry language so you won’t be able to really prepare for it’s arrival. 

Finally, expect to do extensive reading on which option to use depending on the situation. It’s a very flexible system using Jackrabbit Oak to orchestrate the persistence and indexing. You’ll probably need to do your own benchmarking and tuning regardless of the general recommendations but it’s better to start with the most likely choice.