Why should you contribute to Open Source?

François De Serres
PALOIT
Published in
6 min readMar 28, 2018

In my previous post, Is Artificial Intelligence a Threat?, I shared what one of the fathers of Artificial Intelligence, Prof. Sussman, has to say about the discipline. Part 2 of my time at Clojure/SYNC saw myself learning more about Free Software Contribution and why you should start contributing to it too!

My second most important takeaway from Clojure/SYNC is not a talk. Well, it is actually an out-of-band talk, a discussion involving Dr. Will E. Byrd (Barliman, miniKanren, …), David Nolen (ClojureScript, core.logic, …), and myself.

I was reminding Will of our last discussion at Clojure/Conj 2016, where I was contemplating the possibility of porting Barliman (his breathtaking program synthesis software) to the cloud, in order to improve its performance and availability. At the time, he had been enthusiastic, but as I wasn’t sure to be able to find the time, skills, and manpower, I pondered twice before bouncing back, and did not.

But this time I was willing to dig into the topic a little deeper, because two facts made me more confident: PALO IT’s management is considering an active participation in impactful open source projects, and the potential of program synthesis has drawn their attention (I’ll only give out names after a few beers). So here I go, asking Will about technical details and his own estimates for such an endeavour. “Fear not, says he, Barliman is only about 800 lines of code; e-ve-ry-thing I write is plain simple, I cannot do otherwise”.

Dr. Will E. Byrd: “I only write simple stuff”

“Okay but in which language are these few lines written?” — “the UI is in Swing, the heuristics are in miniKanren; but wait, we’re on our way to porting everything to Clojure with David (here comes David Nolen…)”. It makes sense: core.logic is a Clojure port of miniKanren, which is in itself written in Scheme, which is a Lisp just like Clojure! And here they go, debating the couple of difficulties they are facing… “Sounds pretty cool, guys, how far do you think you are from solving these issues?” — “Um, only a few days… like a week worth hard work, maybe. Of course, one needs to understand logic programming, and some key differences between Scheme and Clojure heuristics, but we can help with that”.

When David Nolen has news, it’s always good for us.

To be honest, I don’t trust their estimates. At all. Both these guys are plain geniuses, so let’s adjust to 20 for 1 for a realistic buffer (yes, David is particularly productive). That’d make about a hundred days. If we could allow for 3 passionate devs to work 30 and some days on the topic, we’d be able to demonstrate program synthesis on the JVM using Clojure by the end of the year. A decent Atom plugin (in ClojureScript, you bet!) wouldn’t cost half as much.

Imagine: you need to figure out how to get started writing a tricky function. Give in a couple test pairs of inputs-outputs, get back Scheme code that pass! You may edit the code to a better (more readable) implementation, or to hint the system so it’s faster. If you are wrong, it’s not your tests that failed, it’s your proposition. And you’ll get hints telling you where and why it doesn’t make sense.

The ambition is not to generate entire applications, but to provide a much more valuable and interactive assistance to the developer, who has not seen much improvement to his Intellisense-based IDE in years. Enhancements are already foreseen to involve AI and SMT solvers, in order to leverage the concept of a creative dialog between the programmer and the program under development. Add Clojure’s hot code reloading to the story and you can foresee the fun of programming that has yet to come…

In 2016 I witnessed Barliman solved some pretty weird stuff, live, admittedly in expert hands. But you don’t have to take my word, checkout Barliman today: https://github.com/webyrd/Barliman. The repo description: “Prototype smart text editor” is on my top 5 list of understatements, next to ”New Orleans is fun”.

Boss, how about an impactful free software contribution?

Story of a Free Software Contribution.

As both of the above sections end up with a reference to free software, I’ll now present the story of Elana Hashman, which she came to tell us at Clojure/SYNC in a lively, entertaining talk that will surely encourage many developers in the audience to start to contribute to OSS (or to contribute more).

Debian is a GNU/Linux distribution standing as the source of many others such as Ubuntu and Knoppix. One of the many reasons so many other “distros” chose to fork from Debian is a guarantee offered by the governance of its packaging system: “The program must include source code, and must allow distribution in source code as well as compiled form.” (https://www.debian.org/social_contract). Be rest assured that the binary you’ll run on your system is the result of building the sources that come with it (unless you willingly opt-in for software packages that do not comply to the DFSG found in “contrib” and “non-free” repos). And this obviously applies as well to all dependencies of the “program”. This means somebody, somewhere, is “setting his/her hair on fire” in order to engineer a DFSG compliant and reproducible build. Good luck!

Elana Hashman accepted a challenge, she’s been rewarded.

Elana explains, in a step-by-step guide, how she went from zero to “apt-get install leiningen”, to main contributor of the Clojure ecosystem packaging for Debian. I’ll pass the (nonetheless interesting) technical details, and go straight to her point: successfully packaging a DSFG compliant release is very much challenging, near to impossible if you are on your own; but when you are in need, the community will do everything they can to make sure you succeed. She takes the opportunity to warmly thank Tom Marble (Debian expert and contributor) who is in the audience.

Don’t be scared to offer your help on any aspect of free software (code is not the only way to contribute). Pick a task, set your hair on fire, ask for help (in that order), the community will respond. Anyone with enough will can start from “I need…” to “I provided…” to “I’m in charge of…”, and build a lot of skill and experience in the process, thanks to the support from the best experts in a given field.

As we’ve seen above, the shape of our future, users and developers, greatly depends on the availability of free software. Free software needs everyone who can afford to help.

Becca Kinsella: “Key to tech recruitment and retention: solve interesting problems.”

A Successful Premiere.

Unfortunately I cannot write here about all the talks, every shared moment in and out of the conference, each attendee I met. All of the speakers came to Clojure/SYNC with extremely valuable thoughts and a genuine talent to disseminate them. There was a kind of warm brightness floating around each and every group that formed, unformed, reformed inside and in front of Le Petit Theatre, a cute and intimate theater like I’ve only seen in France. Coffees, Zombies, and Handgrenades have been sipped, On The Half Shell have been eaten (wink Shaun Lebron!) and a few nights were whitened around Frenchmen and Bourbon. A very special participant was key in the success of this event: the awesome city of New Orleans, and its people (Pooler!).

Thumbs up to Eric Normand for putting up so brilliantly the first Clojure/SYNC, I’m already impatient to attend the next one!

Additional pointers:

About the author

Francois De Serres is the Head of Digital Technology at PALO IT Singapore. Passionate about new technologies, and people, François has recruited and guided large development teams. He has also set up and led complex IT programs using both waterfall and agile, and constantly succeeds in helping stakeholders achieve their objectives for more than 20 years.

--

--