2017 has been the first year in a long time that I’ve not been in a full-time technical job. I’m currently managing Talent Development (learning and professional development) at a large Enterprise and it’s been a step away from my last job in R&D.
However, I’m still playing, tinkering and submitting contributions to a number of OSS projects on buses, trains and planes.
People often ask me where I find the time, I spent 250 hours above 30,000ft this year. So that has contributed significantly to the time I’ve had to spend on this hobby.
Here is a list of developers that have inspired me this year. They are not “Twitter Celebrities”, these are people I’ve typically met, learnt from and coded with.
1. Tomaz Murauz
aka “Kami” https://twitter.com/KamiSLO supported me joining the Apache Libcloud project, but I always remember the level of scrutiny he put to the code I submitted in pull requests. I’ve learnt about consistency, code style and detail far more than I ever had from an Enterprise dev team.
Now when I submit, I review, check and recheck my own code. Don’t leave it to someone else to spot silly mistakes and glaring errors.
Lesson: Review your own code before you submit it and always include tests
Python is a highly dynamic language. 90%+ unit test coverage is table stakes to any functioning application, build the real checks once you have test coverage.
2. Mike Place
aka “cachedout”, Mike was the overseer of the Open-Source project Salt and recently became Director of Engineering at SaltStack. Salt is a massive Python project, with 1000’s of contributors covering automation into 100’s of different systems supported by 10’s of operating systems.
So basically, its a complex beast.
Mike takes his calm whimsy to the project to think about the long term sustainability of the project, the technical strategy as well as balancing the short term requirements from clients. I’ve not seen many open-source projects achieve this to the same level. They either become a Frankenstein mess of bespoke client asks or they just remain so architecturally aloof that it serves no purpose to anyone other than the architect who gets to blog about how amazing the architecture is.
Lesson: Open-Source Project maintenance is a strategy
3. Cory Benfield
aka “Lukasa”, Cory is a core developer on the requests project, a project that is often credited entirely to it’s original developer Kenneth Reitz. All credit to Kenneth, the API is great, requests is simple, easy to use. At the beginning of this year I ported Apache Libcloud to requests, which was a total nightmare of an exercise but I eventually had Libcloud source on one screen and requests’ on another. It led me to create requests-staticmock, which better leverages the requests Adapter code.
Cory works on the urllib3 project, which requests has a hard dependency on. Urllib3 is the “messy” bit that has to implement the HTTP protocol so that requests seemingly works on Linux, Mac and Windows, talking to any number of web servers. I know it sounds simple, but it really isn’t. I bumped into Cory at PyCon and was in awe of how much he knows about the HTTP and HTTPS protocols.
Lesson: Just because it looks simple, doesn’t mean it is
4. Michael Kennedy
Michael Kennedy is the host of the popular “Talk Python to Me” and co-host of “Python Bytes”. I’ve been working with Michael for a year on introducing his courses to our employees, which have been fantastically well received. We got to hang out at PyCon this year and talk about learning in the Python community and how important it is to address the beginner audiences and the principles of teaching programming.
I joined the podcast on Episode 132 to talk about getting into Open Source.
Lesson: You don’t understand something unless you can explain it and make it sound simple
Anyone can make something complicated sound complicated, but it takes a real understanding of a topic to make it seem simple to a beginner. It’s this approach and skill Michael has that led me to decide on writing a course for Pluralsight, which will be finished within the next month.
5. Mircea Ulinic
aka mirceaulinic authored the integration of NAPALM (a networking automation abstraction library) with Salt.
I offered to help out earlier this year, didn’t find the time and just last month managed to contribute to the modules by writing unit tests. I came into this with the assumption that things hadn’t been tested because there weren’t any automated unit tests. What I came to realise very quickly is that it had been rigorously tested in anger using a development instance of Salt. After all, what use is 90% unit test coverage if the thing doesn’t actually work in production? After the work of writing tests to cover all the modules that had been developed I only found 1 issue (which is really rare) and it was an edge case.
Mircea is a very talented developer, and has effectively built a system (with help from the SaltStack dev’s) to make network devices seem like fully-fledged agents.
Lesson: Integration testing is king
6. Victor Stinner
Victor is a core developer on CPython (the most popular implementation of the Python runtime), Victor’s contributions are almost entirely “performance” related from what I’ve seen. In fact he has an entire website of toys, experiments and forks to improve the performance of CPython.
The only one I’ve dug into in detail is FAT Python, which is related to static optimisation of the syntax trees.
So many people toss in “Python is slow because of the GIL”, but when you look into any of the work that Victor has been doing, you’ll see how it is so much more complex to get a dynamic language and runtime to perform like a statically compiled one.
Lesson: Python performance is complicated
7. James D Knight
aka “jdknight” I know very little about, I’ve never met him and I’ve never spoken to him (on the phone or face to face). But James has been contributing to a project I wrote just to solve a particular issue back last year of trying to publish documentation from Sphinx into Atlassian Confluence (a corporate wiki).
I had put it in the “feature complete” pile to work on newer and shinier things, but really tried to make sure anyone could contribute. The lessons from supporting the contribution pipeline on that project I’ve adapted for others.
James has been doing a stellar job on this Sphinx plugin, working on bugs, patching code, fixing issues and adding new features. The plugin is on 60,000 downloads on PyPi now, which means it has a long-term life.
Lesson: Don’t abandon projects that people are using
8. Nicole Thomas
Nicole is one of the top Python OSS developers in the world. She works on the Salt project, is an engineering powerhouse at close to 5000 contributions a year and somehow manages to resolve conflicts, request changes and merge in 100’s of pull-requests a week into Salt from developers across the world.
Thank you to Nicole Thomas for all your hard work on Salt contributions this year! I strongly believe that her attitude to merging and resolving issues to so many people is what leads people to keep contributing to the project. A lot of other projects could learn from Nicole.
Lesson: Help and consensus leads people to contribute more
Here’s an idea, why don’t you share developers that have inspired you this year and say thank you to them?