I’m really happy that Quantifind has just officially released Sumac a library I’ve been working on a for a while. Its great to take the work that I’ve done and share it with everyone, and I’m thankful to Quantifind for letting me do that. The company has already let me make contributions to Spark, but somehow its more gratifying to release a project where I’ve been the lead developer.
I know, I know, Sumac is really tiny, its just a library for parsing command line options; its no monumental contribution to the advancement
of mankind.
But, I do think its a great tool. Though argument parsing is an old problem, I really believe Sumac is an improvement over most systems out there. Everything
else I’ve seen requires so much boilerplate and configuration. Sumac replaces all of that with a simple API. As a developer,
I’m always looking for ways to remove the tedium and simplify my toolset, whether its learning new deisgn patterns or writing tools that provide
general solutions. Of course, most of the time I can’t get come up with a better solution, or I don’t have time to implement one, but I’m glad I
can share the solutions that I did come up with.
The code is well-written. That’s a scary thing to say when releasing code to the world-at-large. In fact, most of the code I share on github is so horribly written that I’m pretty embarassed of it. But I think I took the time to design Sumac well – there isn’t any crazy spaghetti code, there is a clear separation of components, and its well tested & documented. Its a library that we can continue to build & improve upon.
In fact, I’m really hoping that by open-sourcing Sumac, it can keep growing from the contributions of others. We’ve released a library we’re proud of, but we know there is a so much more that could still be added to it. Any contributions from the community would be a huge help – everything from finding cool new approaches that are only possible with Scala 2.10, to just submitting bug reports on the existing code.
So try Sumac out, I’d love to hear any feedback!