Open source

I am doing a paper on open source. What do you think about it?

If you are pro open source, like me, what do you think about programming in FIRST- share or not share?

I agree with open source. However, for FIRST, I don’t think it’s necessary because there is a competition aspect to it (well, maybe a lot of it). Throwing out some basic code for rookies is great, but I think that teams should keep their more advanced code because it is from experience and tedious work that they accomplished it.

I love open source. One of the best programs i’ve used (VirtualDub) is open source, and because if open source, it gets better everyday.
in FIRST though, i agree with monsieurcoffee. Basic code is good, but if it was all open, then great programing would lose its greatness.

Open Source is good. Whether it’s a good thing for FIRST or not, I’d have to say it’s not too big of a deal. It would be nice for people to share their code after competition is over. One reason why it’s not exactly neccisary is that most teams, if asked, will explain how anything on their robot works. It’s quite understandable that teams won’t release anything about their robots until after ship-date, but after that, I think sharing anything would be nice.

Just like some teams don’t feel comfortable sharing pictures of there bot until they take it out of the crate at competition because they have a unique component they don’t want to share. Some teams may feel there code gives them a tactical advantage and may not want give that advantage up. After finals are done many teams do share more info about there bots inclusing code.

I think it would be good if people shared there code because it would force force the more creative teams to better themselves and allow the less skilled teams to learn from the shared code. Overall bettering next nears competition.

Open source is definately a “good thing”. I wrote a research paper on it a while back, so let me know if you want any info, etc.

As for open-source in FIRST, I’m all for it. As most people know, all the stuff I’ve ever done is available (with source) on my website and I plan on keeping it that way for as long as I can. I would have put my 2003 code up there months ago, but I just finished writing it last Wednesday night in the hotel room before practice rounds on Thurs. :slight_smile: Anyways, as soon as I get the chance, I’ll be uploading the new code and some other stuff.

–Rob

some of the comments here are contradictory to themselves.

I agree with open source. However, for FIRST, I don’t think it’s necessary because there is a competition aspect to it

This is why programs are closed source… competition. Then an open-source program can best it if they user understands the source.

i.e. Windows vs Linux, Windows is point and click until you figure something out, Linux can be more productive if the user knows what he/she is doing.
Closed vs Open code in FIRST: Closed… if you hand someone your control system they can make it work by playing with it enough.
If they have read the code and understand it, they’ll know how to move stuff around right away.

I understand a lot of teams like the “element of surprise” in not revealing their bot before their first regional but once regionals have started they “open” their bot to the public. Just seeing a bot doesn’t mean people know how (or how well) it works. I think that was very obvious this year with teams saying “We’re fast” but not saying what fast is and being overestimated when competition comes.

Many teams have neat designs that can’t be seen, such as Wildstang’s Stang Sense and StangPS. I’m sure many programmers would love to see how these were done and if I’m not mistaken Stang Sense info was released and is now helping other teams.

“Co-opertition” should be the name of the open-sourcing of code in FIRST. (Yes I know this was a game name). I don’t think any team could fully implement another team’s code for the current year but they can get new ideas for the next year. When one team raises the bar, they should teach how it was raised so that another team can raise it further and new teams can catch up.

open-source all the way! I use it for learning purposes when I was programming on OpenGL and DirectX. I like looking at others code so that I know if my way would work better/run faster than the other persons.

I almost didn’t respond to this, but I think it is important. Let me start by saying that I am a supporter of open source, especially for FIRST – in fact, I worked on a FIRST simulator this fall that was open source (I used the GNU GPL).

I’m somewhat surprised by the comments I’ve seen saying that since this is a competition, “closed source” would be more appropriate (well, I use ‘surprised’ somewhat reservedly; given other comments on CD it didn’t come as a surprise, per se).

Note that the greatest principle of this “competition” is GRACIOUS PROFESSIONALISM. Let me form an analogy for the programming aspect of the project by going to the mechanical aspect. If there were a team that couldn’t figure out how to begin to build their robot, what would your team do if they had the chance: tell the team that your knowledge is “closed” and only available after the six-weeks … or the more gracious and professional action of HELPING THEM OUT? I admit this is a bit extreme (the idea of giving a “basic” code base was suggested), however the point needs to be made. I can draw it out further and say: if a team was working on an advanced continuously variable transmission that your team also happened to be working on, and they were having trouble, what would you do: turn your backs and close your doors … or the more gracious and professional option of HELPING THEM OUT?

Let me summarize somewhat: the net goal of this great project that I’ve been privileged to be a part of is that in the end of the day we all come out knowing something more: about robotics, about engineering … and also about life and friendship, etc. Not to drag out an overused statement, but in twenty years what will be most important: that you won some competition or perhaps the knowledge that you gained? Should it not be our goal – OUR RESPONSIBILITY – to make sure that we and others all gain the most knowledge that we can by mutual cooperation?

