This week @manton open-sourced the iOS and macOS Micro.blog apps. I think that is a great move in general, but it is not one of the things I require in the software I use. I never felt that comfortable when, a while ago now, I read users’ blog posts expressing anger or dismay that the client apps were not open-sourced. (Let’s put aside, for now, that what makes Micro.blog work is the server-side code.)
As a paying customer, and as a developer myself, I don’t think Manton and his team are obligated to share their client source code with me. I don’t think anyone is. If they want to, that’s great—but it is no guarantee that the client app itself will be better, more secure, more feature-rich, or even have a future many years from now. Heck, it doesn’t even look likely that Micro.blog will accept pull requests, so it is unclear whether open-sourcing it will change its development direction or iteration time at all. I’m not complaining about that, though. Maintaining an open source project/community and running a successful blog hosting business are almost entirely orthogonal to each other. Open source doesn’t really give me added comfort that an app I love or depend on will be there for me forever, because nothing is forever, even open-source software projects.
As a computer user and enthusiast, I used to care a lot more that I do now about free, libre, and open-source software. My primary reason was that I thought I could trust it more than closed source software. It is harder to hide malware, tracking, and obvious security flaws when the code is publicly viewable. History has shown that not to be entirely true. Remember Heartbleed? That incident showed us that widely used libraries may be maintained by only one or two people, and their source code can contain bugs and security flaws that go unnoticed for years, because no one is actually looking at the source code.
My secondary reason for preferring open-source software was more theoretical, but larger in scope and more exciting to me: open-source software can be a more practical and a better use of humanity’s programming resources. That’s because one of the great, unfulfilled promises of computer science is the ability to solve a certain problem once and for all, for everybody. Open source utilities, like the Unix command line tools, and open-source libraries, like OpenSSL, theoretically could make this happen. But it didn’t happen, at least not fully. We spend a lot of time, collectively, solving the same software problems over and over again. We may approach these problems in new ways, with new languages, and on new platforms. But in the end, we are repeating ourselves. Imagine where we could be if we didn’t keep repeat ourselves!
I actually think that most of the repetition is the inevitable result of human nature. Humans are curious; we want to know how something works, and how to do it ourselves. Humans are also prideful: we think “I can do the same thing, but better.” Most importantly, humans need to learn; each of us is born knowing nothing, and must learn extensively from our forebears to push our collective knowledge out just a little further.
In the end, what is most useful to me about Micro.blog open-sourcing its codebase is that I can look at it and learn from it. That could be very helpful. Long ago, I was interested in creating a dead-simple iOS app (extension, widget, whatever) for Micropub posting. Eventually, well before this week, Micro.blog open-sourced its Snippets library, which would have made writing such an app much easier. Now, with the client app also open sourced, I could review its code to see (presumably) how to call, configure, and use the Snippets library in an iOS app. That is even more useful than the Snippets library alone.
Now that the Micro.blog client app source code is free and open, maybe I could use some of it to help me build that little utility app now. In the same vein, maybe someone else could use much more of that source code and build a better, more feature-rich client app based on it. Maybe the Micro.blog app is a solved problem, and no one has to solve it again (at least until Apple stops supporting the frameworks it is based on), and a hundred other Micropub-blogging-based small businesses could spring up, all using a common client app. Who knows? That possibility is a risk to Manton and Micro.blog, but it is also a gift to the greater world.