On February 6th ChiliProject 3.0.0 was released. This marks the third major release for ChiliProject and the stabilization of the past 6 months of development.
The 3.0 series is my favorite release so far. It finally brings in some features that I’ve been wanting to use for at least 4 years. The full release details is on the official ChiliProject blog but I wanted to outline a few of the key features that I’m going to be using (and how I’m going to use them).
The most visible change in 3.0 is the new design. This is a cumulation of the work I did with Shane Pearlman and Peter Chester of Modern Tribe (formally Shane and Peter Inc). Originally this design was a theme plugin that was used by half a dozen companies.
Late 2011 the design was moved from the plugin into the core code to become the default theme. After that the developers at Finn Labs created another major redesign and let the ChiliProject developers iterate on it to create the final design that you see now.
The design is still a work in progress (as all designs should be) but there is already a huge improvement over the previous one.
Liquid is another major feature that made it into ChiliProject 3.0. It started as custom development for a client of mine, which was then updated and merged into the core by Holger Just.
Liquid replaces the basic wiki macro system in ChiliProject with a powerful templating system (you could call Liquid a programming language). What this means is that every “wiki” text field will accept Liquid and will let the user write and run small programs, without having to touch the server or Ruby.
I’m excited for Liquid because I use wiki pages a lot for creating simple project dashboards for clients. It’s easier to use a wiki page and create the dashboard by hand then to write some custom code for each client. Now with Liquid, I can automate some of the data collection and make the pages even more dynamic.
Tagging support was also added to ChiliProject. It’s not complete since it is only the underlying data structures (i.e. database tables). The good news is that by having the data structures in place, the rest of tagging can now be added in a minor release (like 3.1.0 or 3.2.0).
Personally, I’m looking forward to issue tagging. Like many people the issue categories are too rigid and tags would be easier to manage. I’m hoping I’ll get to add issue tagging myself, I have a prototype of them from a few months ago that I can port to the core code.
jQuery and jQuery UI
On the development side there are two huge features included in ChiliProject 3.0 that will make writing plugins easier.
First, ChiliProject is now including jQuery and jQuery UI in the core. Every one of my 70 or 80 plugins that have a user interface have been using jQuery. This means that each one has to include the actual jQuery library and use hooks to get jQuery included in the main layout. That’s a bunch of code that I’ve had to repeat over and over again.
With jQuery now being supplied by the core, I can remove all of that code and know that the plugin will always have jQuery available.
Having jQuery in the core also means that the core itself will start using it to provide a more interactive experience. A lightbox style popup has already been included and used to show issue description changes.
(Note: There is a method you can use to check if jQuery is included in ChiliProject. This is useful if you are trying to support multiple versions of ChiliProject or Redmine and want to load jQuery only if it’s not included. Use
The second feature that will really help plugin development is the inclusion of Capybara. Capybara is a fake browser that is used in the test suite and can simulate a actual person filling out forms and clicking links.
This is going to help make the tests more through and catch problems with activity flows (e.g. logging in and creating an issue, replying to a forum post). My hope is that with a powerful tool like capybara, more interactions will be tested in the core and in plugins, which will lead to better code and less bugs.
I’m really excited about ChiliProject 3.0.0. It lays down a great foundation that can be built on to improve the usability and user interaction.