Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

Call it democratic software development, or open source on steroids if you will.

I'm not just talking about the possibility of providing a patch which can be approved by the library owner. Think more along the lines of how Stack Exchange works. Anyone can post code, and through community moderation it is cleaned up and eventually valid code ends up in the final library.

For complex libraries an elaborate system should probably be created, but for a simple library it is my belief this is already possible e.g. within the Stack Exchange platform.

Example

Take a library of extension methods for .NET for example. Everybody goes their own way and implements their own subset of what they feel is important, open-source library or not. People want to share their code, but there is no suitable platform for it. extensionmethod.net is the result of answering this call for extension methods, but the framework hopelessly falls short; there is no order, or structure at all.

You don't know whether an idea is any good until you try it, so I decided to create an Extension Methods proposal on Area51. I belief with proper moderation, it could be possible for the site to be more than a Q&A site, and that an actual library (or subsets of it) could be extracted from it.

Feel free to give feedback to this particular idea on it's proposal page on area51, but it is just meant to be an example. This question is meant to find an answer to the general idea of creating an open source software library moderated by an open community.

Questions

  1. Is it possible? What would be the main problems to such an approach?
  2. Has anything like this been attempted before?
  3. Are there platforms better suited for this?
share|improve this question

closed as off topic by Mark Trapp Nov 16 '11 at 21:16

Questions on Programmers Stack Exchange are expected to relate to software development within the scope defined by the community. Consider editing the question or leaving comments for improvement if you believe the question can be reworded to fit within the scope. Read more about reopening questions here.If this question can be reworded to fit the rules in the help center, please edit the question.

    
SE is not a code repository. It's a knowledge repository, and some parts of it have some small pieces of code that illustrate the knowledge. It's unlikely to work as a code repository. As far as being attempted before, see Boost. –  David Thornley Nov 16 '11 at 15:18
    
There's already a Stack Exchange site dedicated to peer reviewed code, Code Review. What's different in your proposal, other than it targets a specific platform and / or library? –  Yannis Rizos Nov 16 '11 at 15:50
1  
@StevenJeuris You can use Code Review with the intent to be able to extract a library out of it. A series of questions on a library specific tag, and you get voting, moderation and suggestions, all in a familiar format. If you do it sensibly, it could work - if it doesn't I don't see how another Stack Exchange would. –  Yannis Rizos Nov 16 '11 at 16:06
    
@YannisRizos: Not a bad idea at all. I might start a meta discussion about it on Code Review. The only problem I see is you would require specific moderation based on the tags of those questions. This could be confusing for users who expect those questions to be yet another Code Review question. –  Steven Jeuris Nov 16 '11 at 16:13
    
Specific moderation won't work, that'd be the only reason to go for your proposal than with Code Review. But do start a meta discussion and see what others may think. –  Yannis Rizos Nov 16 '11 at 16:16

3 Answers 3

As a direct response to this quote from the original question:

Everybody goes their own way and implements their own subset of what they feel is important, open-source library or not.

My two cents: Design by committee is a failure to start with. Do you really want to have to import every single feature every single person on the internet thinks is a requirement ( am looking at you Jakarata Commons ) just because you want one of them that may be useful for you? It becomes a race to the bottom of mediocrity at best!

Imagine a code base edited like a wiki. Every time someone reformats the code or renames a variable a war would start: that sounds really productive.

Yeah I really want to moderate that crap, oh wait, moderation, that isn't community driven or "social" anymore, whats the point?

Voting doesn't magically make the best answer pop to the top, I have answers I wrote that got ZERO votes and accepted with the checkmark as correct, where other incorrect in the worst way answers had 10+ votes.

Popularity != Quality or Correctness!

Just because 42 CS students up vote some horribly naive empirically bad implementation out of ignorance and 2 down votes from seasoned veterans doesn't make it the best just because it got the most votes!

share|improve this answer
    
Do wars break out on Stack Overflow when someone posts a solution which is upvoted higher than another? As to which features are imported, you could extract say, all features with at least 10 up votes or higher. –  Steven Jeuris Nov 16 '11 at 15:24
1  
@StevenJeuris: It doesn't happen often but it does happen - and then moderators usually clean up all the comments if it gets too out of hand, so the evidence doesn't last long. –  FrustratedWithFormsDesigner Nov 16 '11 at 15:26
1  
@StevenJeuris It's an interesting idea but not an original one, just add voting to an issue tracker and on a code review tool, and you're done. Several open source projects use similar tools. The easily come up with ways of resolving those issues part is the one I strongly disagree, social coding in one form or another has been around since the early days of the GNU project but still an easy & foolproof way to address such issues hasn't been found. As a result: bloated floss everywhere. –  Yannis Rizos Nov 16 '11 at 16:00

If you are talking about libraries of any size, a good library will have many internal dependencies, since code will be reused. It will also have a consistent public API that can evolve while being backward compatible, and if backward compatibility must be broken it will have a long period of supporting the old feature while it's in deprecated status.

Ideally it will have a consistency that makes it easier to learn, in small things like naming conventions extending to the architectural level. It should also have a clear purpose, so someone deciding whether to use the library can know if it's appropriate.

These things are all difficult, and even good, widely used, libraries don't get them all perfect. They require a high level of collaboration, agreement about goals, and some tough editing of features that have value in and of themselves but which collectively make the library lose focus.

These are difficult features to achieve by the process you describe. It isn't impossible, but I think if it worked then "through moderation" would likely end up meaning that you are close to the situation you described where you provide a patch to the library owner -I mean the ruling council -I mean the moderators.

I suppose there might be some value to having some kind of stack exchange-ish system where rejected patches are publicly visible in addition to patches that make it into source control, and have some sort of chance to get up-voted and gain visibility, but I'm skeptical that great patches languishing unnoticed is really an important problem in practice.

share|improve this answer
    
we already have a way to maintain a list of rejected patches in a version control system, it is called branching –  Jarrod Roberson Nov 16 '11 at 18:19

I think it would/will be extremely difficult to do this well. As Brooks pointed out decades ago, the primary strength of a product (and it applies equally to an operating system or a library) is not the individual features, but the "conceptual integrity" that defines the difference between mediocrity and greatness.

At least for my use of a library, the kind of development you're envisioning would probably lead to more bad than good. In particular, I want a library that I can quickly and easily compile and use, without spending time or effort on the individual parts. What you envision seems like it would probably require me to go through and pick which versions of which parts of the library I want, then (probably) spend a fair amount of effort getting those pieces to work together nicely. At least in most cases, that's a large part of what I'm trying to avoid by using a library in the first place.

In short, somebody has to set and enforce standards and guidelines for how the library will fit together -- and if nobody else does, I'll almost certainly have to do so myself. If I have to do so myself, I'm not really getting a library, but a loose collection of snippets that I need to turn into a library myself.

share|improve this answer
    
+1 On a large scale library this would indeed pose to be a problem. The main problem code being dependent on other code. There would have to be mechanisms in place to expose e.g. these dependencies as interfaces. That doesn't have to be the case for extension methods, as they are rarely dependent on other code, but exactly a "loose collection of snippets". –  Steven Jeuris Nov 16 '11 at 16:20

Not the answer you're looking for? Browse other questions tagged or ask your own question.