If you read what the president of Sun says, you would know that there is a big push inside of Sun to move to open source. Recently, I was able to spend some time with some of the engineers from MySQL to talk with them about their experiences doing open source software. And I realized that the advantages of doing it whole hog far outweigh any risks that might be avoided if we just dipped our toes into the open source world. So we at Project Darkstar decided that we would take the plunge, all the way, and try to open up what we are doing to the community.
One of the effects of this is that we are going to release the software more often. Some releases will be tested, stable, and supported; these will be like the releases we have been putting out the past year or so. But we also plan on putting together experimental releases, which are for the bleeding edge of the community. These may happen weekly, and will show the current state of the trunk (which may not always be pretty, but we hope will always be interesting). The big change here is that you (the community) don't need to be protected from our code; you can decide for yourself how adventurous you want to be. Better still, you can all see the progress we are making, or see where we aren't making progress (and maybe pitch in).
In this spirit, we are putting out the first release of Project Darkstar that supports running a game on multiple machines. This is a milestone that we have been working on for some time, and it is nice to finally get there. The best part of this release is the service interfaces, which have changed some since the last, single-machine release. The interfaces for the various Darkstar services are, we believe, pretty stable now, and should continue unchanged while we continue to work on the multi-machine implementation. But I'll be honest-- the performance is not yet what we would like. When run on a single machine, the release will run at about the speed of the current, single-machine release. But when run on multiple machines, the overall performance goes down. Add more machines, and the overall performance gets worse.
We are releasing this now because we want to get this out to the community as quickly as possible. One reason is to let you all see what the new APIs look like, so we can get your opinions and feedback, and you can start using them. But we'd also like to get you folks helping us to find problems in this code, or produce tests that we can use to find the problems. In other words, we want to start moving this to a real open-source project rather than a Sun Labs project that has an open-source license. And this sort of change is, we think, even more important than the multi-machine capable implementation. It is a change in the way we are trying to think about the Project Darkstar community.
Releasing this version is only the first step. We are also planning to move our code repository out into the open, so that the rest of you can see what we are doing on a day-by-day basis. And we are not just moving the trunk of our development out into the open-- all of the branches being worked on by the various developers will be available to the community, as well. We assume that everyone in the community will have the good sense to distinguish between the code we are experimenting with in our branches and the code we check into the trunk. But by making the branches available, you can see how we develop the code and get a sense of the directions we are taking. If you want to be even more bleeding edge than our unstable builds, you can always build the trunk (one of our internal rules is that the trunk should always build; we hope to keep that discipline as we move to the open).
We are currently looking in to where we can put this repository (our current best guess is somewhere in the Java.net area) and what revision control system we will use (almost certainly Subversion). We also want to see how we can move our bug-tracking and wiki software into a public area so that all of our documents, bugs, and status reports can be open to the community. It will probably take a week or two for us to get all of this sorted out, but it is coming, and when it becomes available we will let you all know where it is.
We also want to move our design discussions out into the open so that they are both visible and open to the wider community. Towards this end, we have decided to use the mailing lists that already exist, in particular the dev@games-darkstar.dev.java.net list. All of the core Project Darkstar developers have signed up for this list; if you want to see what we are talking about and perhaps join in, sign up (you can ask for either a daily digest or when-posted delivery).
We have also decided to not get bogged down in discussions of process, which in a previous incarnation slowed the momentum of the community. In particular, we decided not to discuss what would be needed for others to become committers to the core codebase. Instead, we will just follow the open-source practice of starting with a set of committers (the current team), accepting and reviewing code contributions from the larger community, and when someone shows that they are capable and committed to the project invite that person in as a committer. Maybe sometime in the future we will need to have a more formal process, but not right now. In communities, as in code, often less is more.
What we hope to get out of this is an active community that helps us expand the Darkstar offerings in interesting ways. There is more to do in this space than the core team can ever hope to do. There are tools to build, and benchmarks to write, and code that can help debug and profile and tune. Our hope is that we can get others writing some of these, or helping to develop the core, or helping us to think about approaches that we haven't considered. The real hope is that by expanding the set of people involved, we can build a better software offering.
No doubt there is more that I've forgotten to mention. But I'm excited at the thought of becoming more open, and trying to get more of you involved. We have a good team working on Darkstar at present, but it is small. Enlarging it this way seems to be the best thing we can do for the technology. And it should also be a whole lot of fun.