Radiant Sprint Weekend Recap
We had a phenomenal sprint weekend (more like marathon) in Carrboro, NC at Carrboro Creative Coworking thinking, talking, and hacking on Radiant. A big thanks to Brian Russell for donating the space and being so helpful despite being sick! Below are some thoughts and summaries from some of the participants.
It was a great weekend. Sean headed up the work on the code and I worked with people who were interested in helping implement the new design. I’ll let Sean tell you more about the work that was begun on code, but I can tell you a little of what was accomplished on the design side.
The most visible stuff was integrating the work Chris Parrish has done on the HTML for the new design. You can see some of the results in the prototype. (There’s a README in the prototype project on GitHub for getting it up and running.)
Jim Gay spent some time working on rewriting the HTML for the treeview to use a list instead of a table. He didn’t complete it, but some valuable things were learned along the way and we had some good discussions about how the real-estate can be better used on the pages tab.
Daniel Beach worked on the HTML for custom page attributes. When this is integrated it will make it easier for people to add custom attributes to pages for configuration and some of the other things that they are using page parts for. You can see some of the results in his fork of the radiant prototype.
Justin Blecher did some wireframes that sparked some of the treeview discussions and wrote up some excellent suggestions for improvements to the website and documentation.
I pretty much presided over the work being done and talked a lot. :-) To me the most valuable part of the weekend was not so much the work that was done, but the relationships that were formed. I am hoping that the groundwork was laid for some exciting contributions from folks in the future.
As a side note anyone interested in helping with design stuff on Radiant should check out the radiant-mockups and radiant-prototype projects on GitHub. The mockups project contains a lot of the ideas for the new UI. And the prototype contains the HTML for some of the new things that are being developed. If you are interested in helping, fork the prototype, implement your idea, and tell us about it on the mailing list. If we like it, your changes will be incorporated into the official prototype and will be slated for development for sometime in the future. Also contributions and improvements on the HTML and CSS are welcome!
The primary goal I had for this weekend was to make headway on a refactoring of the admin interface toward a conventional RESTful design. These changes will be rolled into the 0.6.10 release to give time for developers to update their extensions before 0.7.
Clinton Nixon helped refine the design of the parent controller for all primary resources in the interface and converted a number of the controllers and their specs to the new design.
Rick DeNatale showed up midday and paired with me while I was working on refactoring the Page interface, which happens to be the most complicated one. Like a good pairing partner, he kept me honest about writing specs.
Adam Williams started writing integration specs for the admin interface using his spec_integration plugin and was joined midday by Mark Imbriaco in a pairing session. Many bugs were squashed and edge cases discovered thanks to them, including an esoteric bug involving an extension that only gets loaded in test mode. We’ll be reducing the number of controller unit/functional specs and relying more on integration specs going forward.
Brian Landau worked on creating an extension migration generator and specifications for the other generators.
Andrew O’Brien implemented a much needed and obviously missing
to_slug method for the
String class, among other things.
As I mentioned before, I worked on creation of the
Admin::ResourceController and conversion of most of the existing controllers to the RESTful design. In the course of this, I was able to contend with the dirty-tracking “feature” of Rails 2.1. The existing models, including
Page, should act as expected.
You can follow our work in the rest branch of the core repository. This branch will be squash-merged once ready for the mainstream.
Andrew O’Brien, Mike Hale, Luke Meyer, and myself started work on extending the page class to accept arbitrary attributes — booleans, integers, timestamps, &c. This pattern shows up in numerous extensions and we saw a need for a generalized solution.
The primary goal was to expose a number of simple object types (single-dimensional data, like the existing metadata fields) and allow these to be managed via a mechanism similar to the page-parts interface. We’re also aiming for a solution that can eventually be extended to accept complex data structures. You can follow our progress at http://github.com/jfrench/radiant-page-attributes.