Closed Vs. Open Source
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.
__________________
You might be an Engineering Major....
if you'll assume that a "horse" is a "sphere" in order to make the math easier
if you know vector calculus but you cant remember how to do long division
if it is sunny and 70 degrees outside, and you are working on a computer
|