Coding Communities - What Works?
drDugan asks: "There is a resurgence in interest lately in information-based systems and websites for data sharing, structured data, and enabling communities to work together better. I'm working a contract for a new business that is trying to build a community to support people who write software. What communities are you a part of now that help you write and develop software? I mean this question in a general way, including both online communities and offline interactions (your office, LUGs, etc.) -- where do you find connection with other people to get information, answers, and inspiration?"
Nowhere else can I find people with the experience, breadth and width of skills, and general good-naturedness of character than right here at Slashdot. This site features the presence of the creme de la creme of the programming world, and has experts in any particular field always ready with answers to difficult questions.
Not only is this site good for getting good answers to technical questions, legal questions are also pondered thoughtfully and expounded on by knowledgeable experts. You can find exceptional quality of legal advice here at all hours of the day.
And best of all, this site is absolutely free (as in beer), so you don't have to pay a dime for answers to your technical questions, nor a penny for legal advice. I dare you to make the same claim about sites like http://www.experts-exchange.com/ or http://answers.google.com/
Sourceforge is a pretty good model. It works for a lot of open source software out there. There are a few similar communities out there. I'd start by looking at their features and figure out which ones meet your needs.
As for Q & A, I generally find usenet newsgroups are about the best source for programming questions. Depending on the particular newsgroup and topic, I can usually get answers inside of an hour and when it involves my business, time is usually pretty important.
My only offline resources are my co-workers who fortunately, are all quite talented.
I would suspect that most of what you'll want, code-wise, is probably largely available in parts and can be pieced together.
I'm in Grad school right now (Computational Engineering)... and I don't think I would survive if not for my awesome fellow grad students.
We all help eachother out... and the types of ideas generated about the way to do something are _way_ above any google search. Sure, google is good for a quick syntax check (or a man/info page... or doxygen)... but those places don't give you understanding about how to properly address a situation.
If I could suggest anything about a community site it would be this: Make sure that you make it easy for people to communicate. Do whatever you can to get the website out of the way, and make it as easy as possible for people to transfer ideas.
Friedmud
"Sprinting" I find works really well. We just got back from PyCon, a 3 day conference with 4 days of sprinting afterwards. Sprinting is where people get together, either in person or via the IRC, to work on a particular task or set of tasks. Evelyn and I along with a group of a some other folks worked to get the new www.python.org site up. It had been in process for the better part of a year, but we were able to do a big push to get it ready to put up that 4 days and a few days afterwards, coordinated via IRC.
Linux Users Groups can tend to put people with good ideas together, and our local LUG tends to push people talking about their projects at the meetings. I've gotten a lot of good feedback from talking about my projects to the group. A good way to get peer review for a 1 person project.
The LUG meeting is once a month. The rest of the weeks of the month we have a Hacking Society meeting at the coffee shop. The idea is to set up a space where we can folks can work on various projects, everything from resolving bugs on Debian and Python projects, catching up on e-mail, working on software or talking about ideas and projects, installing different distros or getting software or hardware working.
We had our first Hacking Society meeting 5 years ago and had 3 other people at it. Since then, we've had over 100 different people at our local meeting, and regularly get a dozen people every week. Other chapters of Hacking Society have set up in 5 other locations around the world, but only one or two of them are really active. For those ones, it's really been working well. I'd be happy to help others set up local Hacking Societies, see http://www.hackingsociety.org/ for more information.
Just connecting with the community of people doing things is very powerful motivation and provides ideas to help get more work into it.
Things like wikis and SVN/CVS servers and bug tracking helps put software together. As long as it can foster the communities of people to get ideas shared and motivation going around. Things like IRC and mailing list can really help out with the ideas and peer review and motivation.
Sean
It's completely dependent on what language I'm coding in.
When I was coding in PHP... php.net was an absolute godsend of being both a reference to all the functions and objects and a repository of user's experiences and tips for the items... almost all of my php issues were solved via that site.
When I've been doing Javascript code (which isn't a huge amount I'll admit), then I've found W3School's reference pages to be invaluable.
Now that I'm doing my coding in the open source language Laszlo I've found their included documentation that comes with the developer install (web based and with live examples to tinker with), and the community coding forums to be an enormous help, and have made learning and getting a lot out of this language really not that hard.
I really think that trying to localise coding support isn't going to work... the coders should just make use of the best forums and resources for the language they're using. Each time I have to use a new language I have a new folder in my bookmarks for reference pages and forums for that language that I find on the web... you find almost everything you need that way really.
And know how to use Google damn well!
You might want to try [http://www.invisionpower.com/ an invision power board]. A [http://www.google.com/search?q=invision+power+boa rd&start=20 google search on the topic] reveals that many [[FLOSS]] projects use it to host their own community. There are of course [Category:Internet_forum_software|other alternatives] you might find interesting.
Just a semi off-topic thought, but a good place to start would be [[http://www.mediawiki.org/ MediaWiki's official homepage]...
<ducking>
Hey, Windows users, there is no such thing as "forward" slash, there is only slash and backslash.
It's not exactly a "community" in the "let's all chat" sense, but a community has sprung up on Code Snippets, a tagged 'del.icio.us for source code'.. most notably around Python coding on cellphones. But there's over a thousand users so something was bound to spring up.
I've been a member there for a while for mapping in UT and learning to texture, map, and more. They offer more then just support forums. The makers of the site do tutorials (mostly video) and offer them for download. Some are paid, some are free.
Also back when I was doing my co-op for programming (they used VB) the Visual basic Programmers Journal by DevX released a 101 programming tips. Little routines that did specific things, like auto complete for drop down boxes and the like. I found that to be invaluable. So to summarize.
- Community forums
- Tutorials - both from members and you guys.
- Tips and tricks - Maybe done like a code database
It's a start and you can build from there.DarkMantle I been bored, so I started a blog.
Funnily, I just had a co-worker email about a solution to a problem he'd been having with some web programming stuff that took him a while to nut out. It's being implemented in a client's internal web-app, but the solution is something we will probably want to know about in the future... It's not an area I'm working on at present, so have no interest in looking at the solution now and diverting my attentions, but I just know it'll be something I will wish I had easy access to down the track.
So while what I said above holds for finding out the information in the first place, it would be great to have a company internal storage area for things that will be useful in more than one project. To that end we've actually been looking at various apps out there like NetOffice more.groupware, Sugar CRM etc.
Now when we were looking at these products it was from a sales, support and development standpoint... so there are features geared to sales teams and the like... but they all have file management, meeting management etc.
We'll be implementing a system like one of those soon, and I think it's going to help enormously for our team communication as we are situated on a number of sites.
He is a known troll. He harasses users like CyricZ unmercifully. He is probably responsible for his mod bombing. I'm not sure what his vendetta against him is, but I'm getting tired of it.
I'll be the first to admit that a cert doesn't mean much, basically it proves that you're at least a bit motivated to learn the material and are probably at the 35th percentile or above in talent (35th through 99th that is). But picking up a SJCP actually helped me land my last job at a C programming shop - I think they decided that skill might come in handy (so far it hasn't). And when you're cramming for one of these damn things, a little rah-rah support doesn't hurt.
Peace in Christ, my brother! It's long since I've posted due to the general persecution that we Christians have to endure on this site. May the Lord bless you and your projects.
But I have to agree with you, actually. Sometimes just taking some time to get away and sit quietly can really help me get a clearer understanding of the problem. A lot of the time, the problem is exactly that there are too many voices giving advice that it's not a programming problem but a problem of processing all those external suggestions! The solution in those cases is the complete opposite of finding a community. It is to find solace and solitude.
Sometimes when it's just you and God, the solutions become very obvious.
SlashDoter
Dupes seem to work for Slashdot.
I'm a member of the DSDEV "Nintendo DS" homebrew community. Having a community with wiki/cvs/forum/code samples/comments and bleeding edge compiling would be pretty interesting. The idea of having many projects located on a single server isn't really challenging but getting it to work WELL is the problem.
I've been looking and started developing something cheap out of PMWIKI - but doesn't really manage the code based on CVS well.
I myself am an Oracle DBA. I have been dependent upon Oracle's metalink system for quite sometime. Here is what I think makes it work:
1) Forum - Ability for users to post questions where responses can be made by both Oracle or other members of metalink. Forums, in there case, are broken down into categories and/or application Groups..eg. Database Server Administration, Backup and Recovery, Performance, etc..
2) Bulletins or Notes - Ability for privileged oracle reps to post information in regards to ways to do things that many had questions about or had confusion about.
3) Bugs - Ability for Oracle to post Bug messages to describe a bug, the test case, ways to reproduce, and solutions.
4) Mass Search - Ability to search any of the above documents types in one universal search engine.
5) Bookmarks - Ability to bookmark any of the above document types (Bulletin/Notes, Bugs, Forum Message).
6) Save Searches - Ability for users to save prior searches
7) Patch database - ability to search for software patches
The above is how Oracle and its users can leverage knowledge in a very efficient way. I suppose many IT companies could utilize a system such as this.
Getting a chance to have a discussion with the guy who runs the $10,000/day adsense site is just one of the more recent useful threads of community sharing I have experienced.
For my Java needs, I go to the Java Technology Forums http://forum.java.sun.com/index.jspa For any MS or SQL needs, I go to Tek-Tips http://www.tek-tips.com/ Both are free, and if you ask questions intelligibly, you'll get answers very quickly.
When I first got into programming, I relied heavily on web-based tutorials. While useful, I often felt I was missing a significant amount of context, and I didn't really understand the tools, either. I was able to get a few Python scripts together, though.
Later, a former prof of mine offered to teach me Objective-C and the Cocoa frameworks, and we met every week for about a year or so. He was very patient, and I read and coded quite a bit on my own; by the end, we were working on problems together and teaching stuff to each other.
The moral - if you can find a local guru, do so. They can facilitate learning in a manner books and websites can't.
I find that the good old newsgroups (with the addition of google groups) have always been very helpful in finding a required bit of information when needed.
I don't need more.
Of course it also helps to have a few friends gifted in specific aspects of development (quality systems, graphical, etc...).
When working with PHP, php.net is most definitely an invaluable online tool. It pretty much has everything you'll ever need to do anything, ever... Even things that have nothing to do with PHP. Failing instant answers from google or php.net I generally join an IRC channel and scream. It seems most people in the channels like me screaming. When I join very technical channels and scream and ask questions, I get fast prompt answers from people who LIKE me screaming and panicing in capital letters and asking smart questions. There has been the odd time where I've been banned, but my response to that is generally to join a different channel, often of spiritual, philosiphical, or religious topic, and start screaming in there. They also like my screaming.
A very good and important question (IMHO) because nobody knows everything. Unfortunately many corporations don't like the idea of sharing, they don't trust their own employes(?) and you can't just go to any of these meetings, seminars, etc.. without sharing. Not sharing your business secrets but your experience! Enough of that - I would say it depends, for a coder the peer and Google may be enough, for a programmer I would recommend LUGs, TUGs, SHARE, SUN and other user groups and for a developer IEEE, MOMS, ACM, SHARE, E3 and any possible seminars where you can start networking, you will find your peers! Of course - if you code games, get to know gamers, if you code stock transactions, get to know stock trading, if you code insurance applications, get to know insurance business, etc.. The business has user groups also, they may not speak 'C' but the information will be invaluable.
No kidding, some other people's source in comparision sometimes feels like a child's homework essay next to a master's printed novel.
In Soviet Washington the swamp drains you.
The Developer Shed Network[1] is a whole slew of sites and forums run by the same people (Jon Caputo and others). They have a lot of nice tutorials/articles, as well as various forums such as ASP Free[2], which is dedicated to Microsoft-ish technologies; and Dev Shed[3], which is geared more towards free and open-source technologies such as Apache, Linux/*BSD, XML, C/C++, MySQL/PostgreSQL/Firebird, PHP/Python/Perl/et al.
Trust me on this last one. I'm a moderator on many of the forums there and the people are always very helpful, polite, and (in most cases) respond to threads rather quickly.
[1] http://www.developershed.com/
[2] http://forums.aspfree.com/
[3] http://forums.devshed.com/
Parent needs a +1, ironic.
I find the google groups helpful, specifically: http://groups.google.com/group/comp.lang.lisp and http://groups.google.com/group/comp.lang.scheme however, they are probably only useful because there is an established group of people willing to answer questions. If you want to know how to form a new group which will be so friendly ... I have no idea.
Philosophy.
Codeproject ( http://www.codeproject.com/ ) is a Microsoft oriented development community. Members submit informational articles regarding specific implementation techniques for various MS frameworks (MFC, .NET/ASP).
:-)
This is a great example of a flourishing development community. Chris Maunder, the creator, is very visible in the forums and receptive to feature suggestions. There's a rating system for the submitted articles, so top submitter's egos are rewarded.
With close to 12,000 articles and 2.8 million members, it has to be one of the largest development communities on the net.
I think what makes this community flourish is that Chris doesn't try to pull any fast ones on the contributors. Your articles belong to you, and you can promote your consulting services ( as long as the article has relevant content ).
-- Jim http://www.runfatboy.net/ ( Exercise for the rest of us. )
I use the IRC channel of my local Linux User Group. (course I'm also slightly biased as it's administrator)
X(7): A program for managing terminal windows. See also screen(1).
If you're in NorCal, http://superhappydevhouse.org/ seems cool.
"What communities are you a part of now that help you write and develop software?"
http://www.codegeneration.net/
http://www.developersdex.com/
http://www.metamodel.com/
Judging by the above. You can guess what I do for a living.
Well, except for real life meatings, that covers pretty much all the important ones.
Wiki for the documentation
IRC for the quick anser or random chat
forum\mailinglists\newsgroups for the slow QA
Stuff from the forum\mailinglists\newsgroups and IRC should be refactored to the Wiki for reference.
Ok, so now you've got your platform. Now you only need an audience, well that's the tough part. You need people that are willing to help and you need to help new people seeking help to contribute in their turn. Nobody likes a leech.
Oh, and ofcourse keep these things as free and open as possible.
The irony is most coding community sites are poorly organized, poorly designed, and lack features.
I think it's because few coders put any sort of stock in appearances. It's a shame, because appearance really helps make a site (or product) feel "solid". Too many coding sites feel like they're barely held together with duct tape.
Poor presentation doesn't instill a lot of confidence that the content is worth anything.
I credit the majority of my skills to the fine folks at M*U*S*H ( http://mush.pennmush.org/ ). While the test and launch site for PennMUSH, a MUD game server, it *is* a social mush, and has a large community of players connected at most of the hours I'm on, and still plenty when I'm not. PennMUSH, a MUD in that it has a virtual world, with a programming language diku derivatives could only dream of, online creation and programming that allows anything from scrabble games to a casino with fully playable crap parlors, roulette, even poker of all types. From my own experience and others, if a quick googling can't find it, then asking a question on one of the channels will. This covers not only programming and software, but anything from cooking to mathematics, from writing novels to being an administrator for large projects.
Over the past month alone: I've taught some newer coders how to do pathfinding and searching. I've written sudoku solvers, held discussions (and eventually did a solution) on writing puzzle solvers in a language based on string interpolation (MUSHcode). I've laughed, I've cried, I've learned things I never guessed I'd learn. I've seen people grow in their skills - In English, computer languages, and more. It's a text based medium where neither profanity, poor English or general meanness is tolerated. Founded and headed by a psychology professor who dabbles in CS. Staffed by computer scientists, teachers, actresses, even EMTs and book authors. Almost half European. And active daily.
When I first joined, in 1998, I thought Visual Basic was all that. They introduced me to linux. To vi, regular expressions. AI, deeper CS, ocaml, python, perl, and more. Now I know a number of programming languages and paradigms. I could go on, but this thread's just on geekery and coding. Nevermind knitting, cooking, even public speaking, project management, raising kids (I'm still single, but there's a number of parents on there.) and more.
M*U*S*H: http://mush.pennmush.org/ - Or point your favorite text mu* client (I recommend tinyfugue) at mush.pennmush.org 4201
It's probably CodeProject. Beginner to very advanced projects alike, usually with relaxed licenses as well. You can find gold nuggets like the best tutorial I know for the lightweight Windows Template Library, along with a free vastly improved memory leak detector there. They also supports plenty of languages for Windows development, with a big share of articles and code on C++. A message board is added for each code project listed where you can discuss them, along with project unrelated forums for general coding discussion.
Beware: In C++, your friends can see your privates!
The projects I have been involed with that seemed to work well typically have some clearly defined programming standards which everyone is expected to use. In addition documentation (wether wiki or conventional). Also some of the best projects come with a few unit and regression tests that can also be used as examples by newbies.
Probably the most important is one of attitude... Some groups (like Spirit++ -- see boost.org and sourceforge.net/projects/spirit) are simply fun to work with. I have always found them to be kind, considerate and repectful (unlike a couple of others I will do the kindness of not mentioning by name).
The starting point is always the hardest. I currently lead a team that's been programing WoW addons since beta (over two years). I see new communities pop up all the time; some thrive and some don't. The most common communities tend to stem from 2 or 3 people collaborating together who are on fire about what they're doing and being very prolific. People gather around them initially to use their software or service. Eventually more people offer to contribute, whether they're asked to or not. Often times if you ask for help you get people that want to be taught, but the people that stick around are the ones that know how to learn. For a community to really take off you need a few people who know what they're talking about and a general population that knows how to ask effective questions.
The way our community has come together has been simultaneous through chat rooms and forums. Some people aren't comfortable of forums and prefer to say everything they want to say without being interrupted. Others want to immediately know they are being understood. IRC allows for quick spurts in productivity, especially when you get 5-10 people all engaging in a conversation or utilizing pastebin (or some equivalent) to optimize a piece of code. However IRC is prone to long down times (during which they need to be monitored to make sure SOMEONE is answering questions). The forums, on the other hand, are great for announcements, prolonged discussions and putting information in a place where many people can see and contribute. Just as the key to IRC is asking the right questions, the key to forums is being able to search effectively. Often times it's good to have moderators who siphon through the information and highlight (or vote in slashdot's case) pertinent information to be easily accessible to someone not familiar with the structure.
As for code: SVN + a web based counterpart. A web interface makes it more accessible and individual SVN clients makes it more convenient for frequent contributers.
For startup you will need to secure one or two big projects with devoted people. These people also have to be willing to mentor newcomers who demonstrate competency. One person can mentor only 1-3 people effectively at a time. The mentorship process is vital to a growing community, but it's not especially fast. Six months to a year is generally how long a young newcomer takes to progress from newbie to a competent contributer. Some are faster and some are slower. People should be working on their own projects or sub projects in under a year.
Once the site demonstrates competency and community people will be drawn to it. But it should always be changing and improving. As the community grows its host must grow too to accommodate them and adapt to their needs. In the case of a commercial endeavor you should definitely be adapting proactively, adding features BEFORE they are needed.
I'm still waiting for a web based utility for real time code editing: As I type it changes on their screen and highlights distinctively what each person has edited that I can run next to IRC (or with an integrated chat room). Maybe have a 'commit' button for integrated svn revisioning. It would also be nice to have web based side by side revision differences similar to http://wdn.wowinterface.com/ only on-demand from the SVN. Tools are fun! But people make the community.
http://www.perlmonks.org/ - this is The perl community forum. Recently it seems a bit crowded there - but it is still the forum where I would go to get help on general Perl matters. Mailing lists and IRC are good for more specific questions related to some particular library.
Good documentation makes all the difference - look at the PHP manual for a prime example http://php.net/manual/en/
Every page should describe one item (with examples) and have a moderated discussion *on the same page*.
Another useful addition to said manual could be a series of more abstract articles covering coding techniques, best practices, and common applications... again with a moderated discussion per article.
I find wikis just don't work as well as they could here, nor do forums or plain vanilla manuals. Combining the above elements from all three make what I would consider the best resource available.
Well, that's my $0.02 (CAD)
Kieran
i use myspace
Our team is Agile. You can get more information about Agile Software Development at this wiki page: http://en.wikipedia.org/wiki/Agile_software_develo pment#The_Agile_Manifesto
"Most agile methods attempt to minimize risk by developing software in short timeboxes, called iterations, which typically last one to four weeks. Each iteration is like a miniature software project of its own, and includes all of the tasks necessary to release the mini-increment of new functionality: planning, requirements analysis, design, coding, testing, and documentation. While an iteration may not add enough functionality to warrant releasing the product, an agile software project intends to be capable of releasing new software at the end of every iteration. At the end of each iteration, the team reevaluates project priorities.
"Agile methods emphasize realtime communication, preferably face-to-face, over written documents. Most agile teams are located in a bullpen and include all the people necessary to finish software. At a minimum, this includes programmers and their "customers." (Customers are the people who define the product. They may be product managers, business analysts, or actual customers.) The bullpen may also include testers, interaction designers, technical writers, and managers.
"Agile methods also emphasize working software as the primary measure of progress. Combined with the preference for face-to-face communication, agile methods produce very little written documentation relative to other methods. This has resulted in criticism of agile methods as being undisciplined hacking (aka Cowboy coding)."
Those are not "Google Groups". Ever heard of Usenet?
http://www.realultimatepower.net/ is a great source for information also, I really like the livedocs and forums available at macromedia.com for coldfusion/SQL programming
My friends and I started atlhack in Atlanta. The community happens in person at our favorite coffee house. Usually we discuss our creative technical ideas and egg people on to get them done. We track our progress and occasionally have discussions on our drupal website.
If you like open source development, it's wonderful to spend some time in the Freenode channel for the project you like hacking on. It's nice to be able to talk with people who are also interested in the same ideas you are, and not just work in a vacuum.
Freenode singlehandedly restarted my interest in IRC.
Any program relying on (nontrivial) preemptive multithreading will be buggy.
The problem is that while Slashdot is a good place for general technical-social discussion (the sort of stuff like Wired likes to talk about) and some technical things, it's a little limited for in-depth technical discussions. The stories fly by too quickly, whisking threads away, and the folks that read it are not all developers.
If you want to talk about techniques for developing software, you might get a good comment or two, but people are unlikely to keep going back and reading a thread.
Slashdot still isn't a perfect replacement for Usenet. If you read comp.lang.c or similar, you'll learn a lot more than you will from Slashdot about technical stuff.
Any program relying on (nontrivial) preemptive multithreading will be buggy.
While I absolutely agree and love SourceForge, I'm just cynical enough that the second I saw the title for this story, I thought "gee, why on earth do they think they need to advertise SourceForge on Slashdot with an AskSlashdot question ?"...
But I probably only thought that because it's the obvious answer.
Mistake #1:
a new business that is trying to build a community to support people who write software.
I have a project on sourceforge, if you have skills about the subject and want to join the work team, be my guest.. :)
http://www.sourceforge.net/projects/heavenos/ [sourceforge.net]
http://www.codingheaven.net/
The first is necessary to allow for coordination of all your developers. It needs to have an easy bug reporting and maintenence structure. It should have a CVS, discussion area, announcement area, and a documentation area. As I mentioned already, Sourceforge is the best example that I can think of that addresses this type of community.
The second, the language-specific community, is necessary as a suppliment. You need a place where you can turn to discuss a possible solution with the GURUs of that particular language or even just to show your thoughts to a fresh set of eyes. When I coded Perl, perlmonks was unrivaled in this aspect. As a PHP coder (now), I regret that the PHP community doesn't have anything that rivals perlmonks. At least there's php.net.
A really well designed community would have both. But this would be limiting in application scope. You might have a web development community with three or four language-centric sub-communities. But you won't be able to effectively support more than a few languages without the risk of being too broad.
I recently had an experience on how certain aspects of opensource software development work, and work together incredibly well.
I have been running Gentoo Linux as my sole operating system for over a year, I do not even own a copy of Windows. The system is used for development and general desktop computing stuff. Over time I have developed my own customisations and configurations that suit my way of working. Specifically I have a fluxbox setup with Xorg to run on a dual head display thanks to xinerama and nvidia TwinView. This has been working like a dream for me.
Recently however I realised that I wanted a specific user interface optimisation. I like to make use of having 2 monitors the screen real estate, so I have a web browser open and maximised on one monitor and my editor where I code, maximised on the other, along with an xterm running my test harness. Recently though, I realised that I spent far too long cycling (alt-tabbing) through windows on the other monitor, when I knew that the window I wanted was on my current monitor, it just didn't have focus.
So I logged into the #fluxbox irc channel, and I asked if it was possible to create a keypress (e.g. CTRL-TAB) to restrict window cycling to the monitor with the active window on it. Within 5 minutes, of my asking one of the fluxbox developers (_markt?) had prepared me a patch. All I needed to do, was to copy a different ebuild for fluxbox into my portage overlay and add a single line to patch the source. This ebuild was then set to download the fluxbox source straight from the current development branch apply the patch and install it onto my system. This included adding in an option to my display managers configuration which would allow me to select between my modified fluxbox, (normal) fluxbox, kde, gnome etc...
In short the gentoo portage system is tailor made for opensource, and it makes it incredibly easy for users and developers to support. This coupled with Internet Relay Chat allowing users and developers to easily request and test new features make for a powerful system. Not to mention the use of traditional unix patch tools, version control (svn/cvs) and a bit of webspace to facilitate file transfer.