Writing compilers is 'serious business'! Seriously though, it's very hard and not really something you just hack about a bit in and then submit a patch. There's a reason most of the developers on GCC are employed by companies such as Red Hat, IBM, Novell etc to work full time on GCC. Also why Apple hired people (like Chris Lattler) to work full-time on LLVM.
I can program very well but have never worked on an opensource program although this thought has crossed my mind many times. I believe previous commenders provided most of the problems. In general, even WITH well documented code, it is a pain to understand code from other programmers with whom you have no physical contact and have never worked with as a team.
One other i personally find importand and i would like to discuss is that many projects are written in not so popular languages like python. Now most universities do not teach python, but teach Java, C ,C++ etc. And in the business world, python is low in popularity. I only encounter programs written on it in the opensource world. It is relatively easy to learn a new language if you are a programmer. I learned C in 2 days. Learning some reserved words isn't the big deal, learning its libraries is. My problem with python and similar languages, is that i am not willing to learn those languages just to contribute to opensource. I am getting paid to program in Java, and i am equally skilled in .Net and C/C++, and those languages i would like to use with Opensource as well. To become and expert programmer, is not about learning the basics of every language in existence. You need to pick one or two and learn them well. Use them extensively.
The problem isn't that python is much different than Java and C, it isn't. The problem is that there are some differences in the way all languages handle things, and one cannot track all changes and still be a good programmer. I don't want to change my mindset every time i go home from Java to Python. This will make me lose my edge in the long run. It will also tire me. I want to be good only in languages i will use professionally.
So when most opensource projects i would like to improve are made in languages i don't want to learn and use i cannot join their team. Sometimes i really don't understand why Java isn't used more in opensource ecosystem. It is opensource, it is more popular, and in my opinion just better.
A solution could be for me to start from scratch, but for obvious reasons this isn't attractive to me...
So those two problems i mentioned are personally holding me back.
Well, I am just now learning to really program stuff at University (for the past 2 years), but mostly in Java, though we do use C# (Silverlight) and C++ (OpenGL) too.
I am not NEARLY skilled enough to contribute to a project yet, and on top of that, I simply have no time to spare for it either. I wouldn't even know were to start.
This is an inevitable part of FOSS, and sure, it can be challenging. Communicating efficiently using electronic mediums, possibly in a non-native language is a skill, much like communicating well face-to-face is. But its not exactly black magic. And with the current trends in the IT and business world in general, I would think that developing this skill would be interesting to a lot of people. FOSS provides you with an excellent opportunity to get the required hands-on experience.
Originally Posted by TemplarGR
Why do you assume that will make you "lose the edge"? And why do you only want to be good at languages that you get paid to write in?
Originally Posted by TemplarGR
Btw, according to ohloh.net, java is more used than Python. Java and C/C++, has about 50'000 projects available, so there is plenty to chose from if the language is important.
And its GUI looks like ass on the desktop :P
Originally Posted by TemplarGR
First of all, no one is born a programmer. All programmers have learned it, with various degrees of difficulty and success. And it is something everyone can learn provided that they are sufficiently motivated.
Originally Posted by frostwarrior
Secondly, working code is good code compared to no code. "Make it work, make it good, make it fast" -- someone smart, possibly Linus.
If you can make things work then thats great, its an excellent start. There seems to be this assumption that you have to be brilliant to contribute "official patches". You don't. The most important thing is that you are able and willing to write code, code that works. Also important that you are willing to improve by continuing to work on it, and fix issues when they appear. If you have those two traits, it will go a long way.
And as stated by others, there really is tons of other things to do around a free software project apart from coding.
That's why you'd want to use java-gnome or whatever bindings Qt has. Python, nor any other programming language has a specific GUI toolkit which is popular on the Linux desktop.
Originally Posted by RealNC
For me, like for others here that have expressed similar reasoning, its mostly down to either the 'real' or 'perceived' entry bar hanging way to high for gaining my 'casual' interest. But I need to get 'pulled into a project' deeply enough, before I become motivated to spend considerable amounts of my free time with.
So it boils down to, that contributing code to SOME opensource-projects takes to much of my time to get me to the point that I want to spend more time with it.
Pretty good reply.
Originally Posted by jonnor
Like a lot of things in life, getting good at programming takes persistence - you have to just keep doing it. Your first attempts will reflect your inexperience; as you keep revisiting old ideas and refining them it all improves. This can be a slow process at first, so it takes patience. It doesn't take real genius, but most people just don't have the patience to keep plugging away at it over and over.
Personally, I was a gcc maintainer from 1987 thru 1994 or so. My degree is in computer engineering, and I taught myself my first three programming languages one summer after 6th grade. Playing with code is something that I just really like doing, so I'm perfectly happy to spend hours at a time solving whatever programming puzzle is in front of me. If this isn't something you enjoy, then no, you're probably not cut out for contributing to a lot of projects.
I can pick up anybody's code and start to make sense of it in a few hours, comments generally aren't important to me. I've worked on the code for gcc, gdb, gmake, ld, gas, texinfo, tex, apache, tcp_wrappers, screen, X11, bash, tcsh, multiple kernels and drivers, mplayer, ffmpeg, glibc, embperl, pretty much any tool or code that a developer relies on, I've needed to fix. I'm also a core developer on OpenLDAP, and have been since 1999.
Mostly I code in C, occasionally in asm. But I use a lot of tools written in a lot of languages, and if something doesn't work right, or the way I want, I figure out how to fix it, regardless of what language it's in. java, python, perl, C++, postscript, whatever.
I don't think this is unusual, for a lot of the developers I've met. You either like this kind of work or you don't. If you like it, you will naturally figure out how to do what you want. If you don't naturally take the time to do that, then you won't. It has nothing to do with commercial viability - I don't stop to think "is learning this language going to make me more marketable" before diving into a code base. The only question that matters is "do I care enough about the problem at hand to solve it?"
And that's it - if you care, you will spend the time.