jahed.dev

Open Source for Closed Software

There's an interesting conflict I feel when I see certain "open source" repositories. For me, GitHub, Firebase and Rollbar come to mind. These services are closed source, yet their libraries and tools used to interact with their closed ecosystem is open source.

At first, it feels like a bit of a trick. Developers find these "open source" repositories and handle them like... an open source repository. Report bugs (fine), look through the source code to find the cause, maybe even send a pull request. Maybe even create an entire library to workaround an otherwise deal-breaker and enhance the service; like I did with firebase-rules. But this is all free labour for what is a closed for-profit service. If the service shuts down, the work becomes useless. Though, some of the code and knowledge might be salvaged.

Isn't that kind of strange? Why are we doing free labour for something we're (probably) paying for? That someone else profits from? That we have no control over?

It's an unwanted feeling, and one of the reasons to encourage fully open source software and services. That doesn't have these negative strings attached. That doesn't force us to go through some mental gymnastics to support.

Open Data for Closed Software

A possible point of comparison to this scenario are wikis like Fandom/Wikia and my own project: FrontierNav. These are also closed platforms, the source code is not entirely available. Yet, people are encouraged to contribute time and effort to provide data that may be used for profit.

The difference with these closed wiki services is that people contribute open data for others to freely use. And regardless if the service is running, the data will always be available under an open license; usually Creative Commons.

If the data is useless without the service then yes, we're in the same situation. So we should ensure that when we do contribute to these data platforms, that the data is available and useful outside of it.

Most if not all of these wiki platforms have import and export functionality so that conflicting feeling of contributing to a closed for-profit platform is minimised.

Costs and Benefits

Of course, none of this matters if I'm happy to do free labour for others to control and profit from. The video game modding community does exactly that. There are times I just want to share something in the moment. And times I just want to fix a problem and move on. And that's fine, as long as it's an informed decision.

Going back to firebase-rules as an example. Sure it enabled Firebase to do things that were otherwise difficult or impossible. But if I didn't do that, I'd have to host my own database and migrate everything over. Right now, that's a lot more work for me, so I'm happy to maintain firebase-rules. It's not so much open source as it is source-available. I won't expand it beyond my needs. I won't make any commitments to support it. But people are free to fork it for their own needs, there's negligible cost on my end to enable that.

Conclusion

If there's one lesson I've learnt from thinking about this, it's to make sure if I'm doing free labour for a closed platform, that my contribution is still useful outside of it. That includes services relying on user-generated content. Whether it's a post on Reddit or a link on Hacker News. I should save it and own my work.

And it also goes the other way. If I'm creating a closed platform that allows contributions, I should encourage people to own their data and ensure it's useful outside of the platform. That is one of the key goals of FrontierNav.

Thanks for reading.