Week 6

Software, Copyrights, Licenses, and Ketchup

After watching Kevin Fleming’s talk in “A Crash Course in Open Source Licensing”, I learned more about copyrights, patents, and software licenses.

A copyright controls permission to create copies of a creative work (music, art, etc.), for any purpose. It is not a natural law, but rather a legal law that was created to protect the rights of authors of creative works. This prevents plagiarism and other forms of copying, such as republishing (without the author’s permission) and even making a copy that has no purpose at all (e.g. make a photocopy of a work and filing it away). In fact, under U.S. copyright law, a work is automatically protected by copyright when it is created.

Licenses are created to formally give permission to others to copy creative works. Software licenses are licenses for software, that at the bare minimum allow others to copy the software (program code and other information). Software licenses can have other components as well, such as attribution requirements (if you copy or modify someone’s code, you must include their name somewhere) and including the code in a “preferred form for editing” (i.e. non-obfuscated text).

Whereas a license gives others the right to copy creative works, a patent is a right that allows the author of a creative work to exclude others from making, selling or using her work for some duration of time.

Kevin Fleming uses a made-up scenario to explain copyright and licenses. Someone named Bob implements a library that can be used to perform calculations to determine “the maximum amount of ketchup that must be applied to [French fries] in order to achieve a minimum level of enjoyment without detracting from the inherent qualities of the potatoes.” Bob then posts a copy of the library code (on paper) on a bulletin board on campus. According to copyright, people who see this code cannot make a photocopy of the code, although they can talk about and use the code. In order for people to be able to copy, modify, and redistribute Bob’s code, Bob must include a license with the code that gives them those permissions.

When someone contributes to an open source project, they may need to agree to certain terms and conditions. These terms and conditions are put into place by the owner(s)/author(s) of the project in order to give the receiving project more permissions from the contributors. In other words, even though the contributors’ works are protected by copyright, the project can still copy those works (and therefore integrate them into the project as a whole) since the contributors gave permission to do so when they agreed to the terms and conditions. This gives the project the freedom to do things like have multiple licenses (e.g. an open source license that allows for free use and a commercial license that requires payment).

Some projects like GCC and GNU Emacs require something called copyright assignment. As Kevin Fleming says in his talk, this is when the contributors are literally giving the project their code; it becomes the project’s property. This is done so that the project can change licenses (e.g. from GPL version 2 to GPL version 3, as GCC has done) or sue someone for violating the license terms.

3 issues in freeCodeCamp that I think I can fix

I looked through the issues in freeCodeCamp’s GitHub repo (here), and found three that I think I can fix. I chose them based on their labels “first timers welcome” and “help wanted,” which indicate that the issues are beginner-friendly.

  • C/C++ implementations of selection-sort algorithm (here). Implementing and explaining one of the first algorithms I figured out by myself in C/C++ should not only be feasible, but rewarding as well.
  • Clarify how to create multiple box shadows (here). I have experience in web development and design (I have done it for about 1 year now), so I am confident that I can tackle this issue.
  • Need a stricter test for the “Add Placeholder Text to a Text Field” challenge (here). As I mentioned above, I have experience in web dev/design, so I am always thinking about edge cases and how a user can interact with a UI when I design an application; this issue will be a great way for me to share my experience with new campers (which is what freeCodeCamp calls its users).

Friday, March 1

No class. Instead, our assignment was to watch the YouTube video “A Crash Course in Open Source Licensing” by Kevin Fleming (it was one and a half hours long!).

Tuesday, March 5

We discussed and reviewed the key concepts of software licenses as described in Kevin Fleming’s talk, and then we formed teams for the semester projects. I was assigned to the freeCodeCamp project with three other classmates (Carol, Daniel, and John). The last 10 minutes of the class were used for downloading and installing the necessary development environments for the projects on our local machines.

Contributions

None this week.

Written before or on March 8, 2019