Posted on | September 18, 2008 | 1 Comment
It has been a long time since I’ve seen the inside of a class room. In school, my primary major was criminal justice. I was programming since high school, so I took some programming / computer courses because they were easy credits. I’m really glad that I got some exposure to law (mostly, how to read law) because in this day and age you really need it.
Trademark law, software licenses, patents, intellectual property .. some people make a whole career out of understanding these things (I think we call them lawyers). However, your average programmer is confronted with all of the above very frequently.
Until Google comes up with some kind of killer editor that reads your code as you type while searching its patent database in real time for possible conflicts, every programmer needs to know how to search for and read patents. Thankfully, some progress is showing on the patent reform front as some of the most obnoxious ones are invalidated as prior art. But others remain and lurk .. for instance, the former DEC (Digital) holds a patent that the Ext3cow file system violates. I’m sure it will never be enforced, but it illustrates my point.
Trademark law is another big one. For instance, Firefox and Xen. Both projects are free software, however the use of the name is very restricted. If you modify even one line of code in either program, you must name it something else in order to distribute it. Furthermore, you can not use their logos on modified versions. This is actually fine, its using trademarks as they were intended .. in order to protect consumers. If the can says “Xen”, someone can be sure that the software is the official supported version from Citrix .. likewise with Firefox. However, this applies only as far as the trademark extends (geographically).
I can’t tell you how many times I’ve seen start up companies hack Xen and fail to rename it.
Intellectual property is a term I try to avoid because I feel that it is a misnomer. However, if confronted by a big hungry lion, I’m sure that closing my eyes and pretending that the lion doesn’t exist will result in me being dinner. Programmers have to deal with non-disclosure agreements, non-compete agreements, copyright assignment and a plethora of other things. Many times, these agreements directly conflict with the license of the software that you are working on.
Then there’s export restrictions, especially where cryptography is used.
Finally, there are over 20 free/open software licenses, each one with its own caveats. If that weren’t enough, there’s also 10+ licenses that just govern documentation.
Are universities now teaching these things to computer science students? As I said, its been 10+ years since I saw the inside of a classroom. If not, they probably should. If my daughter ever says to me “Daddy, I want to be a computer programmer” .. I’ll likely say “Sure thing! Get your law degree first.”