The idea of open source is similar. The basic ideology behind OSS is similar to that of FIRST. You must realize, though, that a program is NOT general, it is specific to your robot (this may seem counterintuitive to anyone who has had abstraction thrown down their throat over and over again, but with PBASIC, it is essentially the facts). What I mean by this is that it in no way would be a “plug and chug” idea; a team couldn’t copy your program and hope to “use it against you.” It would have to be modified to their robot, and optimized or whatever to fit in their program space.

Okay, so lets examine what could happen in this “dire” situation (sorry for the sarcasm … its an occupational hazard).
- the team examines your code and learns something about programming
- the team finds a mistake, or possible optimization or some other improvement in the program
- the team modifies your program using minimal effort, and doesn’t try at all to learn, only to do the least possible work

The first two items are undoubtedly GOOD THINGS. I suspect the concern is for the last. Well if that is the case, it is their loss (and I don’t see this happening often given what FIRST is about). But is it not better to help out your neighbor than to try to make yourselves feel like “better programmers”? Sure after the six weeks of building a robot we all want to compete and try to win. This is natural and I am not against it. But should we hold a victory above helping out others? And would we want to win because we had some knowledge that we didn’t share with another team – or would we want to know that it was because we in fact bulit a better robot, had a better driving team, etc.?

I see it as obvious, but I suppose it is not the case. What I am saying, to summarize, is that open source only helps people learn. I see NO ADVANTAGE WHATSOEVER in keeping knowledge locked up and hidden. I see no honor in winning by keeping knowledge from a team. Sure, not posting your program online isn’t a big deal. But if you have the opportunity, go for it. And the idea of not letting a team see it that needs help surely doesn’t sound gracious nor professinal to me. Sorry for drawing this out and making it somewhat of a big deal, but I’ve seen a lot of posts on CD that most definitely do not reflect the ideas of gracious professionalism, and I felt obliged to comment.

*Originally posted by mtrawls *

<clip>

I see it as obvious, but I suppose it is not the case. What I am saying, to summarize, is that open source only helps people learn. I see NO ADVANTAGE WHATSOEVER in keeping knowledge locked up and hidden. I see no honor in winning by keeping knowledge from a team. Sure, not posting your program online isn’t a big deal. But if you have the opportunity, go for it. And the idea of not letting a team see it that needs help surely doesn’t sound gracious nor professinal to me. Sorry for drawing this out and making it somewhat of a big deal, but I’ve seen a lot of posts on CD that most definitely do not reflect the ideas of gracious professionalism, and I felt obliged to comment.

Right on.

Besides, Open Source implies that should you decide to distribute your work, you distribute the source code with it. It’s as much about empowering the user to use & adapt the code to his/her specific needs as it is about developing stable code which follows good practice.

Those that don’t “get it” are unlikely to distribute their code in “closed source” anyway. The achievements of the self-serving will be quickly forgotten.

-Jim

I’d like to state this:

If you don’t get copyright protection on the source, you are so screwed, and won’t win a court battle.

If you don’t get copyright protection on the source, you are so screwed, and won’t win a court battle.

This is somewhat off the topic, but I suppose it can be mentioned here. While I don’t see the potential to become “screwed” by posting your robot’s program on the internet, the possibility is certainly present for other areas. As I mentioned in my earlier response (somewhat in passing), I used the GNU GPL on my open source project. For information on this (and a great source for background information for a report) you can visit the GNU website, or specifically, the location of the GPL: http://www.gnu.org/copyleft/gpl.html

For those not familar with it, note that it is not a copyright proection in the normal sense: it is, in fact, “copy left”! Basically, if you distribute your code open source then it states that anyone else that modifies your code and then distributes it must include the same liscense you did (the GPL), and must, by extension, include the source code. That is, they cannot modify your code, make the application closed source, and then sell it to someone else. Its really pretty interesting, and a good source for open source licenses is http://www.opensource.org/licenses/

After reading all of the above posts, I feel I should also express my opinion on this topic. Both sides have very valid, and logical points to their arguments, and there are both pros and cons to both open and closed source. This is my take on how I personally feel teams should handle it:

True, if you do distribute your code, then there is always the possibility of another team copying it, modifiying it, and then using a slightly improved version against you. Or worse (in my opinion), figuring out a way to directly counter the logic used in your code. However, FIRST was made as a learning experience and is it truly worth it to horde your code and not let anyone see it? Neither way is truly the best way to go IMHO.

