ConText and Crimson – Long Lost Brothers?

We programmers are always happy to find tools that make our lives a little easier. Good code editors are hard to come by, and we don’t want to use different editors for VB, Java, C#, HTML, XML, PHP, Perl, Python, SQL, or a hundred other languages. Once in a long while an individual will take it upon himself to create a good code editor for his own use, and then share it with the world. But what happens that that guy gets tired – or gets a life?

I’ve been a fan of ConText for some years now. It’s one of those bits of software described above. The author didn’t sell licenses, he put it on a website for everyone to take for free – free as in beer. But he didn’t publish the source to make the code free – free as in liberty. The world loves the software just the same, and for years they’ve continued to report bugs so he could fix them, and request features so that he could add enhancements for all to use, including himself of course. He made the software extensible so that others could also enhance it to support new languages, and as of today the editor supports over 115 programming languages and has won many awards and words of praise.

Given all of this, once in a while I still feel like I need something better. These days I do a lot of .NET development with Visual Studio, and that has a ton of features, so I admit I’m a little spoiled there. But outside of .NET projects I need to open a lot of text and binary files for viewing or editing, so I use ConText. Somehow ConText seems a little "empty", not full-featured enough, but what it does is done well and it has features that other editors don’t – or at least didn’t when it was first written. While it still has a few quirks (OK, call um bugs), ConText hasn’t been modified in a couple years outside of token patches, and even after 7+ years it’s still at a v0.98.5 state – never quite making it to that v1.0 that signals the birth of a real software product. The fact is that the author had a job, a girlfriend – a life! – and after many years of "public service" to the development community he just didn’t have time or desire to work on the code anymore. In a forum that I frequent (no, contrary to the impression I give my colleagues, I don’t frequent all existing forums ) a friend of mine mentioned how happy he is with Crimson. So I thought I’d take a look.

Crimson has a history similar to ConText and thousands of other labours of love out there in the free and/or open source markets. It was a one-author wonder and had fallen into disrepair for a few years (sound familiar?). Users felt a need to look around for something else. When they didn’t find what they wanted (no car or dog will ever be as good as your first) they started an OSS project (that’s Open Source Software for you folks peeking out from under a rock) called Emerald, (gratuitous parenthetical clause here to note that I’m putting too many notes in parentheses) and they based their cross-platform development on the featureset that they enjoyed in Crimson.

Well, just like Eden Kirin has been contemplating the release of ConText to open source, the author of Crimson, Ingyu Kang finally gave Crimson to the OSS community. This put the Emerald people, who regarded Crimson as a sort of revered forefather, into the position of trying to figure out what to do: keep trying to make Emerald more like Crimson and just let Crimson die, or take Crimson and fix and enhance it as they originally wanted. It was decided that they would maintain Crimson in a sort of legacy mode, but that the effort on Emerald had produced cleaner and more cross-platform code, so they would continue with Emerald as the full-featured successor.

That was back in January 2007 and you can see these discussions (and much much more) in the Emerald/Crimson Forum. But even as of this moment the debate still goes on about which code set should move forward. Emerald wasn’t that far along in development, still approaching v1 when Crimson went OSS, and many people are still hoping that efforts will focus on bringing Crimson forward rather than giving it a fond farewell. But, as I suspect with ConText, over the years the Crimson code had "spaghettified" and developers are reticent to work with it anymore. On top of that, some of the people who use and love Crimson, have said it’s really not that good, at least enough to keep the original code set going, and Emerald was supposed to be a replacement for what the much appreciated Crimson nevertheless lacked.

Now on top of this, despite wide appreciation for the software, it seems they’ve had a hard time getting people to work on the code for either Crimson or Emerald. This unfortunately is the bane of the open source movement: of the people who are so fond of OSS, 80% of them just want free software, 10% of them might be qualified to work on the code, and only 1% might be willing. (Statistics made up to accentuate a point but it certainly reflects my experience and anything I’ve read.)

So while you Context folks are getting so excited about the possibility of ConText going OSS, I will caution you that your generous contribution of funds should not be thought of as a purchase of, or "bid" for, community software but as a thank you to the author for his own contribution to make our lives a bit more pleasant. As stated above, it’s very possible that even with the source available there will be few people who know Delphi well enough to maintain it, and even fewer who are willing. Before you move forward with grandiose plans about what you can or will do with the code, you need to consider things like: How many people are really capable and willing to maintain the source? … for free? Spend a little time in the Crimson/Emerald forum and you’ll see a community that is just like yours, but about 8 months ahead of you – and then learn from their experience.

Given the current, erm, opportunity, is it time for you ConText fans to start looking for another bit of code that’s already well maintained and feature-rich? ConText is good, but it’s not that drop-dead good that it can’t be replaced by something similar, perhaps cross-platform, maybe with cleaner code and a greater chance of even more enhancements. If you do learn from example then you’ll recall the Crimson people have already been there and done that – though there are about 136 million options for free, low-cost, and high-cost commercial editors, and hey, you just might find something that floats yer boat.

As an alternative to everyone going off to find software that’s just as good, and actively maintained besides, I will propose that someone affluent in the ConText community should contact a suitable counterpart in the Crimson/Emerald camp and discuss some possibility of combining forces. If there are no "forces" to combine, then ConText won’t survive as OSS anyway, and Crimson/Emerald might die on the vine as well. So perhaps the first step is to start a poll to see how many developers there really are who can and "might" support ConText. (Divide the number of volunteers by 10 because maybe 1 in 10 actually does what they say they will, after girlfriends, job, girlfriends, life, girlfriends, and other factors put reality up against one’s desire to work on free projects.)

There is some possibility of a sort of marriage here (no silly, not to one of those girlfriends, then you’d never get any coding done ): I believe Crimson is written in C++ and compiles as a .NET assembly in VS2005. Delphi is aging but there might be a future in Chrome, which is based on Object Pascal (also the base for Delphi). Chrome is .NET CLI compliant, and also compiles code in VS2005. (Raise your hand if you see where I’m going with this.) .NET allows components written in different languages to interoperate, so… it is in theory possible to mix the most treasured features from ConText and Crimson. As an added bonus, Chrome supports Mono, and that … hold your hats my friends … means these projects could conceivably be ported to Linux, Mac, BSD and elsewhere as a cross-platform killer editor. Now that would make some waves in the OSS market, probably get a lot more people involved, maybe even a corporate sponsor, and it would take much of the burden off of a small team of Delphi developers and spread it amongst a much larger team of people working on different aspects of the environment.

I am allowing comments on this post but please do not use this blog as a battleground for why any editor is better or worse than another. There are many forums for this, so off-topic posts will be removed or abbreviated. I’m just introducing the communities, and introducing new people to both products, and y’all can slug it out elsewhere if you need to.

I think you guys all get the idea now so I’m going to crawl back under my rock and leave you to do some thinking. Good Luck!

Leave a Reply