Reading Assignment 08 – 15 March

From the readings, what exactly is copyright? What are the ethical, moral, economic, or social reasons for granting copyrights?
When should an open source license be preferred over a proprietary license? Is open source software inherently better? If so, how do you explain things like HeartBleed and ShellShock?
Is the distinction between [free software] and [open source] meaningful? Between the GPL and BSD license, which one do you prefer? Which one is more free?
Should governments and other public organizations be encourage to adopt and support open source software? What responsibilities do organizations and companies that utilize open source have to the open source projects and community at large?

 

Oh me oh my, what ever happened to the good ol’ days of just writing code that goes? Everything sure was a lot simpler when the Internet was young and just about anyone that could develop collaborated to make beautiful, beneficial products. Certainly for me my coding career was easiest in its infancy when all I had to do was write good code and turn it in to be graded. But now, as we move towards the real (scary) world of software, we need to think about how to license software to best balance user rights, maintainability, security, and development.

Why are licenses important? Well, like a lot of things we work on, good code takes time and effort to develop and maintain, and we might want to protect that investment by officially declaring what end users are allowed to do with the code/product. It’s closely tied to the idea of copyrights, which is defined by the Copyright Clause in the US Constitution:

To promote the Progress of Science and useful Arts, by securing for limited Times to Authors and Inventors the exclusive Right to their respective Writings and Discoveries.

This gives rise to patent laws which protect inventors and their discoveries and ultimately promotes progress. The driving reasons behind granting copyrights have ethical and economic foundations. If someone is going to spend a great deal of time developing a product, they ought to be assured that his resulting product will truly be his. At an ethical level this makes sense because, well, he’s the one that made it, so he should get the final say on who can use it and how. At an economical level it makes sense because if it wasn’t fiscally responsible to tinker and invent, few people would.

So what does this mean for software? Well, many companies prefer to protect their investments with proprietary licensing. This means that users are allowed to use the software, but they cannot explore, modify, or distribute the product. The source code is unavailable to the public. It’s sort of like the secret formula to the Krabby Patty. Mr. Krabs is afraid he’d lose all of his money if he published his recipe. But some people believe the world would be better if everyone knew the Krabby Patty formula – people could collaborate to make the recipe better. That’s what open source licensing aims to do. By letting the public see, understand, and modify code in existing projects, end users gain much more freedom and can get the most utility out of products. One of the great open source success stories is Mozilla!

Now is it inherently better? Not really. While it’s morally pleasing to “free” the end user and gain a large mass of developers, open source projects have their drawbacks. First of all, bad people out there can analyze the code base and look for security vulnerabilities, such as with the Heartbleed bug from OpenSSL. Second, it’s difficult to maintain such large projects that are public-facing. But mostly, as a potential commercial developer, I don’t want my work to be visible on the Internet.

Now some software purists like Richard Stallman want to make clear the distinction between free software – the freedom to run, copy, distribute, study, change and improve the software – and open source software, which they argue just works to make software better but misses the philosophy behind making software free. In practice, the distinction is very small and is frankly a pointless argument, especially because the end result is typically the same in both cases by the Free Software Foundation’s own admission.

Now many companies and large organizations (like our government!) rely on open source projects. Just as with any software, open source code needs to be maintained, especially as bugs are discovered. However, it seems a little backwards when large organizations hound the little guys that maintain their critical component through an open source platform to fix bugs, as in this poor guy’s case. When companies rely on open source software systems, they ought to contribute meaningful and thought-out code to the project. If I’m going to start a restaurant that, among many things on the menu, sells Krabby Patties, I ought to do my best to fix that recipe myself instead of just complain to Mr. Krabs when customers begin to complain about the flavor.

P.S. (food for thought? (puns?)) We, as computer scientists, are in the business of abstraction and analogies. We should make it our goal to explain more complicated system in terms of Krabby Patties.

P.P.S. I’m really hungry now.

Leave a comment