Defining Open Source

July 6, 2007

As I mentioned two weeks ago, my plan is to contribute $10,000 to the .NET open source ecosystem. $5,000 from me, and a matching donation of $5,000 from Microsoft.

There's only two ground rules so far:

  1. The project must be written in .NET managed code.
  2. The project must be open source.

The first rule is simple enough; although mono and subversion are great open source projects, they aren't written in .NET managed code, and are therefore totally ineligible. But number two is where I hit a roadblock: how do you tell if something that calls itself "open source" is really open source? Many projects think they are-- or at least some users may think they are-- but they really aren't.

NDoc is an example of exactly this kind of tricky misunderstanding, per a comment Chris Nahr left on a related post:

 

If [other people contributing] was his wish he kept it to himself. The source code for NDoc 2.0 was never released -- Kevin claimed licensing issues as the reason. No one else could contribute, except by mailing him bug reports on his (binary-only) alpha builds.

Kevin is now supposedly passing on the Sourceforge administration of the project to two other guys; I hope we'll finally see a public source code release again so that willing engineers actually can contribute once again.

I want to avoid these kinds of problems.

To that end, here are a few criteria we need to evaluate for each nominated project, to ensure that they're not just paying lip service to "open source":

 

  1. The project must use an OSI approved license, or the permissive or reciprocal shared source licenses from Microsoft. (I have to include that rider because part of the OSI's pissing match with Microsoft is not formally recognizing Microsoft's licenses, even though they're absolutely in the spirit of open source.) Pick a license, any license! If your project does not have a license, or if you fail to make it stupid easy for us to determine what license your project uses... your project is ineligible.

     

  2. The project must use a commonly available method of public source control. SourceForge, CodePlex, Google Code, whatever. Other developers should be able to retrieve the read-only public code using a source control tool, and potentially check in changes to the codebase if granted appropriate permissions. If the only way to get to the source code is via HTTP download of a ZIP file... your project is ineligible.

     

  3. The project must provide public evidence that it accepts and encourages code contributions from the outside world. Is a project truly open source if it only has one developer? Is a project truly open source if it has a cabal of three developers who summarily ignore all outside suggestions and contributions? All I'm looking for here is evidence of some kind of community. It doesn't have to be a large one, necessarily, but it has to be there. The spirit of open source is active community development. If you can't show a decent history of checkins from a reasonable variety of contributors... your project is ineligible.
  4.  

     

This maps fairly well to the "four freedoms" of the Free Software Foundation:

 

  • The freedom to run the program, for any purpose.
  • The freedom to study how the program works, and adapt it to your needs.
  • The freedom to redistribute copies so you can help your neighbor.
  • The freedom to improve the program, and release your improvements to the public, so that the whole community benefits.

So now the vetting process begins.

I need your help to figure out how many of the projects nominated in the comments actually meet the criteria I've outlined. I've put a read-only spreadsheet online via Google documents which contains all the projects people nominated in the comments to my original post. But I can't seem to make it editable by the world. I can only invite people in as "collaborators". Supposedly this link allows anyone with a Google account to be a collaborator. Try that first.

Alternately, if there's a better way to collaboratively edit a spreadsheet-like list, I'm open to suggestions!

Posted by Jeff Atwood
56 Comments

Microsoft never submitted their licenses for approval. Jeff is wrong and insulting to claim the fault lies with the OSI.

OSI on July 9, 2007 2:18 AM

I think you're being a little unfair to NDoc. NDoc 1.* was (and is) open source, available at http://ndoc.sourceforge.net/. The original developer decided not to make NDoc 2 (which was never released in any public form) open source -- I regret that, but it's his right, I guess. I don't see anything in your three rules which would prevent such a circumstance occurring again.

John on July 9, 2007 2:18 AM

Sign me up with those who think requiring that the code be accessible through some particular mechanism is a ridiculous requirement. Whenever I find one of those on the net, I generally just tell the folks to go dry-hump a rotted knothole, because I don't have time to set up all the picayune version control systems that exist out there. (There isn't one of them that's easy to set up, or easy to use. Seriously. Am I made of free time? Does it grow on trees somewhere?)

Brook Monroe on July 9, 2007 4:26 AM

What about a wiki?
Anyway, just added Subtext and filled in all the info
Simo

Simone on July 9, 2007 5:05 AM

"Is a project truly open source if it only has one developer? Is a project truly open source if it has a cabal of three developers who summarily ignore all outside suggestions and contributions?"

If it has an OSI-approved license, I think it is. After all, if the authors don't take contributions, you can always fork the project. And if the authors get pissed, point them to their own license. It's as simple as that.

Felix Pleoianu on July 9, 2007 5:21 AM

Could someone point me to why the OSI doesn't want MS licenses?

I only could find old eWeek news which suggested MS didn't submit them:

"Someone submitted the Microsoft Community License, one of our Shared Source licenses, to the OSI without our knowledge or approval, but the OSI contacted us and asked if we wanted them to proceed with that," said Bill Hilf, Microsoft's director for platform technology strategy. "We told them that we did not want to be reactive and needed time to think about it."

and

"So far, Microsoft's licenses have not yet been submitted to License-Discuss for public discussion, but OSI is hopeful that they will be," she [Danese Cooper] said.

Peace,
-stephan
--
Stephan Schmidt :: stephan@reposita.org
Reposita Open Source - Monitor your software development
http://www.reposita.org
Blog at http://stephan.reposita.org - No signal. No noise.

Stephan Schmidt on July 9, 2007 5:46 AM

Personally, I don't see how any of the three requirements except #1 is required for it to be "open source" (rather than "collaborative open source", say), since as long as the code is freely available and not restricted from re-use, anyone can modify and host the modification any way they want.

(Not that it really matters, of course; your goal is presumably to reward interesting projects that Iare/i collaborative, not merely open source, as I see you say in the comments above.)

It is hilarious to see the Open Source Definition Wars, though. I'm glad I'm not a True Believer, even of the relatively reformist OSI school, let alone the Doctrinaire Stallmanites.

Sigivald on July 9, 2007 5:56 AM

I've added the information for BlogEngine.net

Clarence on July 9, 2007 6:11 AM

Hmmmm....does anyone have a link to some article detailing why it's OSI that are at fault here, as implied by Jeff?

According to[0][1] MS explicitly requested that OSI not evaluate the license. Sounds more like it's MS that have the stick up their ass to me, and that the OSI would happily evaluate MSs licenses on the same criteria as all others.

Until some 3rd party I trust[2] has had actual lawyers look over MSs licenses for me, I'm not going to use them for anything. I gave up trusting MS on anything a long time ago.

So, the question is, why don't MS want their licenses looked over by the OSI? What are they afraid the OSI will find?


[0] http://www.eweek.com/article2/0,1895,1875238,00.asp
[1] http://slashdot.org/article.pl?sid=06/08/23/0211232
[2] Currently limited to OSI[3], the FSF[4] and debian-legal[5]
[3] http://www.opensource.org/licenses/category
[4] http://www.fsf.org/licensing/licenses/[6]
[5] http://www.debian.org/legal/licenses/
[6] Which lists "Microsoft's Shared Source CLI, C#, and Jscript License" as "Non-Free", with reasons why it falls into that category.

Adam on July 9, 2007 6:20 AM

Isn't all this discussion about MS Shared Source licensing moot? Are there any non-Microsoft projects that actually _use_ this license?

David Avraamides on July 9, 2007 6:29 AM

Maybe it's moot WRT the issue at hand, but this blog is pretty well respected by search engines. If people search for "microsoft open source license" and see this quite high up in the list, and there's an unchallenged assertion that OSI are instigating some kind of pissing contest with MS over certifying their licenses, they might be likely to believe it.

I just want something to back up that assertion as I can't find anything myself, or an acknowledgement that it's MS who are the only ones who stand in the way of their licenses being certified.

Or, if such an assertion was unintended (it's entirely possible I'm reading the original post wrong) then a note that that's the case would be nice.

Adam on July 9, 2007 6:50 AM

I would say CastleProject by far, and then Cuyahoga, Nunit, Log4net and Nini, if you want to give the prize to a wider community projects.
For something more specific (with smaller communities), but I believe still usefull, and releated to the field in which I am working (GIS), I would say: MSSqlSpatial, NetTopology Suite, SharpMap, NHibernate Spatial, and zigGIS.

Paolo Corti on July 9, 2007 7:31 AM

I would say CastleProject by far, and then Cuyahoga, Nunit, Log4net and Nini, if you want to give a prize to a wider community projects.
For something more specific, but I believe still usefull, and releated to the field in which I am working (GIS), I would say: MS Spatial, NetTopology Suite and zigGIS.

Paolo Corti on July 9, 2007 7:32 AM

retrieve the read-only public code using a source control tool, and ***potentially*** check in changes to the codebase if granted appropriate permissions.

What's the difference between checking-out the source code from SVN (or whatever) without being able to submit changes, and downloading a ZIP file containing the latest build? Since write access to the codebase is optional (in your requirements), I can't see where the difference is. They just are two different methods to retrieve the latest builds (and IMHO the ZIP file is way simpler for the users).

Anyway, we (ScrewTurn Wiki) have a private SVN repository, and we're not going to make it public just to be eligible (it wouldn't be fair, and I don't want it to be public anyway), but we upload a nightly build every night, for both the current (2.0.x) and next (2.1) versions.

We're starting to have a pretty big community, just take a look at out forums: there are guys who post plugins, patches and improvements.

Any thought?

Dario Solera on July 9, 2007 7:34 AM

The project must use a commonly available method of public source control. SourceForge, CodePlex, Google Code, whatever. Other developers should be able to retrieve the read-only public code using a source control tool, and potentially check in changes to the codebase if granted appropriate permissions. If the only way to get to the source code is via HTTP download of a ZIP file... your project is ineligible.

This one doesn't make sense:

* "Public source control" seems to mean "public FFA project host", which is stupid, one can have a world-readable source control without using public hosts e.g. http://selenic.com/repo/hg?style=gitweb is completely public yet on a private host

* For a very long time, the Linux kernel worked through tarball downloads from public repositories, are you saying that it wasn't "open source" because there was no public official SCM repo?

* Any sizable OSS project will only have a very small core of people with the commit bit, often a single unique maintainer and sometimes a set of "core devs" who don't have commit rights but are trusted by the main maintainer

Seriously, this point doesn't make sense. If I can trivially get the source and can send patches back to the maintainer for review/inclusion, the "four freedoms" of the FSF are perfectly fulfilled and I don't see how you could say the project is not "open source".

Masklinn on July 9, 2007 7:34 AM

I have two comments.

The first is on the requirement that there be contributions from users. I've found the amount of contributions one gets to one's Free Software project depends greatly on the kind of project it is. I had a programmers tool (a parser generator) that had only a few users, but more contributions than I could keep up with. On the other hand, I had a decidedly end-user program (the SETI@Home Service) that had tons of users, was mirrored on two continents, but I never had a single source contribution from a user.

The second comment is about your licensing allowances. Others have talked about the fact that MS's "share source" licenses[0] are *not* Open Source, so I won't get into that. However, they do *not* support the 4 freedoms either.

* The freedom to run the program, for any purpose.

The "shared source" licenses do not allow use for "commercial purposes" or distrubtion to anyone who is going to use it for "commercial purposes".

* The freedom to study how the program works, and adapt it to your needs.

Again, if my needs happen to be "commercial", I can't adapt it to them.

[0] http://msdn.microsoft.com/msdn-files/027/001/901/ShSourceCLIbetaLicense.htm

If you want to support "shared source" licenses, that's fine. However, you shouldn't talk about them as if they are OSS or Free Software, as they are not.

T.E.D. on July 9, 2007 7:46 AM

T.E.D. - the OSI open source defintion[0] does not include the FSF's "four freedoms"[1]. Licenses which the FSF certify as "non-free" can still be "open source" according to the OSI.

[0] http://www.opensource.org/docs/osd
[1] http://www.fsf.org/licensing/essays/free-sw.html

Adam on July 9, 2007 8:01 AM

Adam wrote:
Until some 3rd party I trust[2] has had actual lawyers look over MSs
licenses for me, I'm not going to use them for anything. I gave up
trusting MS on anything a long time ago.
...
[2] Currently limited to OSI[3], the FSF[4] and debian-legal[5]

Actually, the FSF *has* looked over MS's licenses for you. It has been determined to be a "Non-Free Software License", which is the lowest designation of freedom they give. From http://www.gnu.org/licenses/license-list.html :

The following licenses do not qualify as free software licenses. A
non-free license is automatically incompatible with the GNU GPL.

Of course, we urge you to avoid using non-free software licenses,
and to avoid non-free software in general.

There is no way we could list all the known non-free software
licenses here; after all, every proprietary software company has its
own. We focus here on licenses that are often mistaken for free
software licenses but are, in fact, not free software licenses.
...
Microsoft's Shared Source CLI, C#, and Jscript License

This license does not permit commercial distribution, and only
allows commercial use under certain circumstances.

Microsoft has other licenses which it describes as “Shared
Source”, some of which have different restrictions.

T.E.D. on July 9, 2007 8:09 AM

Adam wrote:

T.E.D. - the OSI open source defintion[0] does not include the FSF's "four freedoms"

True. I'm sorry if I implied they did, I certainly didn't mean to. I only went into the four freedoms because Jeff put them in the OP. Other people (including yourself) seem to be doing a good job of explaining why "shared source" != Open Source, so I didn't go into that.

T.E.D. on July 9, 2007 8:16 AM

T.E.D. - Um, yeah. I already pointed that one out. See footnote 6, which applies to footnote 4. They've not commented on MSs permissive[0] or reciprocal[1] licenses though.

[0] http://www.microsoft.com/resources/sharedsource/licensingbasics/permissivelicense.mspx
[1] http://www.microsoft.com/resources/sharedsource/licensingbasics/communitylicense.mspx

Adam on July 9, 2007 8:19 AM

Please clarify whether the projects must be developer tools or not. In a previous post on this matter, many commenters were under the impression that they must be, but I don't recall you saying such a thing.

brian on July 9, 2007 8:24 AM

Like others, I also have to question your stated requirements to be eligible. Public version control systems do not make a project more or less Open. In fact that requirement does not address any of the requirements identified by the OSI (http://www.opensource.org/docs/osd). The version control requirement seems to be an arbitrary requirement that is not in keeping with the generally accepted definition of what constitutes Open Source. Even a thorough reading of the Free Software definition does not support this restriction. In fact, I have not seen any definition of Open Source or Free Software that makes any distintion with how the software source code is made available. The requirement is clear - give people access to the source code and allow them to change it if they desire. No where do the generally accepted definitions say you have to release nightly builds, monthly builds, repository access or the like.

Where I really have a problem is that you say on one hand you are seeking to help projects that promote community and are in keeping with the spirit of Open Source, but then create requirements that would exclude a project like DotNetNuke which arguably has one of the largest and most active Open Source communities in the .Net space then it would seem that the requirements are not in line with the stated goal.

In the end it is your "program" and you have the right to determine which projects are eligible for awards, but if you are going to start out by trying to re-define Open Source then maybe you should pick a new term like "Jeff's arbitrary project list that may include some Open Source projects". Please don't insult many of the great OS projects out there by claiming that they are somehow not a "real OS" project because they don't meet your definition.

Joe Brinkman on July 9, 2007 8:35 AM

The project must be written in .NET managed code.

In other words you mean to say "i am a M$ lackey!" :P

TH on July 9, 2007 8:41 AM

In other words you mean to say "i am a M$ lackey!" :P

It's his money and he is a .Net fan (and dev?) so that requirement is understandable, really

Masklinn on July 9, 2007 8:44 AM

Everything* on there as of this moment now has a URL entered, at the very least- and about half have much more detail.

* = Bar two exceptions where the title was either a typo, or too generic and just couldn't be found on a search engine.

Will on July 9, 2007 8:55 AM

Jeff laid out his definition for us

He's attempting to define what "open source" is, at least to him, which is a quite complicated matter.

whatever other Communist never-profit-from-this-software-ever guidelines the FSF has put out.

I understand that you hate the FSF and that you hate your own freedoms, but don't say the FSF licenses are "never-profit-from-this-software-ever" license, because it makes you look really stupid.

He just said that there has to be a public, active repository of code, so that it helps advance our craft.

Which doesn't make sense, you don't need a public SCM repository to "advance your craft" or even to contribute.

Masklinn on July 9, 2007 8:57 AM

He didn't specify GPL, or GPL "compatible", or whatever other
Communist never-profit-from-this-software-ever guidelines the FSF has
put out

Heh. The really funny thing about this comment is that its the *Microsoft* licenses that stipulate no commercial use. In fact, if "shared source" didn't have this (Communist?) provision, they might be GPL compatable. Its the FSF that is fighting to retain your right to make money using the software, and Microsoft that is fighting against it.

T.E.D. on July 9, 2007 9:25 AM

Good Lord! All these conditions do not seem to make it very attractive for someone to contribute to the open source community.

As an engineer who works for an organization whose goal is to make money, I would support anyone that writes reusable code and licenses it out under GNU GPL. I look for code that gives me a good starting point to customize and include in my own products and I am happy to acknowledge it in my license agreement.

An engineer that happens to write good code on July 9, 2007 9:49 AM

Good Lord! All these conditions do not seem to make it very attractive for someone to contribute to the open source community.

As an engineer who works for an organization whose goal is to make money, I would support anyone that writes reusable code and licenses it out under GNU GPL. I look for code that gives me a good starting point to customize and include in my own products and I am happy to acknowledge it in my license agreement.

Engineering software developer on July 9, 2007 9:50 AM

Brook Monroe, you may want to try Bazaar (http://bazaar-vcs.org). I used to think like you, that no VCS is worth the hassle, but then I discovered this one. Shameless plug: see my June 30 blog post.

Felix Pleoianu on July 9, 2007 10:12 AM

What about setting up a "scholarship"? Maybe something similar to the Google Summer of Code for college student.

Maybe putting some aside for a grant? Let it build up interest and dole out the money bi-annually?

Scott on July 9, 2007 10:20 AM

T.E.D.:

Please note that Microsoft has several 'Shared Source' licenses. The ones that Jeff mentions - 'permissive' and 'reciprocal' (more correctly called 'community') do not restrict use of the software or derivatives to only non-commercial use. (MS also have 'limited' variants of these licenses that restrict use of the software or derivatives to Windows platforms only).

I'm not a licensing expert, but to me the 'permissive' license seems similar to the BSD license, and the 'community' (or 'reciprocal') license seems similar to the MPL. They have a patent claim poison pill clause that I believe is not in the BSD license, but the MPL has a similar provision.

It's the 'reference' license that is basically read-only. Note that this license is far more restrictive than just disallowing commercial redistribution - it does not permit modification at all (commercial or not). It's basically a look but don't touch license.

mikeb on July 9, 2007 10:59 AM

I just wanted to make a brief comment on criteria #3, "provide public evidence that it accepts and encourages code contributions from the outside world".

My CodePlex project has a relatively large user-base considering it is a very niche solution, but I have found most of my end-users contribute to the project not with code but with feature requests or bug reports, which I encourage and accept by implementing the feature or fixing the bug.

I would be ecstatic if I got more code contributors, but I am just as happy to have active end-users who may or may not be technically oriented but want to contribute to the project in other non-coding roles such as testers, documenters, etc.

I feel you may be making the the vetting criteria too narrow if you only look at 'code contributors'. Projects can have an active community around them that demonstrates the projects commitment to encouraging and accepting outside feedback without having code contributors. In many ways I think how responsive you are to your community's feedback is a better demonstration of "freedom to improve the program, and release your improvements to the public, so that the whole community benefits".

I would hope you might consider these other types of commitment to community (like CodePlex's discussion and issue tracking features) as just as valid as having a variety of people contributing code.

Brian Kuhn on July 9, 2007 11:01 AM

I think it's somewhat of an overstatement to suggest that Mono is not written in .NET managed code. The Mono runtime is written in native code, of course, but the bulk of Mono is managed code. It's not just the class libraries -- even the compiler is written in C#.

http://www.mono-project.com/CSharp_Compiler

Perhaps it makes sense under these rules to nominate pieces of Mono, then -- MCS, MCL, XSP, GTK#, ...

Derek on July 9, 2007 11:12 AM

I just put my online video editor project onto SourceForge and their system REQUIRED that I accept one of the OSI licenses, as well as include the source code (as a zip file) with each package distribution. There was no requirement to put the project in CVS or SVN, though I plan on doing that once someone expresses some interest in working on the code.

It's silly though to say the project isn't open source or free software until I do this - folks have access to the code and a license to use/change it. Since it's an Actionscript project I'd actually be making it less 'free' by insisting they get the source from a repository, since few Flash programmers are familiar with these systems.

MovieMasher on July 9, 2007 11:15 AM

I think you may need to be flexible in your last requirement. A project may need your funding in order to get to a level that will attract a community.

All open source projects have this chicken-egg problem. You need to have an interesting, mostly working prototype to get people interested in joining the development community, and you need a development community in order to build up the project with any kind of rate of speed.

Reed on July 9, 2007 11:27 AM

@Dario Solera all those who stemmed their arguments from Dario's post:

The word he used was, as you also emphasized, "potentially". This is a whole lot different than "optional." If you want to contribute to a source controlled project, you contact the developers and obtain write access. Just the existence of a VCS provides this potential. Whether the devs grant access to you and me is another matter.

If you can "check out" the code in zip files, yes, that's more convenient. And if you can "submit" your modifications to the dev team via e-mail, even with advanced methods such as unified diffs, well, that's an old fashioned draaag, really.

I believe this requirement is not related to the project being open source, but the development environment of the project being more sophisticated. Even if you are writing an app by yourself for your own use, it is sensible to use a VCS. And if there is more than one (1) developer in any given software project, not to use a VCS is simply insensible.

I admit that ActionScript projects and the like may require additional tweaking over the standard VC procedures and the usage may get a little getting used to, but folks gotta somehow keep up, methinks.

Ishmaeel on July 9, 2007 12:48 PM

If I remember correctly you had two different prize categories, one for emerging and one for established projects. How does the community/contribution requirements differ between the two? I'm just asking because it would seem that an emerging project would be more likely to have a small community. For example in my project (NBusiness) it's been pretty much just me doing the checkin's so far though I have had one other person do some checkins and a few other technical discussions that have directly influenced the features / changes in the code. Also, on the main wiki page there is an open call for developers even though no one has yet expressed much interest in contributing. I also haven't had much exposure or advertising, I could probably do more of that. I've been spending too much time coding I suppose ;)

Justin Chase on July 9, 2007 1:04 PM

I think you may need to be flexible in your last requirement. A project may need your funding in order to get to a level that will attract a community.

Yes, of course! The last criteria isn't a white glove test; it's just a check for basic evidence that the project actually follows through on community contributions in some way.

Compare with NDoc, which was "open source" in name only..

Jeff Atwood on July 9, 2007 1:27 PM

"If you want to contribute to a source controlled project, you contact the developers and obtain write access. [...] if you can "submit" your modifications to the dev team via e-mail, even with advanced methods such as unified diffs, well, that's an old fashioned draaag, really."

Ummmm......sorry to burst your bubble, but if you want to contribute to an existing open-source, VCS controlled project, you nearly *always* email (unified) diffs to an existing developer. If you contribute useful patches regularly for a while, say, 6 months, and the patches are consistently good and hardly ever need changes before they go in, then you *might* get write access to the repo.

However, in some cases you'll still be expected to send your diffs to at least one other developer before check-in for a cursory review, just to make sure you weren't going to do something dumb by mistake. But, at this point, you'll probably also start to get patches mailed to you for review, either from other new (or part-time) contributors, or from other devs with write access who can now send their patch to you for *their* cursory review.

But getting write access to the repo to *start* contributing? Nuh-uh. Doesn't work like that.

Adam on July 10, 2007 3:07 AM

I don't know about the NUnit guy's opinion, but I do know that Bill gates has absolutely no problem with taking BSD licensed code and putting it in proprietary software, and not releasing changes back to the community.

So I'm not entirely sure why taking open soruce code, adding features, and re-licensing as closed source could possibly be a problem - it seems like established Microsoft behaviour. And it's even entirely legal.

Even with the evil-commie GPL, the copyright owner can re-license at will. Existing licenses are still valid, but the copyright owner's new work is still legally licensed on its own terms. Which, of course, is why it's important to manage contributors - because if you have 500 people contribute a line of code each they still own their line even if they have licensed it, and only the owner can re-license.

Whatever on July 10, 2007 5:48 AM

As John said above, I think you are being a bit unfair to the NDoc project, and relying in Chris Nahr's opinion rather than fact.

NDoc was GPL licensed and the source was freely available on SourceForge. As I understand it, Kevin's 'NDoc2' was a separate code-base and I doubt he had the inclination or ability to prevent anyone else contributing to the original project; there was at least one other SF admin and a dozen or so registered developers with CVS access!

In many cases projects *are* maintained and managed by only a small 'cabal' of programmers. If these people leave, then sometimes the project will stop. Other times the project will be taken up by a new group - I believe this was the case with NDoc; the original developers left, and Kevin and Don picked up the torch and ran with it. Sadly, when they called it quits no-one else did the same...

George on July 10, 2007 12:40 PM

I looked briefly at the MS community license, and basically it's a GPL-like copyright grant, along with a patent grant for the specific code. Doesn't look too bad, IMHO, the main objection is the preamble:

"This license governs use of the accompanying software. If you use the software, you accept this license. If you do not accept the license, do not use the software."

..which I don't think has any legal basis, and (from an FSF viewpoint) the fact that it is easily subverted for proprietary projects, since it applies on a file-by-file basis.

-k on July 10, 2007 1:07 PM

@Adam: Don't worry, no bubbles bursted. I am not under the illusion that OS projects are like the Wikipedia. As I said, whether you and me get access is some other matter. A particular dev team might be very stingy about their "initiation rites", or "nearly *every*" team might be so (what's that about emphasizing "always" just after "nearly", btw?), however, my point was entirely different.

If you have a project, version control is a must-have.

If you have a VC system, making it accessible over the net is so trivial that I cannot imagine why anybody would keep their VCS confined to their private network (he says, and adds after a dramatic pause: "for their OS projects").

Those who criticized Jeff's requirement made it sound like it was unreasonable (somebody even said "ridiculous"), whereas having a public repository IS The Reasonable Thing(tm) to do.

I don't see it as Jeff trying to redefine the OS concept. He was simply putting forward a sensible requirement for where his money would be going.

Ishmaeel on July 10, 2007 1:29 PM

As a long-time .NET OS developer, I feel deeply ashamed that my project is even mentioned in this thread.

Referring back to some of the key phrases in the a href="http://www.codinghorror.com/blog/archives/000894.html"original post from June 25/a, it appears that all of the publicly stated goals have been conveniently forgotten:

"open source projects are treated as second-class citizens in the Microsoft ecosystem"

hmmm... I now see specific .NET OS projects singled out and treated worse than second class citizens

"Many highly popular open source projects have contributed so much to the .NET community, and they've gotten virtually no support at all from Microsoft in return."

rather than acknowledging the contributions, I see the program sponsor actually publicly undermining the value of specific projects.

"Open source software is at its best when you aren't obligated to do anything at all other than use it."

totally agree... so why did you change your mind?

"given the disappointing lack of official support for open source projects in the Microsoft .NET ecosystem, it's time for us to band together and do something about it."

I love the use of the word "us" in this phrase. I now understand that its time for "us" to behave as individuals and alienate as many projects as we can.

If the program sponsor had certain .NET OS 'favorites' from the beginning, why not just give them the money, rather than trying to further splinter the already fragile .NET open source community? It appears that the title of this site ( 'Coding Horror' ) has taken on a whole new meaning lately. Thanks for nothing.

Shaun Walker on July 11, 2007 5:05 AM

Re: Shaun Walker on July 11, 2007 04:05 PM

Why is everyone getting in such a hissy over this? If nothing else, the coding horror community came together to create a huge list of GREAT open source .Net projects and raise awareness of the variability in open source licenses.

While this particular gesture may not be .Net Open Source's silver bullet as some make it out to be (and others bash for it not being), the gesture has opened a dialog and further raised awareness of .Net Open Source.

Also, Shaun, if you'd like to remove DotNetNuke from the list, there is nothing stopping you. The spreadsheet is open to the public for editing.

Michael on July 12, 2007 2:30 AM

If the program sponsor had certain .NET OS 'favorites' from the beginning

I'm trying to make sure projects that use the term "open source" actually are-- the final result will be determined by popular vote.

I don't have any favorites. I'm not clear why you think this is true. Can you elaborate?

Jeff Atwood on July 12, 2007 5:45 AM

hmmm... I now see specific .NET OS projects singled out and
treated worse than second class citizens

I assume by "specific .NET OS projects" you mean DotNetNuke. I don't think it's fair to imply that Jeff is intentionally singling out DNN to be ineligible.

As I wrote in a comment to Joe Brinkman's blog (http://blog.theaccidentalgeek.com/archive/2007/07/11/re-defining-open-source.aspx)
if you read carefully, the criteria Jeff chose are meant to be *easily verified* and meant to filter out projects in which the code is never released, or in which there is no real community.

This is not to say that one person projects can't fit the technical definition of "open source", just that he wants to benefit projects with a decent community. After all, he's putting up his own money.

I assume you take issue with criteria #2...

The project must use a commonly available method of public source
control.

This would seem to rule out DNN. However, in my view, this appears to be the law of *unintended consequences* at work, not some sort of exclusionary tactic initiated by an underground cabal seeking out DNN's demise.

DNN quite obviously meets every reasonable definition of a successful Open Source project on .NET. It has one of the largest, if not *the* largest community for a .NET open source project. If any project deserves an exemption from that criteria, it would be DNN. And in fact, it was added to the spreadsheet.

Again, I can't speak for Jeff, but my assumption is that rule was not meant to weed out DNN, but to weed out half-assed projects that have no real community around them.

Haacked on July 14, 2007 1:01 PM

@Jeff

I think the problem is that you said "how do you tell if something that calls itself "open source" is really open source?".

In the context of this and your other posts about your donation I guess what you mean to say is "what do the rules of this particular donation consider Open Source" but I think it is just as easily read as, well, "What is a really real open source project". The difference, I would say, is that the former should not be upsetting to someone who consider themselves an OS project but don't meet all your requirements, whereas the latter might be.

But assuming you meant the former, I still think you could have been more clear on the wording, perhaps in calling it an "Open Source Community Effort" (or something) donation rather than an "Open Source Project" donation, because that does seem to be the thing you are hoping to reward?

For the purpose of your donation, I think it is a fine idea that you focus on projects with a thriving community around them. But for a definition of what's really open source, I'd say a community isn't a requirement at all. To me, open source means that I get access to the source code, period. What I am allowed to do with the source code comes down to the particular open source licence, of course, and the whole "different flavors of free" discussion comes into play. But it can be open source even without being free in any sense at all, beer (my favorite sense) or otherwise. And it can certainly be open source without having any community, or accepting commits. The developer can have been dead for twenty years and I'm the first downloader in fifteen years - if I (legally) get the source code it is open source. Simple as that.

Now, I don't think anyone could argue that something could be open source if you didn't get to see the source code. Thus it feels safe to suggest that the requirement "You get to see the source code" isn't just my personal opinion on a necessary requirement for what constitutes open source. But from there on, I think any additional requirements you throw on to the heap have to be largely of the personal opinion type. That means that when posting questions as "what is really open source" it doesn't hurt to be extra careful in also clearly marking the scope, as in "what is open source to me" or "what is open source to this donation".

But probably rewording to "what is a thriving Open Source Community to this Open Source Community donation" would be even better.

@Ishmael

"If you have a VC system, making it accessible over the net is so trivial that I cannot imagine why anybody would keep their VCS confined to their private network (he says, and adds after a dramatic pause: "for their OS projects")."

Perhaps because they don't want their little home server slashdotted should the project suddenly become popular? Setting up a subversion server turns out to be so easy even I can do it. For a long time I kept my OS projects on a server in my home, giving access over VPN to the other committer and uploading zips with the source to a public site whenever some unit tests would look greenish if looked at through the right eye of a pair of green-red 3D glasses. I agree with you that it is simple to flip the public bit on your VCS if it is already on some real host like sourceforge or berlioz (where we now keep our source) but I think I can't be the only one with an OS project that started on some private VCS server? And sure, moving the files to a public VCS may be easy enough, but, well, you know, it's that whole "you have to come up with a project description" stuff to go through before you get to check in your project on those public hosts...very uninviting! ;-)

Mats Helander on July 17, 2007 8:54 AM

I see two distinct types of Open Source - the Open Source application and the Open Source project. The short definitions are in my view:
Open Source Application - one can have access to the code but changes,fixes and improvements are strickly controlled by a central control
Open Source Project - one can have access to the code and the project develops via community input of changes, fixes and improvements - the central control is only there to facilate the community input and distribution of the changes,fixes and improvement.

Under these definitions DNN ( which is an excellent product) falls under the open source application definition. There are good arguments for why DNN should have these strick controls but because of these in my view it is not a true open source project. This of course also applies to a number of others 'projects'

John Salmon

John Salmon on July 22, 2007 8:32 AM

Still good ?
I've ideas and I prefer Microsoft development technologies.
And I know open-source business well.

softlion on October 21, 2007 11:43 AM

If you have to get the lawyers involved in your "free" software debate, then you've already undermined your cause.

Jeff laid out his definition for us. He didn't specify GPL, or GPL "compatible", or whatever other Communist never-profit-from-this-software-ever guidelines the FSF has put out. He just said that there has to be a public, active repository of code, so that it helps advance our craft. It does not necessarily have to advance the cause of "free software".

It's pretty easily inferred in this post that the Four Freedoms are a nice-to-have, and that rigid adherence to all four principles is not strictly required.

(And no, I'm not affiliated with any project on the list, nor do I care who gets nominated.)

Aaron G on February 6, 2010 10:08 PM

Give Umbraco (http://umbraco.org/) money on the condition that they use it to go platform neutral (they currently don't run on Mono and require SQL Server) :)

The OSS world needs a good CMS (without being required to use a specific platform, IMO).

As someone else stated, there are many portions of Mono that are written in C# (it is a large project). There is also Monodevelop, which is alive and kicking.


Tom von S. on February 6, 2010 10:08 PM

a fairly elegant agreement with jeffs restrictions
a href="http://jrwren.wrenfam.com/blog/2007/07/09/re-defining-open-source/"http://jrwren.wrenfam.com/blog/2007/07/09/re-defining-open-source//a

Simon on February 6, 2010 10:08 PM

Jeff Atwood asked:
"Is a project truly open source if it only has one developer? Is a project truly open source if it has a cabal of three developers who summarily ignore all outside suggestions and contributions?"

Felix Ple#351;oianu answered:
"If it has an OSI-approved license, I think it is. After all, if the authors don't take contributions, you can always fork the project. And if the authors get pissed, point them to their own license. It's as simple as that."

My $0.02:
There's a difference between an open source project and an open source project worthy of Jeff's and Microsoft's financial backing. Felix is correct on the former, but it's perfectly reasonable for Jeff to set additional criteria for the latter.

Ross

Ross Patterson on February 6, 2010 10:08 PM

Dario Solera asked:
"What's the difference between checking-out the source code from SVN (or whatever) without being able to submit changes, and downloading a ZIP file containing the latest build?"

The difference is that with a source control system, you can always get the most recent code. Past history has shown that the download-the-ZIP technique leads to release-focused availability rather than up-to-the-moment availability.


"Anyway, we (ScrewTurn Wiki) have a private SVN repository, ... but we upload a nightly build every night, for both the current (2.0.x) and next (2.1) versions."

Good for you. That's not as common as you might think, though.

Ross

Ross Patterson on February 6, 2010 10:08 PM

The comments to this entry are closed.