Around 30 people, mostly developers, showed up for this weekend Nooku Jam in Leuven, Belgium, to learn about Nooku, where it’s headed, and to show off their work or collaborate with people on Nooku development.
Personally, this was my first Nooku Jam, and I find myself regretting not having gone to one earlier. The Jam was organized as a BarCamp, with the program being created as we went along: If you want a particular topic on the schedule, you just raise your hand and suggest it. Chances are good that someone else will be interested in the same thing, and you’ll get a timeslot and room dedicated to present or discuss the topic in question.
The informal setting of the BarCamp, combined with the nice venue of Flanders DC and general awesomeness of Nooku’ers, made this jam the perfect place to discuss code, ideas, to show and tell or do networking. With a good host/crew/moderator on site, the result is an event with interesting topics being discussed at all times. Running an event in the BarCamp format is definitely something I’d recommend.
Where is Nooku headed
Nooku will in 2012 introduce 4 month release cycles. First release will be in approximately January 2012, and will be numbered 12.1 (year.release number). That’s right: No more alphas, just releases. Second release of 2012 will be 12.2, and so forth. I filmed him talking about this too:
There will be no backwards compatibility between releases, but there will be documentation on how to migrate your code from one release to another. There will also be an updating system in place that will make it easy to upgrade your Nooku powered extension. For this to work though, developers of publicly available extensions need to follow the release cycles of the framework and upgrade their extensions regularly. After all, a website can’t have for instance both Ninjaboard and Ohanah installed if they’re running different framework versions.
“If Google Chrome can do it, if Firefox can do it, if WordPress can do it, then so can we.”
- Johan Janssens
I think this is a great approach, because it forces us to stay up to date, and it removes old and outdated extensions from the mix on a regular basis. For the framework and Nooku Server, this also means that we can progress on the cutting edge parts, while not having to maintain 3-year old legacy code. Maintaining legacy code is expensive: For instance it requires resources that are better spent on moving the project forward, and it multiplies the amount of code you have to support.
“If the requirement to upgrade your extensions regularly is not to your liking, then Nooku Framework is not for you.”
- Johan Janssens
What features are on the roadmap
Under the hood of Nooku Server and Nooku Framework, there is of course also a lot happening. Nooku Server is almost completely refactored now, and almost all the old Joomla 1.5 code has been replaced with Nooku Framework code.
I already mentioned the automatic upgrades, and there are plenty of other goodies floating around too, like logging, totally reusable files management, and other stuff that was demoed during the jam. Which features that will make it into the next releases though, remains to be seen.
A good way to stay on top of things is to pay attention to what is happening in the Nooku development branches.
Collaboration and code sharing
Plenty of sessions this weekend concerned code and code collaboration. With the number of developers increasing more and more, it’s become obvious that we on some parts are duplicating our efforts. Without a central place to share code between ourselves, or at least a place to get an overview of where collaboration is happening, it’s hard for developers to join forces on mutually beneficial projects.
Since any Nooku component, or part of a Nooku component, can be reused and called from outside the component itself, it enables us to reuse code and functionality to a much larger degree than what was the case back in the Joomla days. The architecture of it just makes it desirable to write code that is DRY, general and reusable, and that makes the opportunities for code collaboration so much greater; two projects may have completely different products, but they may still share a lot of stuff like versioning, file management, image processing, and so on.
In other news: Nooku will start using Git soon, and the Google Groups mailing list will be replaced with something else. Joomlatools have been working on a forum/ticketing/ideas tool, which they are going to release into the wild in the foreseeable future. In my opinion they are really leading by example as far as code sharing goes.
David has taken it upon himself to try to create a public map of the different developers and projects out there in the coming weeks to make it easier for people to find one another and start collaborating in the short term.
A topic of special interest to myself was the backend UX/UI talk. Leading the discussion was Tom Janssens, designer of Nooku Server backend, Nick Balestra, designer of Ohanah, and also the boss of templates and RocketTheme CEO, Andy Miller.
With Nooku constantly reducing the amount of PHP code you need to write, the amount of HTML and CSS in a project is an increasing percentage. We discussed and agreed upon that there should be guidelines for how component backends should be coded, and that ideally you should be able to use predefined classes to make your backend look sexy, without having to write CSS at all basically. A uniform backend HTML/CSS across components also allows us to easily add responsiveness if we decide to, and it ensures that the end user of components gets a consistent experience whenever using Nooku extensions.
Sexiness will not only be associated with Nooku code, but also with Nooku looks and workflow.
Another talk I participated in concerned the wiki and documentation efforts. The documentation is having a hard time keeping up with development at the moment, and the wiki is not very newbie friendly; there is no clear starting point for beginners. I have a phpDoc generator going that generates automatic documentation of the Nooku Framework trunk on a nightly basis, but that’s only useful to some, and not sufficient for all beginners.
What we want to do here is to organize and categorize the wiki content much better, and we want to cut back on wiki content to remove stuff that’s nice-to-have and place it somewhere else, so that the stuff that’s need-to-have gets a more prominent position.
What I take home with me
Speaking and listening to presentations by other developers who eagerly share their code and experiences, and getting to know and being able to work together with skilled people in an informal setting like this, is highly inspirational and educational.
Nooku has a relatively small and agile group of developers, which allows for quick development iterations, faster development and early adoption of new concepts. Nooku is driven forward by Johan Janssens and the people of Timble, but it has a flat organizational structure and low barriers for contribution, making it all the more interesting for people like myself. Having learned from the history of the Joomla project is definitely not a disadvantage.
I’d like to thank all the people that helped made this event happen, and I’m looking forward to following the progress of a lot of different things in the months to come. There is so much new stuff happening, that it would be hard to list it all in one blog post, but feel free to toss in your experiences in the comments below. I only attended less than 1/3 of the talks at the event, so there’s a lot more that can be said :)
The best thing to do for now is to keep an ear to the ground and listen for #Nooku, because there’s a stampede coming.
Flickr photo set by David (not updated with pictures from the last day at the time of this writing)