At the end of November I parted company with Socialtext. I achieved more in my first two weeks there than the subsequent 8 months, and I never managed to find the arguments that would convince the company to fund the project properly. With a new CEO and VPE in place, Socialtext is moving in a new direction, and I’ve decided (with their agreement) to pursue by myself what I was unable to make happen there.
It’s going to take a while for all the pieces to fall into place, not least because I’m using the opportunity to take February and March off to do a Grand Tour of Australia, but I’ve already begun the first phase:
This is a forked version of the core calculation engine from SocialCalc 1.1.0. There is no UI, no file storage, nor any of the peripheral features that would be required for a full-blown spreadsheet application. But it does provide (pace a few small problems) all the functionality for performing spreadsheet calculations at the first level of the OpenFormula specification (approx. 110 functions). It’s unclear what’s going to be happening with the “open development” model of SocialCalc itself now that neither Casey nor I are working on it, but even if that continues with someone else at the helm a fork is almost certainly required due to conflicting requirements.
One of the significant restrictions that Dan imposed on the project was that idiomatic Perl code was problematic, as he wanted it to be easily translatable into other languages. This made it particularly difficult to refactor the code in the directions that I believe it needs to move to support the next phase of the project. Now, free from those constraints, I can tear the code apart and put it back together again in the ways that I please. And as I don’t have to support a UI or a particular storage format, this gives me even more freedom to make the engine much more flexible without worrying about backwards compatibility. This is particularly important as I don’t have the safety net of a test suite. We did have the beginnings of a test suite in the public SVN repository, but as that was never officially released, the licensing of it comes with somewhat of a question mark. So I’ve started from 0% coverage again, and begun to implement all the test cases provided in the OpenFormula spec. This has uncovered some interesting bugs (some of which were no doubt caused by the manner in which I extracted the engine from the already splintered SocialCalc code, but many of which I’ve confirmed are also present in SocialCalc), but rather than get bogged down in fixing those, I’m concentrating first on building sufficient coverage, then splitting out all the functions, and then fixing the bugs. That should take me to the end of January, at which point I depart Dunedin for Kiwi Foo and a week of touring the north island, before my 8 week journey around Australia.
Feel free to play with it in the meantime, but if you have any queries or hit any problems, don’t expect a response until April!