We have gotten a couple of "rule clarification" emails here at the dojo. Most of these are on what you are allowed to do before the competition begins. According to the rules:
You can, of course, work on the concept for your application before the competition starts, including paper mockups of the user interface and database entity diagrams. But no digital assets can be created until things officially get rolling. This includes digital mockups of any sort, graphic design assets, code, etc.
So where does cucumber fit in? Is it a mockup? Is it a digital asset? Can you do it before the competition? We discussed this all week and came to a ruling.
The official ruling is: no, you cannot write cucumber features before the competition begings.
While we strongly encourage you to plan out your application features beforehand, we felt that cucumber falls under "digital assets" being developed before the start date. Because cucumber is a set of executable specs that are specific to an application (unlike a public plugin or gem) we decided this violates the rule and should be avoided. Emailing back and forth describing features is of course expected and welcome, but formalizing that into .features goes against the spirit of the competition.
Some further clarifications:
- Paper mockups are good; Photoshop mockups beforehand are bad
- Shooting schedules are good, Video and photography beforehand are bad
- Planning what each object and database table will look like is good, pending specs beforehand are bad
- Setting up domain names, blogs, twitter accounts that you use to promote your application or track your team progress is good, writing your whole application beforehand is bad
Some more gray areas:
- Chef scripts - if these are public and not specific to your application they are permitted
- Bort scripts - if these are public and not specific to your application they are permitted
- Rails Templates, Base applications - if these are public and not specific to your application they are permitted
We should stress that your template, script, or plugin must be generic and open. If you are the only person in the world that is using it then it might be pretty hard to argue that it is not specific to your application. So be careful and make sure it is generic. For example, the twitter template mentioned in This Bird's Ready to Rumble is allowed, but my "Secret-Rails-Template-For-My-Rumble-Ninja-App-of-Doom" would probably not be.
We want you to plan as much as possible before the competition without starting early! We are eager to hear feedback on these rulings. This is one of those areas that may change next year based on your feedback.