Open-source FRC code

I think more and more often that once the season is finished, I am going to release my custom-made source under an open-source license. I honestly don’t see any disadvantages to this; doing so would only encourage others to learn by example. Yes, it would provide drop-in files for different systems, but I don’t even believe using code written before the year’s build season is FRC-legal.

So I am debating whether or not to use the GPL, or to come up with a license that basically says “Do not use this code in its entirety on a robot; use it as a reference only”. I’m leaning towards GPL; but I’d like to hear other opinions.

-I would only do this once the season is finished–I don’t believe we are mature enough to get complete blueprints for the competition’s machine before ship date…that just seems like it would promote cheating. Maybe someday we can have truly open-source robots, but I don’t think that day has come yet.
-I realize I will not be able to relicense any of IFI’s stuff, or any of Kevin Watson’s stuff. My intent is not to release an entire MPLAB project, but rather just a few files of which I have written from scratch.

So, I’d like to hear your comments.
JBot

i like the idea :slight_smile:

is there a website that you can put code like this for FIRST? if not im willing to make and host one also if i ever get around to learning how to do cool programming ill post mine for others to use.

…forest

I seem to remember seeing a site for this specific purpose, but Google is unable to find it, so it must not exist (just kidding…).

I know that I will be hosting code of my own off our team website (http://www.trucktownthunder.com/). That just seems the logical place for it. I just don’t have the free time to put together a PHP system for uploading files, creating tutorials…I’m imagining something along the lines of CD-Media, except much more souped-up and targeted at programmers.

Just throwing out ideas at this point.
JBot

id be willing to make a site for this purpose if people will use it. i just need a list of things that would be useful on it so i can lay it out properly. then its the fun part of coding it.

…forest

I know that this sort of concept has been thrown around a few times. I like the idea to the point that I believe that open sourcing your code (after the season ends) should be mandatory.

I think frCoder http://frcoder.sourceforge.net/ was the most recent. It appears to be borked right now.

When I was a student, we called it the “Codex” or some such.

I love the idea! code.google.com seems like a good place to host your code.

My team would also like to open source our code by putting it on code.google.com this year. During the season, we could then have svn access to our code from anywhere we have an internet connection. Currently Kevin’s license is preventing us from just uploading our code. Any ideas about how to deal with this? I don’t want to leave out those parts of the code, since they are just as vital to our code as what we wrote and will write.

I have found a couple of other team’s code on code.google.com. The current standard seems to be to call your project team$(teamnumber) where $(teamnumber) is your team number. Ours is called team971. It is empty currently since we are still working on what to do about licenses.

As far as the license goes on Kevin Watson’s stuff; you have 2 options: get permission to upload (probably won’t happen) or don’t upload it. I think the second option is your only choice; you will just need to link to Kevin’s site and say something like “add KW’s serial_ports.c/h to this project before compiling”.

I really hope Kevin opens up his licensing a bit, but he does not want commercial use, and using the GPL would allow whatever commercial use, anywhere. We’ll have to consult him on this, but it sounds like his trust has been abused, and he is not likely to relicense his stuff because of this.

Thanks for your support. I thought someone was going to shoot this down, but nobody did. Nobody even voted for anything besides “Good” on the poll…:smiley:
JBot

Great idea!

There’s a myriad of different open source licenses (http://opensource.org/licenses). I’m not sure if there are any that explicitly deny commercial use, but you can always modify a license and add whatever restrictions you want to it.

The GPL says that if you use GPL’d code in your software, your software must also be GPL’d. So, for a company to use your GPL’d code, they would have to open source their code as well.

The BSD license (which might be what you’re thinking of?) basically says, “do what you want to with this code–but give me some credit somewhere.”

There are some Creative Commons licenses which explicitly deny commercial use, but they’re not recommended for source code (I’m not sure why).

Oh, the wonders of open source licensing. :slight_smile:

  • Taj

I like the idea of open-source code. It can and will stimulate learning. While all teams need to write fresh code every year, they don’t necessarily need to reinvent wheels. I think if enough ‘elegant’ code is posted, someone might even write a book based on it, much like ‘FIRST Robots…Behind the Design’ by Vince Wilczynski and Stephanie Slecycki.

I personally don’t like the traditional GPL license due to its viral nature.

If you’re looking for a reference only license you can look at the MSRL.

EDIT: Here is an episode of Hanselminutes discussing open source licensing. If nothing else it might give you a good starting place.

That is not a pitfall here as we are trying to promote GPL’d open source free files. Not to mention this “viral nature” was written into the license…and why not? We’re looking to promote software freedom. Viral is good in that case.

Correct, but it could still be used in a commercial product. Kevin Watson has specifically said he does not want people making profit from his code.

I still like the GPL for this.
JBot

I’d check on the exact terms of the GPL license before you do this. I’m not sure if you can put some files under the GPL while leaving some files under Kevin’s license, as the two licenses are not compatible.

I’ll all for the idea though.

Since Kevin Watson has expressly stated that he does not want his files re-posted, I am not going to re-post them. It is perfectly fine to GPL my portions of the project. I am also not re-posting IFI-written code as they still hold the copyright whether or not they choose to enforce it. If this project takes off, I am going to make it very clear that people can only license what they own, and nothing more.

JBot

default code now is ok but open source auton that is written by a teams programmers would probably take away from the competition from team to team to see who has the best code/programmers. there should be other ways to help new teams such as having examples of past years just not open source for the current year

I think it would be cool if we had a place on chiefdelphi where we could all dump our code from the past years into, i guess you could do it with white papers but a place specifically for posting code snippets and example code would be nice

I don’t really think that that would happen. Teams have been publishing gearbox designs (with dimensioned drawings and a BOM) for years, and I don’t think that has lowered the level of competition. Even if it did make it easier for rookies to write amazing autonomous routines, the competition would still be there–just at a higher level. Plus, I don’t think autonomous code from one year will necessarily be applicable to the next (with a few notable exceptions like StangPS). For example, our coolest autonomous routine this year (that never ran… stupid turret broke) is about 1000 lines of very specialized code; I know that it would be almost completely useless to use much of its structure in the 2006, 2005, 2004, and 2003 games. So, I assume 2008 code will be unusable in 2009 (especially since the control system is changing). In summary, my view of the use of open-source’d robot code is like what Amanda Morrison said about learning to solve a Rubik’s Cube:

IANAL, but unless I’m reading this wrong, that would imply that the entire program must be licensed under the GPL, which it is not.

There have been rules in past seasons that more or less require a full rewrite of the code from year to year. While it would be a good learning resource, the code could not be used without modification on an FRC entry.

i have a question. if we as a community get together and develop a library of code and make it available to everyone, sort of like what kevin has done, are we legally allowed to use that code over and over?