This week, I released the first version of jsoar, my Java implementation of the Soar kernel. Obviously, the Soar community is quite small, so the release is fairly low-key and low-stress. Still, it’s the first time I’ve really done a release of an open source project of my own. For promotion, I sent out an announcement to the mail Soar mailing list. I also gave a brief introduction and demonstration during lunch at my job, a Soar shop. Overall, I think it was well received. Everyone seemed engaged and maybe even excited to give it a try. I even got an unexpected, but very nice, pat on the back.
Probably the most interesting thing to come out of the release though was my choice of version number. This may have been foolish, but I released jsoar as version 0.0.1. One of my problems is a fear of overstating or exaggerating something, so I think my reasoning for this decision has something to do with managing expectations. I don’t want someone to download it and be disappointed because the version number made it seem like more than it was.
That said, I was immediately chastised by some colleagues for choosing such a low version number. In their opinion, 0.0.1 says “I’ve barely finished writing the first module and you’re lucky if the code even compiles”. I guess they have a point. Now that I think about it, I would think the same thing if I came across an open source project with a single 0.0.1 release. jsoar is actually fully functional and ready to be used in real Soar projects, at least projects tolerant of a little risk. Because it’s a direct port, a lot of the code ain’t pretty, but by the same token, it benefits from 20 odd years of debugging and optimization.
As Steve Yegge has pointed out, marketing is actually a pretty important skill for developers. So, I’m learning that lesson again. Maybe in a couple weeks I’ll put out a new version and call it Soar 10.0, or jsoar 2009. Ok, maybe not that, but I think 0.6.0 is probably a good compromise. I think that says “this system is functional, but don’t be surprised if I change a bunch of stuff on you before the next release”, which is really what I was going for in the first place.
A brief postscript: My release timing seems fortuitous. The next day, another message was posted to soar-group asking if anyone had successfully compiled Soar in 64-bit mode. Sadly, the answer is no owing to the C implementation’s frequent abuse of pointers and other architecture dependent features. jsoar, of course, has none of those problems and 64-bit support was one of my initial selling points of a Java implementation…