I personally do not release my source code to other teams. You will not see me posting the source files for our robot until after the competition is over. The reason for this is twofold: 1) the code is not done until the competition is; it is always changing and 2) the off chance (although slim) that another team will use the source to somehow counteract our robots strategy. This comes not really from the standpoint of other teams copying my code, but more from the fear that they’d find a flaw in my code and would exploit that, and its something I can avoid.
However, I am not unwilling to lend my programming expertise (this is my first year in FIRST, but I have used PBASIC before and I have been programming in other languages for years). When I see a situation that I can help out another team with their code, I take it. Whether its showing them how they can make their code more efficient, or they are stuck at a point when they’re writing their code, I will help them however I can. In the spirit of the “give a man a fish and he’ll eat for a day” quote, however, my first advice I always give in pseudo-code, to demonstrate a concept so that they will apply an idea with their own thoughts and learn more in the process.
If it is specific enough that pseudocode cannot be used, or if that is not enough assistance (if I still feel I can do more for them), then I will start giving them pieces of code that they can modify and apply for their specific needs. I don’t just hand them a set of code and say “here, load this and it will work”, because they won’t learn that way. Instead I do what I can to assist them in finding a solution for themselves. This way, I’m not spoonfeeding them, they’re not “stealing” code, and everyone learns something in the end. This, I feel, is the best way of handling the situation that I have come across.
Yes, I am on a rookie team, but as I said earlier, I have had years of programming experience (its a hobby of mine), and I have assisted approximately 10 or 11 teams with their code, and we havent even gone to regionals yet! (ours is this weekend). That is my take on it, just thought I’d throw in my $0.02, let me know what you think, and good luck to everyone.

Allow me to clarify my point somewhat.

True, if you do distribute your code, then there is always the possibility of another team copying it, modifiying it, and then using a slightly improved version against you.

The idea of it being open source is that if improvements are made, the team would send them your way. Would this happen 100% of the time in practice? Probably not, but given what FIRST and OSS are about, I think if you make this clear, then the team wouldn’t use the code “against you” but rather “with you”.

I personally do not release my source code to other teams. … The reason for this is twofold: 1) the code is not done until the competition is; it is always changing and 2) the off chance (although slim) that another team will use the source to somehow counteract our robots strategy. This comes not really from the standpoint of other teams copying my code, but more from the fear that they’d find a flaw in my code and would exploit that, and its something I can avoid.

Again, the idea is that if a team finds a flaw in your code then they should send it your way. Obviously there is a chance for some obscure bug to get into your program (or so unfortunate experience outside of FIRST has taught me for years); however, the more eyes you have looking at it the better. Ideally publishing the code would only help. However, I agree, it is a personal (perhaps better said as individual) choice.

However, I am not unwilling to lend my programming expertise . …

And this is what the spirit of FIRST is about! The idea of releasing the code open source is that other teams can look at it and dissemenate information that could be helpful if they are so skilled/inclined. It is an individual decision. However, I think it should be (as you seem to agree) a global responsibility (speaking specifically about FIRST, though it can and should be generalized) to help your neighbour when they seek it – and as you say, the best way to help, is to give them the knowledge to help themselves.

I have watched this thread very closely ever since I created it. In fact, the debate that has arisen in it was part of the reason I decided to write my paper on open source. I am trying to figure out what it means to me. I’ll be honest- I have not posted our code online. Mostly its because my team would seriously kill me if I posted it, because it improves our time by a few seconds, and it would very likely do the same for a similar type of robot.
(Boy am I specific!) And if I can’t get a team started in Sweet Home, they would be reluctant to let me stay with them if I did that.

But, you will see the code after the season if I make a web site.

And yes, I am more than willing to help anyone with their programming.

I wish I could post it, but as I said, my team would not be pleased.

Exactly… I couldn’t say it better.

I personally am not going to release our source code until all of our competitions are over for the simple reason that I want that advantage that it gives me, cuz I want to win.

However, if someone asks me to help them with their code and I have the time to do so, I will. At GLR last weekend a team asked me to help them with their autonomous mode… and I would have except mine wasn’t working very well yet so I told them to come back later… and if they had come back I would have helped them as much as I could. And especially now, since all of our code is set and finalized (for the most part) and I’m gonna be bored this weekend at the Midwest regional… if somebody needs help with their code, I’ll gladly help if they just come by our pits and ask…

I think that Open Source in First is definitely what the program is trying to push. I have absolutely no problem with giving some of my code if not all to another team. But I also believe that other teams should write their own code and if they are having problems maybe another teams programmer could help that team by working with them on their code. I did this with team 19 at UTC. I was surprised to find as well that when I offered my code to them(which would have worked perfectly on their robot with just minor changes) they graciously declined my offer but gladly accepted help on the code they had written. I think this is the way it should be. like I said, I dont mind giving code away to teams that need help but after the experience I began to think that instead of the code being given away immediatly that we should first help guide and help other teams on the programs that they had written.