Let’s be clear up front regarding something: simply being on GitHub in a very public repo doesn’t build your code open supply.
Copyright in nearly all countries attaches mechanically once a piece is fastened in a very medium, while not would like for any action by the author. For any code that has not been licenced by the author,
it’s solely the author United Nations agency will exercise the rights related to copyright possession. Unlicensed code—no matter however publically accessible—is a ticking time bomb for anyone United Nations agency is unwise enough to use it.
A big distinction between proprietary and open ASCII text file is that open ASCII text file is supposed to be seen. As a 40-something sysadmin,
I’ve written a great deal of code. As long as the thing you expected to happen when you invoked the program happens more frequently than not, it’s a success.Open source code is very different.
When you write open source code, you know that it not only has to work, it has to work in situations you never dreamed of and may not have planned for. Maybe you only had one
very narrow use case for your code and invoked it in exactly the same way every time. The people you share it with, though…
they’ll expose use cases, mixtures of arguments, and just plain strange thought processes you never considered.
Your code doesn’t necessarily have to satisfy all of them—but it at least needs to handle their requests gracefully, and fail in predictable and logical
ways when it can’t service them. (For example: “Division by zero on line 583” isn’t an appropriate response to a failure to produce a command-line argument.)
Your open ASCII text file conjointly has got to avoid unduly embarrassing you. That means that once you struggle and struggle to urge a balking operate or sub to finally turn out the output you expected,
you don’t just sigh and move on to the next thing—you clean it up, because you don’t want the rest of the world seeing your obvious house of cards. It means that you stop littering your code with variables like
$variable and $lol and replace them with meaningful names like $iterationcounter or $modelname. And it means that commenting things professionally (even if they are obvious to you within the heat of the moment) since you expect others to be able to follow your code later.
This can be a little painful and frustrating at first—it’s work you’re not accustomed to doing. It makes you a better
programmer, though, and it makes your code better as well. Just as important: notwithstanding you are the sole
contributor your project ever has, it saves you’re employed within the long-standing time. Trust me, a year from now when you have to revisit your app, you’re going to be very glad that $modelname,
which gets parsed by several stunningly opaque regular expressions before getting socked into some other array somewhere, isn’t named $lol anymore.