APIFest08
From APIDesign
(→Task 1) |
|||
Line 36: | Line 36: | ||
*first come, first served | *first come, first served | ||
*if we run out of our capacity, we can stop processing further solutions | *if we run out of our capacity, we can stop processing further solutions | ||
+ | |||
+ | == Task ''one and half'' == | ||
+ | |||
+ | {{:APIFest08:Task1.5}} | ||
== Final Round == | == Final Round == |
Revision as of 18:22, 28 September 2008
As part of promotion of TheAPIBook and also celebration of ten anniversary of NetBeans releases, we decided to play again the game described in Chapter 17. The participants include primarily members of Czech JUG, extended potentially with everyone who likes to play and wishes to celebrate with us.
Thanks to the courtesy of Arseniy Kuznetsov, director of NetBeans, the winner(s) of the APIFest08 will receive a copy of TheAPIBook.
There will be few rounds of the competition, during which the participants are supposed to solve tasks given to them in timely manner and send their results to the API Fest 08 mailing list. The whole competition will use rules like those of API Fest One.
Task 1
The first task consists of downloading the template. The preferred way is to use Mercurial and clone the apifest08 repository:
hg clone http://source.apidesign.org/hg/apifest08/
You will get an Ant project in the currency directory. It is designed to be opened in NetBeans IDE easily, but it can also be manipulated from command line or other tools by those who prefer pain over comfort.
Two sources files are important:
- currency/src/org/apidesign/apifest08/currency/Convertor.java - will contain the API that you should create. Feel free to introduce other classes, but please keep them within the org.apidesign.apifest08.currency package.
- currency/test/org/apidesign/apifest08/test/Task1Test.java - this is the class with actual tasks that your API has to fullfil. Please stuff the method bodies with code, so they demonstrate use of your API.
The project is currently not compilable (you need to make the Convertor class public somehow), compile it, compile its tests and execute the tests so they pass without a failure.
Remember that Runtime Aspects of APIs are as important as API signatures.
Finally zip your project and send it to the API Fest 08 mailing list by Friday, Sep 26, 2008.
cd apifest08/currency ant clean zip -r $HOME/myname-task1.zip .
We'll discuss your design decisions on Czech JUG session on Monday, Sep 29, 2008 together with announcement of the second task!
For those who will not make the Mercurial work for them, there is an alternative option: You can download source ZIP file from the repository snapshot, unzip it and use it directly.
As processing of the results might take some time, we need to set the following rules:
- members of CZJUG takes precedence
- first come, first served
- if we run out of our capacity, we can stop processing further solutions
Task one and half
Thanks you all, dear twelve brave men for participating in APIFest08! I was really glad to see your submissions after the task 1. I really like the variety between your individual solutions.
However, I also have to apologize. I did try, to correctly specify the task 1 goals, however, looking at some of your solutions, I failed. Some of your APIs do not satisfy all the use cases that I had in my mind. That is my fault, I should have expressed myself clearly. Anyway it puts us into bad situation. Now you are not at the same starting position for the real APIFest08 game. That is why I have to, like a starter seeing a problem before 100m run, call off the ready state, and ask you to prepare once more. That is why I am calling round one and half. Please adjust your your solution according to additional tasks, described in Task1Test.java. There is proper description of the behaviour of the factory methods and two more tests. Please implement this in your solutions.
Please do it by Tue, Sep 30, 2008, noon. You do not need to retain any backward compatibility yet, however restrain yourself from doing too big changes to your APIs, they are all good, just satisfy the additional use cases, please.
Please accept my apology, and good luck!
Final Round
There will be multiple rounds each with new task. The goal is to finish the last round and select the winner by Oct 26, 2008 - that is the day of the NetBeans first release anniversary!
That is all, happy API designing!