Open Source
Some of my software is available under free licenses, but not all of it. On this page I'll try to summarize why I have not released the code to all of my projects. Keep in mind that there may be project-specific reasons mentioned on the respective pages as well.
Rationale
I'm a big user and proponent of free and open source software. All my personal machines run Linux and I use more libre software projects than I can count. Many FLOSS developers and users state that all software should be free on principle, and I understand the argument. Storage is cheap, and it's a valid stance to just open source everything and let the users decide what code is worth looking at and using/copying. Nonetheless, for many of my personal projects I have opted not to release the source code publically. Some recurring reasons for that are as follows:
- Some of my projects' use cases are so specific and niche that I don't believe anyone other than me would even be able to use the software. It may be written to interface with a very specific server or other software configuration that I use and generalizing it would take considerable effort.
- Many programmers understand that one-off code is often written haphazardly and without much thought given to architecture, but not all are understanding about these circumstances when looking at other people's code. As a professional computer scientist, the way a piece of code with my name on it may reflect on me and my capabilities is something that I have to factor into the decision for or against a public release.
- Outside of pure code quality, the usability of the software may also not be up to my standards. Because of my specialization, I have a reputation to uphold in this area as well, so if I have only made a piece of software work for me and my memorized keyboard shortcuts, I may not want to unleash it on users who would have little chance to understand or really use it at all.
I know how frustrating it can be to find out that someone else already solved a problem you're struggling with and did not release their code, and sometimes I find myself wondering why not everyone releases more of their hobby projects as open source. But given the above reasons, I hope you can empathize with my decision against a blanket policy.
That said, a lack of interest (real or perceived) is also something that influences me. I typically get tiny usage numbers anyway. If you're eager to take a closer look at a project of mine that isn't publically released, please let me know. Even one single person can be a bigger motivator for me to set up a public repository than you may expect.