Some contributors have proposed a major rewrite of the contest systems. Other have argued that we should carry on with the system that we have now and continue to incrementally improve it. I propose a middle ground: let's take a few months to create a fundamentally bigger and badder contest, and in the meantime run another contest using the system that we have, making as few changes as possible.
The Upcoming Contest (Codename Epsilon)
We will rely as much as possible on the system that we have already built. We will avoid creating new features unless absolutely necessary. This will irritate people and impair the growth of the community but it will pay off when we release the bigger badder contest.
The system that we have is pretty modular. To launch a new contest, we need only the following:
- a game engine for a two-player one-on-one game
- starter packs for the game
- content for the website
- game visualizer
Most of all, we need to avoid developing new features wherever possible. Community members that want to help with development should be introduced to the development efforts for Zeta.
The Bigger Badder Contest (Codename Zeta)
We will focus our development efforts on Zeta, the next generation contest system. In this message I will deliberately not give many details about what Zeta is going to look like because they haven't yet been decided! However, here are a few of my speculations:
- Contest instances should be trivial to set up on an Ubuntu machine. This would make it way easier for community members to get into the development effort, as people could launch their own contest instances. Setting up your own contest instance should be easier than installing Wordpress.
- Use a web framework for the website. Consensus is currently leaning towards Django. Even if you're not the biggest Django fan, you've got to admit that it's better than what we have right now.
- Multi-contest support. Make the system support multiple contests at the same time. We would launch a new contest every couple months like we do now, but the old ones would remain available. Eventually we would end up with a lot of contests running side by side on the same website. This opens the possibility of having a global leaderboard that takes into account your scores in all the sub-contests. Imagine Project Euler except every problem is a different AI contest.
- Let users upload new game engines much like they submit their bots right now. We would allow users to create their own contests through the site. After creating a contest you could upload a game engine, add starter packs, add content and tutorials, create a visualizer, etc. The higher quality user-created contests will attract more users of their own, while the crappy ones will die out. We can make good user-created contests easy to find by ranking the contests according to number of submissions in the last month or something.
- Coding in the cloud. Allow people to work on their entries using an in-browser IDE. Of course we would still let people upload code from their own local computers the way it's done now. An in-browser IDE would make getting started much quicker for beginners. You create your account, click Submit, then the next page you see is the IDE with the starter package code already loaded. A beginner can go from casual browser to editing code in 15 seconds.