Why don't more programmers release their project code?

First, let me say that I’m new to the robotics competition scene. I competed this past March at an IEEE regional conference.

This competition required a pretty big learning curve for me - new programming language, never designed a robot before, etc. What I found is that there is a tremendous lack of non-trivial code examples available on the web.

Is the competitive atmosphere responsible for this? Is it just that this niche of hobbyist programmers have yet to embrace Open Source Software? What are your thoughts?

This has led our team of student programmers to make the decision to release all of our project code under the GNU Public License, in the hope that novice robot programmers will benefit from the wonderful learning experience that the three us had from our project.

There seems to be a lot of “code” on the net. As you don’t mention any particular hardware platform, operating system, programming language, or what you are trying to do, etc., your observation about a lack of code is open ended and doesn’t make much scense.

I was intentionally speaking in general - this is why no specific language or hardware platform was mentioned. I’m not looking for help on a project, so what I’m trying to do or what language I use or what hardware I use has no bearing whatsoever on my question.

In my search for helpful robot project code examples on the net, I found primarily code “snippets” or “nuggets” where someone on a personal site or forum would post a few lines of code in response to a request for help in a specific area, or with debugging their own code. You said there’s lots of code on the net - maybe I’m just searching the wrong places. Maybe there are some repositories of entire project code files for thousands of projects that I simply did not find - I’d really appreciate some links. No criticism of this or any other robotics community was intended.

I’ll rephrase the question addressed to everyone: Do you release your code on the internet for others to learn from and use, and if not, why?

There is definitely a ton of code out there, so I would disagree with your premise that there is an unwillingness among programmers to publish their code.

Most people who build robots for fun are willing to publish their code if someone expresses interest. Others publish everything they do because they like helping people or getting recognition.

On the other hand, folks who are building robots strictly for competition are going to be less willing to share their code. This is common sense. But some competetive people share their code. I would not fault someone for not publishing their code if they put a ton of hard work into building a unique robot champion.

Yes

Code that may be used in a ‘competitive manner’ is quite likely not to appear on the net.

Non-trivial code as you put it may have no intrinsic value at present but too many times it gets used in places it shouldn’t.

I have seen lots of examples where people have released code that has eventually found itself into commercial products. The fact that someone says its open-source will not stop the less honest from using it to make money, without giving any credit (or profit) to the original developer.

This doesn’t just apply to the code, if someone develops an original concept then the same happens.

I have released small examples that demonstrate a particular function but nothing that could be used to create a full application.

As much as I trust the people on the forums, I would think twice about releasing anything substantial without some form of guarantee.

There is a lot of code on the internet and a high percentage of it is just repetition. Either that or absolute rubbish.

Another possibility, and this may not apply to the more professional programmers, but I would be embarrassed to release some of the code I’ve written. When rushed etc, corners get cut and its messy.

There are those who treat their hobby code as they would commercial stuff but I’ll wager there arent many.

and to release code like this only invites the grammar / syntax / anal compulsive trolls to bombard you with questions and frequently non-constructive criticism. who needs this? unless you see it as having benefit to a group of people you are interested in helping/impressing, and quite frequently it is only small fragments that are needed to illustrate a concept, why go through the effort to bring your own code to a publishable level AND pay for the bandwidth to host it just to collect abuse?

Perhaps it’s because I am still in an academic environment where many of my teachers have embraced open source because they believe the benefits to all programmers outweigh the risks to a few.

What I find most interesting about this thread is that several respondents seems to think I’m implying some criticism or judgment on those who don’t release code. This is not the case at all. I agree that it’s understandable that those who are competing for money/prestige would not wish to publish their code, and I mentioned this in my original post.

Reviewing the balance of posts in the thread so far I am not sure where you get this impression. Either way, it is a tough question to answer. There are a lot of perspectives to the discussion. You could post the same questions in a more industry focused robotics forum and you would get wildly different opinions and answers from an academics based one, and those would yet again be different from a hobby based forum such as this. There are people out there just dying to take up a project or a cause and develop, post, support, and otherwise devote their time it. But frequently the effort itself is as important to them as the project they are developing. There are others that would just as soon buy a project with all the work done or explicitly explained and laid out for them just so they could have the end result (enter the r/c airplane ARF craze :unamused:). There is a lot of information out on the web, maybe not too many blow by blow complete robotics projects yet. My opinion of most of the folks who frequently post here is that is not really what they are about… rather it is the process and development of a project that is a large part of the appeal. :wink:

