homeresumeabout
Releasing clj-peg under the epl
10.02.13
I've been spending quite a bit of my very rare spare time working on a library that provides support for PEG's in Clojure. This effort has resulted in producing the clj-peg library. It's far from what I want it to be, but it handles some interesting cases.
One of the interesting cases that clj-peg handles is the problem with readable grammars. I'm usually bothered when I try to read grammars because I invariably end up wanting to gouge my eyes out instead. I've always wanted to work with grammars that were as bare-bones as possible. I've also always wanted to work with grammars that were as left-to-right, top-to-bottom readable as possible.
The clj-peg mechanism for defining a grammar comes pretty close to meeting both the bare-bones and LTR/TTB requirements. While I still think there's room for improvement, I'm fairly satisfied with where it is right now. The only thing more rare for me than being satisfied with some chunk of code, is selling code. Profiting from something I've written.
To be clear, I've profited. I've made money off of code or libraries that I've writtenjust not directly. I usually make money off of contract work that comes about through providing in-house customizations of code I've previously written. This library was going to be the first that I tried to sell directly through this site.
Yeah. That didn't work as well as I had planned. So. Here I am. Large chunk of code that I'm mostly satisfied with. Desire to see the codebase move ahead. Desire to see what PEG grammars others produce. Desire to see if this solution is even close to something that others might be minorly satisfied with.
So, I'm moving away from the attempts to augment my income through this code, and I'm moving to release it under the EPL. I've chosen the EPL simply because that's what the Clojure language is released under. Some feedback on the Clojure mailing list pointed out that having libraries released under the same license as the core facilitates re-use.
The EPL is odd in my opinion, but not too bad. It seems to hold the original creator to a slightly higher standard of openness than other contributors. This imbalance bothered me in the past, since I was still in the making money frame of mind. In order to spend the time trying to put pieces in place that might allow me to sell clj-peg, I had been fairly successful in convincing myself that not only was there intrinsic value in my code, but that I deserved to benefit from that value.
I've had many many weeks of internal debate and gut-checking as I've gone through the process of convincing myself that money isn't the only means of profit available to clj-peg. I've spent time considering the investment my time might be in providing interpersonal growth as I interact with others who might use clj-peg. I've spent time considering the fact that, since I have yet to make money directly from Clojure, I also have yet to contribute any money directly back to Clojure or Rich Hickey. Releasing clj-peg under the EPL could be considered a form of contribution, since I'm freely giving away all that I could have gained.
So, when I ask myself why the switch from closed to open...
... I know that money isn't the only means of profit. The lack of monetary gain on my part can be a form of monetary payment. Thanks Rich Hickey, here's clj-peg.