Best practices for an Open Source project?
December 18, 2008 3:40 PM   Subscribe

I'm looking for advice on how best to begin an Open Source web application project.

To keep the memory of my Father alive, I'd like to build an Open Source web application that would, I think, exemplify the way he lived his life. I would like this project to be free to use, but I would also like to be able to charge for support, with all money from this going to a foundation set up in his name, to support charities and projects in which he strongly believed. I'm at the very beginning stages of thinking this out, and I'm looking for any advice on the most practical ways to go about achieving my goal. The web application itself will be a one person effort until it's ready for Alpha / Beta implementation (written in C# / SQL Server in case anyone is interested), with the idea that once it is ready to be seen by the world, other volunteer developers would be welcome. Currently I'm wondering which of the many licenses would best fit providing 'for profit' support (in the sense of charging for it), would help me maintain the core project as being owned by a foundation (for example, protecting the name, branding and reputation of the project), but which would let profit and non-profit enterprises to freely implement and improve. Also, any recommendations for hosting the project would be very welcome. Please share with me your advice and experiences from any work you've done in this arena. Unfortunately, my coding experience to date has been primarily in closed applications, so I'm a little in the wilderness when it comes to making good choices about an Open Source project. Another concern: is a C# / SQL Server web application any less portable to implement on someone else's servers than, for example, a PHP / MySQL project? Thanks for your time, it's much appreciated.
posted by planetthoughtful to Computers & Internet (11 answers total) 3 users marked this as a favorite
 
"Another concern: is a C# / SQL Server web application any less portable to implement on someone else's servers than, for example, a PHP / MySQL project? "

Yes, C# and SQL Server both don't (easily) run on linux. And SQL Server can't be run for free, which would inhibit adoption of your project. And anyway, unless there's a good reason not to (you need specific GIS extensions, etc.), your front end app and business logic should be database neutral, and able to be connected to any conforming database, by using a database access layer.
posted by orthogonality at 3:54 PM on December 18, 2008 [1 favorite]


Response by poster: Yes, C# and SQL Server both don't (easily) run on linux. And SQL Server can't be run for free, which would inhibit adoption of your project.

Thanks orthogonality, some helpful comments. It's worth mentioning that the app would probably be more applicable to small, medium and large business, but I could imagine a 'Lite' version (as in, more lightweight to use and implement) being useful to the general internet audience. I coded in PHP / MySQL some years ago (feels like a lifetime ago now), but it wouldn't be my strongest skillset, and I lack the sort of dev and testing tools that I have with C# and SQL Server. Is there a reasonable free or cheap PHP IDE that contains strong debugging and testing features out there these days? I'm being lazy, I will Google, but if anyone has any advice in this direction, it would be helpful as well. I have to be careful, of course, in implementing an existing abstraction layer engine regardless of the language, since its license may break whatever license best fits the spirit and intention of the project.
posted by planetthoughtful at 4:03 PM on December 18, 2008


with the idea that once it is ready to be seen by the world, other volunteer developers would be welcome

I find it exceedingly difficult to imagine a project awesome enough in its own right to convince me to spend not only my free time, but also several hundred dollars upfront before I can even get started.

You're already vendor-locked and you haven't written a single line of code. If you honestly believe this could be the sort of thing that people would want to donate their free time to, I would strongly suggest more system-agnostic requirements.
posted by Civil_Disobedient at 5:07 PM on December 18, 2008


Seconding that if your hope is to leverage the power of the open source community, you should very deliberately choose the technologies that have a good intersection or might attract the "right" sort of developers. I'm quite sure mysql will get you more zealous open-source folks than SQL Server. I'm not so sure about C# vs PHP. Maybe if it was python or ruby.

But those are details. Look at other open source projects that have the sort of community you wish to foster. Then start making a grid of what all their underlying technologies are. Now you've found the best soil for your project.

In fact, the results of that study would in in themselves interesting.
posted by rokusan at 5:48 PM on December 18, 2008


Get deeply involved in at least one other open source project. Preferably while reading Producing Open Source Software: How to Run a Successful Free Software Project by Karl Fogel.

And just my two pence but, starting a new project on PHP right now is not bringing anything new to the table, and will severely hurt your ability to recruit devs/do interesting app-level things without pulling your hair out. Unless you have a burning reason to use PHP, i'd advocate Python or Ruby as dynamically typed languages, or Java/Scala/C# as statically typed languages. But in any case, use the best language for the problem, not for your memory.
posted by mezamashii at 5:49 PM on December 18, 2008


Agreed that your chances at getting community involvement may be best if you choose something that runs comfortably on Linux. As for an IDE, Netbeans is free, and while most people associate it with Java, it has a decent PHP environment. It also has modules for Ruby/Rails and Python, if you decide to go in one of those directions. I believe there are similar projects that use Eclipse as the underlying IDE.

That said, if you're more comfortable with C#, you're certainly not obligated to use SQL Server with it. You can set up MySQL as an ADO.Net provider with Connector/Net, or you can use ODBC. (A quick Google suggests that you can similarly set up PostrgreSQL with this data provider, but I know nothing about it.)
posted by [user was fined for this post] at 5:56 PM on December 18, 2008


For what it's worth, the book referenced by mezamashii is available for Free at http://producingoss.com/
posted by SemiSophos at 6:07 PM on December 18, 2008


... since its license may break whatever license best fits the spirit and intention of the project.

About licensing: be sure not to fall in the trap of (possibly writing your own license, and) calling it "Open Source!" or "Open" when it fails to meet the standards of Open Source. Here's what the Open Source Initiative has to say.

[See, for reference, OpenDNS. There's nothing open source about it.]
posted by philomathoholic at 12:09 AM on December 19, 2008


Best answer: Some of the Django guys post here, maybe one of them will have some perspective.

I've followed a few projects (Drupal, Django) and really, what comes first is running code. I guess the license deserves some consideration up front, because that may constrain the dependencies you can take on other open source projects. The trouble of creating a foundation comes after you've actually gotten something out there that people are using & contributing to. Before then, it's not really necessary and it will suck time and attention away from actually getting things going. It seems to me that the foundation that ends up responsible for the project stewardship should be separate from the foundation that exists to memorialize your father as they seem to have somewhat different missions.

People may want to contribute money to the project foundation in order to help cover organization costs, etc, without worrying that it might serve some other mission as well.

As for what licenses to use, you have a variety of existing options to choose from, all of which are probably better than creating your own.

There are examples of companies charging for support/consulting for GPLed software, and for software under other less restrictive licenses. The fact that any derivative work of GPLed software has to be released under the GPL too might provide some additional leverage in some circumstances. If you hold the copyrights, you are free to offer the software under multiple licenses. You could license under both the GPL, and a more conventional license. Companies that wanted to release a closed-source derivative work would have to pay for a commercial license. The AGPL goes even further, requiring any service that is derived from AGPLed software must release source code to the users of the service, even if no software is distributed..

On the other hand, the BSD/Apache/MIT-ish licenses have their advantages. They don't stick in the throat the way the GPL can. Companies might avoid GPLed software, and if they do, their is no chance they'll be contributing code back to the project. The same company might be happy to use BSD licensed open source software, because they can do pretty much anything they want with it. So, they get started writing code for it with no real plans of releasing any of their patches back out to the community, but in time, they get sick of the fact that they have the hassle of porting their changes again every time the main project does a major release, so they start contributing most of their changes back to the main project because it makes their lives easier.

And, yeah, at the very least, look to avoid the MS-SQL dependancy. mySQL is really widespread, and Postgres, while not quite as prevalent, is a very solid open source DB.

PHP (and Perl) are the most widely supported languages for web apps because just about every bargain basement host on up supports PHP and mySQL. There are ways to run ASP.net on Linux via the Mono project, but it anywhere close to as common. This might not matter as much if you are targeting corporate customers but even they can run PHP on IIS.
posted by Good Brain at 1:40 AM on December 19, 2008


Response by poster: I find it exceedingly difficult to imagine a project awesome enough in its own right to convince me to spend not only my free time, but also several hundred dollars upfront before I can even get started.

I'm quietly confident (without being at all certain) that it's a project that will gain some traction, particularly in the small to medium business arena. I say this because I spent 4 months building a smaller version (or smaller concept, might be more applicable) of the app for my employer, and the entire time I worked on it I was surprised that there wasn't a free Open Source alternative that could be deployed and enhanced as required. Think of if your employer asked you to build a blogging engine -- today, you'd probably recommend WordPress or Typepad or one of a number of other alternatives that you could deploy and enhance to your needs, as opposed to building from code zero (of course, there are reasons -- sometimes good, sometimes horribly silly -- why some companies choose to reinvent the wheel).

There is a market need for the app in question -- the instances I saw on the Internet are invariably supplied by Big Vendor CRM companies, sometimes with appalling implementations.

As to suggestions to look at Python or Ruby, I'll give these some thinking. There's an additional small plus in deving in a language other than C#, since this would allow me to Chinese Wall, to some extent, any work I do on this project in relation to work I have performed for my employer, but I'm not overly worried about this since I'd be starting at code zero for the same reason.

And for the record, C# Express and SQL Server Express exist as free downloads, so there's a misconception that anyone would need to be out of pocket to participate in a C# / SQL Server project.

Thanks to everyone for your comments and suggestions.
posted by planetthoughtful at 4:08 PM on December 19, 2008


C# Express and SQL Server Express exist as free downloads, so there's a misconception that anyone would need to be out of pocket to participate in a C# / SQL Server project.

Free download for Windows only, because C# and SQL Server won't run on anything else. So, if I don't have a Windows license, then I'll need to buy one.
posted by philomathoholic at 1:21 AM on December 23, 2008


« Older 12 - 15 is less than zero.   |   Sweet Hawaii, here is my money! Newer »
This thread is closed to new comments.