Saturday, September 6, 2014

Abiathar Confidential: Why Closed Source

I've been away from electronic communications this week. I may or may not be back at the time this article is published. Enjoy this last automatically-published issue of Abiathar Confidential!

It is fairly obvious that Abiathar is a closed-source program. I have made known, and I will say again, that I intend to keep it that way. You might think that I'm being self-centered and control-freakish in doing this, but I intend to convince you here that being closed-source is a good thing. Also, I guarantee that Abiathar will always be free.

So, The Omegamatic ships with source code. TOM also has more concurrent versions than I can count on both my hands. This makes it intensely difficult to determine if a given distribution has a certain feature (e.g. KeenGraph graphics), a certain bug (e.g. crashing on undo), or whether it's adapted for some special purpose (e.g. NetKeen). There is no one version that does everything. I would like there to be only one version of Abiathar that can do everything - and so far this has been accomplished quite handily. Unofficial versions that branch off the main line would be a support and compatibility nightmare.

People don't need the Abiathar source code to add things to it. The entire point of the extension API is to save everybody time and effort by having a centralized point for addition of new features. Instead of recompiling and distributing a separate executable, simply write an extension. Unless you whack internal structures, extensions will be supported across all versions of Abiathar. The internals might change, but the extension interface is constant.

If you want to create a different type of tool (i.e. not a level editor or Abiathar extension) that uses the same formats, then there are two existing resources for you that do not involve the source code. First is FleexCore2/FMod; using this is a guaranteed way to be compatible with Abiathar and the real game. If you want to make a tool that does something with the Abiathar-specific formats, you have the format specifications. Some of those appear in the help file; I will provide the others upon request. Though Abiathar will never be open-source, it has always been and will always be open-standard and open-spec.

Of course, since Abiathar is written in .NET, it is extremely easy to decompile. If you really want to know how a feature works, go ahead! Even if I wanted to, I couldn't stop you. All I ask is that you don't use it to create derivative works; save you and your users lots of time by taking advantage of the supported ways to extend Abiathar.

No comments:

Post a Comment