
I think that we probably actually get a fair amount of "passers by" who _could_ contribute, but for one reason or another don't. Some possible reasons they might have:
Good e-mail Bryce.
I think the things you mentioned are some of the really important factors about why people don't contribute. I've been using Inkscape for quite a while, but have never contributed any code to it. (yet) Partly that's because I started using Inkscape before I knew enough about programming to even write a shell script.
I think I just finished fixing a bug/feature and creating a patch today. With the patch, Inkscape automatically converts flowed text to non-flowed text when putting it on a path. I'll attach the patch to the bug tracker after this e-mail. :-) Here's what helped me get to this point and what would have gotten me here sooner.
++ Helped ++
1) Care enough to do it Most important was loving the project. I run Linux daily and use mostly OSS software, but I've never cared enough about any of the programs enough to do more than file the occasional bug report. If I didn't really like Inkscape, I would have just used Inkscape as-is and not worried about it. Inspiring people to care enough about a project to take the time needed is tricky though. :-)
2) Friendly developers community Even though I haven't contributed patches yet, everyone here was still friendly and answered questions. I was on the dev mailing list for a certain other project I like quite a bit, and asked a question about some of the art work which wasn't licenced in a GPL friendly way (it was for non-commercial use only). They practically bit my head off, saying that they didn't care. Needless to say, I don't ever plan on trying to interact with the developers of that project.
++ May have helped me contribute sooner ++
1) Better documentation, especially code comments. As I've poked arround the code for the last couple of months, I've had to use grep extensively and read through lots of functions to figgure out exactly what they are doing.
2) Developer directory Sometimes I've asked questions on IRC and no one online is *quite* sure about the answer to something. Having a sort of "Who's Who of Inkscape" page with a list of active developers, and what parts of Inkscape they work with would make it easier to know who to ask about different things. Even now, I know a lot of people by their handles, and know they're pretty involved in Inkscape but I have no idea what they do exactly. eg. Bulia, ACSpike, mental, rejon, Bryce, Alan (and others) -- I know you guys are always arround, but I don't know who to ask about what, and I don't know who's working on what. Apearantly ACSpike was working on the same thing I was.
3)"Paint by Number" My CS classes have taught me to be an good code monkey, so a paint-by-number type project where what needs to be done is mostly spelled out would have let me contribute a year or so ago. Most of my friends who 'program' are at the same stage. We can easily write the code if the specs are mostly cleanly laid out, but we have a hard time understanding the larger scope of the projects. I've probably been looking at the source code on and off for about 3 months now and was already familiar with Inkscape itself.
4) Some tutorials A newby training program seems to imply deadlines and such. For me at least, that doesn't work so well. Sometimes school and work are intense and I don't even turn on my computer for a week, other times I have a couple weeks of down time. What would work better for me is some tutorials. Basic stuff like how to get arround the SVG tree (access parents, siblings, children), how to manipulate node atributes, how to tell the screen to redraw (needed? I don't know yet), access the current selection, etc.
Thanks,