I appreciate everyone’s responses. I certainly have no intention of rehashing the same old arguments about open source that have been had in programming communities for the last 15+ years.

Mostly, I think my learning style is particularly suited to being able to examine in depth a single cohesive project file, as opposed to a bunch of different fragments from multiple projects. From a learning perspective, I like to look at projects not with the desire or intention to recreate them, but to spark my own creativity - how could I make this project better/add cool new features/why did the programmer structure the code this way/could I adapt the code for my own project, etc. For me, I find I learn more information faster if the whole project is there, because I don’t have to make as many guesses or assumptions about the code.

Uhh… not always. I release some code if someone is working on something similar and needs help. Some of the things that I do like web development… such as my game that I made, I don’t release because why should others make a profit from MY half a year of hard work?

You need to know where to look. While doing my RGB LED fader I found several projects that were 100% open sourced. Source code, schematics, eagle files, etc. They were all in asm though T____T

A lot of code posted on the net is not really search engine friendly for finding it. As an example, you have posted your team’s code on the net. The post method would probably be difficult for somebody to locate using a search engine. You need to have key words in the page with the link to the code so a search engine would catalog it. The code is specific to the BasicATOM28-M, but there is no mention of this micro controller on the page. The .bas file also has no mention in it as to what type of computer/microcontroller/programming language the code is to be used with.

One reason why the PM feature was created. You could contact the person then and ask what micro and language it was coded in. Although, you can easily find out if it is something that you need or not.

I might be wrong but I think the point zoomcat was making was that the school website for the project of the person asking the question was itself not designed in a manner to make it search friendly. While they have posted a fair amount of information, it still would not readily be found using common search tools due to the lack of significant search keys. This suggests there may be quite a bit more information of folks with similar intent that is just not readily discoverable due to a lack of web savy programming skills.

I think the spirit of the original post is that it would be useful to have something like a SourceForge.net project for hobby robotics. Perhaps someone should set up a SourceForge project and we can start developing and sharing open source hobby robotics code.

The benefit of this approach is that we have version control and everyone can always get the latest changes. I definitely agree with the general sentiment that code is out there, but it’s damn hard to find what you are looking for.

I think Eddie makes a valid point that needs a bit of emphasis. This site is a Hobby site in general and as such hobbyists may be impressed with anothers achievements but they usually go away and try to achieve the same themselves because they want to. Thats where the gratification lies…

I’ve done bits and people have commented but only once have I been asked for the code and that was just so the person could do it themselves in a different language on a different platform.

As he says, on a commercial forum, the aim would be to get it working ASAP without regard for satisfaction, the sooner its done the sooner the money comes in.

It would be nice to imagine a repository of hobby robotics code that we could all delve into but firstly there would be no real sense of achievement for the hobbyist as its no different to buying a top-of-the-range lego set and only ever building the models in the instruction book. Secondly, as I mentioned before, open-source is a beautiful ideal but it does leave the door wide open for commercial abuse.

One thing I’ve been considering for a while is a thread solely for projects that have worked and been completed, not the actual discussion thread as its being developed but somewhere to just post the final facts of what was achieved. This might to some degree ease the searching and re-invention cycle.

The truth is that nothing will stop the less than honest from doing what ever they want with what ever they want. No software license or agreement, signed or otherwise, will stop such people.

There certainly is a lot of rubbish code available on the internet. While some of it even does things worth looking at and emulating, it can be written in such a way as to be useless. I’d rather use a few more lines and have code that is useful and easy to maintain.

I don’t let any code of mine out if I wouldn’t submit it formally for use in a commercial project. Now, I’m not saying that first versions of my code are necessarily the nicest or easiest to understand, but I do try to make it usable and understandable.

Everything I have written to date for WALTER, is freely available for download from my website.

8-Dale

I like snidbits only

Late in the story I know, but I wanted to weigh in. We have always published all of our code, even when I paid for it to be written. :open_mouth: I look at it as a cost of doing business, and it brings people to the site. I have seen commercial websites that protect their Stamp or OOPic code making it accessible only to paying customers. This just seems to counter the hobby robotics mindset of helping each other.

I like A-Bot’s idea. Don’t tell me you can’t, tell me how you can… :laughing: