Seeking advice for taking a project open-source [closed] - open-source

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 8 years ago.
Improve this question
I currently have a few closed-source applications that I have developed to learn a particular technology or experiment with a programming technique. As a result, I have some software that is useful to others and that I have made freely available, but in closed-source format.
Some of the users of the software have asked if I would be willing to go open-source with the software so they could contribute to it. I'm all for it, but haven't had any previous experience working on open-source projects, much less starting one.
Ideally I'd get my feet wet by contributing to an existing project first, but I don't want quell enthusiasm of these volunteers by delaying too long. So I am going to forge ahead slightly blindly.
What I am looking for is a crash-course in managing an open-source project for someone just starting out on this track.
So let me phrase this as a question:
What advice do you have for someone
starting up their first open-source
project?
I'm also interested in recommendations for books/links that you think would be helpful

You have two important choices to make initially.
Firstly which licence should you use? There are dozens of Open Source licences, but it basically boils down to whether you want copyleft (GPL/AGPL) or non-copyleft (BSD, MIT, Apache) and that depends on your own objectives.
Secondly, you need to choose a version control system and, assuming you won't be hosting it yourself, a provider. This is effectively a choice between Subversion or one of the distributed version control systems (Git, Mercurial, Bazaar, etc.). A DVCS may make it easier for you to manage contributions from other people if you don't want to give them write access to your master repository.
Choice of VCS will influence your choice of host and vice versa as most providers only offer one VCS. A provider that will also host a website and/or wiki for you would be ideal. Most will provide some kind of rudimentary issue tracker and possibly mailing lists. You can also get mailing lists from Librelist.
I would recommend that you take a look at GitHub or Launchpad. I'm not particularly keen on Google Code or Sourceforge. Nothing against Subversion, I just don't like their UIs.
If you want your project to become popular, and that might not be important to you, you'll have to promote it. You can register it with Ohloh and Freshmeat. Writing blog articles about your project and submitting them to sites like Reddit and DZone would increase visibility. Remember also that Jeff is offering free advertising on StackOverflow for Open Source projects.
Anyway, as long as you have a public source repository and a website for people to download the software from, just write code and the rest will follow.

If you're already familiar with VCS (Versioning Control System) you should be fine. I recommend www.github.org to host the repository, and maybe at some point a website to talk about the app. Github is nice because it makes it especially easy for people to contribute code. It's ridiculously simple, although git has a bit of a learning curve.
And then, a way to communicate! A mailing list.. Maybe googlewave.. Maybe a forum.

Don't miss the great e-book from Karl Fogel, Producing Open Source Software available at no cost online.

I don't have any personal advice on hand, but I found the following video very interesting. It's a recollection of the experiences of some Google employees and the lessons they learned whilst managing their open source projects.
How Open Source Projects Survive Poisonous People (And You Can Too)
https://www.youtube.com/watch?v=Q52kFL8zVoM

Read this book: Wikinomics
In one of the chapters, for example, the author explains the challenges faced by IBM when they first joined open source projects on Linux.

Some code repository sites do a lot of the management work for you. They provide the licenses, they handle versioning (in some cases) and they obviously handle the repository.
look at these sites:
http://www.codeplex.com/
http://www.codeproject.com/
http://sourceforge.net/

The very minimum that you need to do is post the code as a zip, with a suitable license file. You can do that at Google Code - it's really easy to use. As for which license, start with an unrestrictive one such as MIT (Google Code has all the license texts) - you can always re-license later, provided you haven't accepted any updates.
As for books/links, take a look at Producing Open Source Software - it's not perfect, but I don't know of anything better.

Related

I've made something that might be useful to the community. Now what? [closed]

Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 7 years ago.
Improve this question
If the specifics are important, I made a cruisecontrol.net publisher plugin that notifies a series of phone numbers via voice, announcing the current state of the build. It uses Twilio to do so.
I'd like to avoid getting hung up on the specifics of what it is I've made, as I have this question a lot, with a number of little hobby one-offs. What's the state of the art as far as making my hobby output available to the world at large?
There seem to be a lot of options for open-source project hosting, community features, and what role to take in all of this. It's a little bewildering. What I'm looking for is to put this out into the wild for free and basically take a hands-off approach from there. Is that realistic? Which project hosting service can I use for free to allow developers to at least download the code, report issues and collaborate with each other to improve the product?
What snags have you run into that could make me regret this decision? I'm interested in war stories, advice and guidance on making this little product available to the community where it can be used.
GoogleCode is a decent self repository for open source code. Very easy to use and contains the ability to create a wiki for the project. It also has a very easy to use and understand bug reporting/forum style issue management system.
One easy way to quickly get code on a publicly accessible host is github.com. Hosting is free if everything you host is available to the public. People would be able to grab latest, and notify you when they have updates they think are worth merging.
You would include documentation as a README.
CodeProject is cool, sites like that would allow more community discussion then what I've seen on Github.
If it's just a small example, or a small piece of code, you might think about just posting an ariticle on a site like "Code Project", or a blog.
There's a lot of overhead with releasing an open-source project, and if you want to be hands-off, you might have an easier time just writing an article, and providing a .zip to download the code example.
Take a look at SourceForge.net, which is a website where programmers can create their open-source projects. It allows you to add new users which may have different rights on your project (from just being a contributer to being a full administrator) and it features many tools which you might want to use for your project, such as a bug tracker and SVN.
CodePlex is another good place for posting projects. There's lot's of C#/.NET there. In addition to all the basic project hosting stuff one of the nice things about it is that they support a whole slew of source control clients.

How to create an open source repository [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 7 years ago.
Improve this question
Time ago I started to develop a project and now I would like to make it open source. I am not familiar with open source contribution so I would really appreciate if anyone of you could suggest any good source (book or web tutorial) where I could learn how to setup a repository and arrange everything neccesary in order to make possible open source development.
Thanks!
Easiest way to start, create and maintain a repository is to open a project on SourceForge, or CodePlex (if you intend to have a .Net project). You can also try Google Code.
Visit Google Code. Setup a project there and learn how to use Subversion. When you're comfortable using Subversion and Google Code, you can setup your own Subversion/Trac server.
These days one of the more popular ways of running an open source project is to let a website such as SourceForge or Google Code (and there are many others) host the project. Most provide services such as code hosting using a variety of repository formats (CVS, Subversion, Git, Mercurial, etc...), mailing lists, bug trackers, wikis and more. The idea is that you are busy writing code, you shouldn't have to deal with mundane system administration tasks like maintaining source control or web servers.
In addition to SourceForge, Google Code, and Codeplex, I would add GitHub.
As others have indicated letting someone else host this for you is the easiest way to go about getting an open source project up and started. As for guidance on the different options out there:
Source Forge - Never used them, but
I know they've been around for a
long time and they claim to be the
largest.
Google Code - Can use subversion or
mercurial for version control. Good
code review tool too. Good option
for choice and tools.
Codeplex - .NET stuff goes here.
Hosted version of team foundation
server.
GitHub - Centered around git, the
distributed source control system
developed by Linus for Linux
development. Great for parallel
development if you plan on having
lots of folks working on it, but to
be fair mercurial offered by Google
Code is also parallel.
Here's an interesting article by Rob Conery about moving his .NET based open source project to github. If I remember right he had used Google Code and Codeplex previously. Have I successfully plugged my favorite? :)
In any case, don't worry about doing it yourself, a lot of hosting companies have one click installs for subversion. However hosting it will give you the following advantages:
Source control system set up and managed for you
Code review, and other collaboration tools are common
Generally you get a page to provide downloads to potential end users
Visibility and a community of potential contributors. I'm assuming you'd like other people to help you.
Hope that helps.

I'm starting an opensource project. Any advice? [closed]

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 7 years ago.
Improve this question
First of all, I reviewed this question, but I think I need a little more information since I've never worked on an opensource project before.
I'm starting an opensource project, currently hosted on Google code. It is a framework for creating flash games in ActionScript3 (programmer oriented). So far, so good, but I want to start building a community around it. The project is 60% finished from it's first official stable release (I am using Scrum to guide the development process, currently we are 3 people on the development team). By the way, the project has the MIT licence.
Do you have any advice on how to guide the development, any tools that I should look at?
Assembla vs Google code vs Trac vs Pivotal tracker?
What are you experiences on this?
If you're looking to build a community, it's not always about the tools, more about the processes you can use to build a community. There are plenty of people who will use whatever tool you give them or will choose (or refuse) to participate in a project based on the tools, but if the community stinks very few people will hang around.
I'd recommend spending some time thinking about how you're going to embrace a community. Are you ready to take the time to respond to bug reports? How will you handle enhancement requests? Are you willing to let something into the code if several people want it, but you don't? These are all critical issues that in the end will be far more important then Assmebla vs Trac.
You may want to check out Karl Fogel's book Producing Open Source Software or Jono Bacon's The Art of Community for more hints on managing and building a community.
First, big obvious download buttons so that a person can download your project, make it just plain easy. Secondly, forums so that people can give you feedback good and bad about the project.
Good luck on your project!
I would suggest checking out this book: http://producingoss.com/
I believe there is a free online and pdf version.
I have messed around with Trac some and it can certainly get the job done but if you are already doing an agile development process I would check out Pivotal Tracker. I use it on a side project and it's pretty slick, not to mention free to use. Pivotal has all the things you would expect: stories, backlog, velocity calculation, a few charts, etc.
Strive for adoption. The more users you get, the more people will contribute back.
Include lots of code samples on the wiki and let users download a sample application.
Make sure your API is well-documented with ASDoc.
Provide a roadmap to so that potential users can see your direction and intentions.
Be diligent about prioritizing feature requests and bugs. You and your team don't have time to do everything.
Make integration as seamless as possible. Hopefully users will be able to simply download a .swc (Flash library) and link it into their application.
Release early, release often. I hate having to download and use the HEAD revision from a repository because a team has only officially released one version of their project and it's a year old.
To me, guiding the development is more a matter of prioritizing what has to be done so I'm tempted to say: why don't you just use Google Code issue tracker as your project is already hosted there? I think it's offering all you need. Customize it to add a Estimates field if you want (for Scrum) and there you go.
Why do you think you would need something else? You already have a source repository, code reviews facilities, a wiki, mailing lists, an issue tracker, secured access for contributors. You don't need much more for collaborative work. What are you missing? Instant Messaging? Use Skype or Gtalk. IRC? You don't need it for now. No, really, I don't think a tool is gonna solve anything more here (even if you can't draw your burndown chart, not a big deal for a non full time project IMO).
So, because any other tool would be less well integrated with other Google Code services (e.g. I like to link my commits to issues using "Issue #ID" in comments which is automatically linked), I'd stick with what you currently have (maybe just add Gtalk/Skype to ease the communication/collaboration) and I'd start creating issues and prioritizing them. Good prioritization of work is the key to a successful project, there is no silver bullet tool that will do this for you. Then, plan fixed date milestones (releases) and assign most important issues to the upcoming milestone. Close as many issues as you can before the deadline. When the release time has come, release what has been done, postpone non implemented issue to the next milestone and start again.
If you need a software to support your scrum project... agile42 offers free Licenses of Agilo for Scrum Pro for open source projects.
Don't host your code on codeplex. I recently started an open source project as the basis of an article series on DotNetSlackers.com to show people how to build a site like SO. I mistakenly hosted this project on CodePlex. My automated build will periodically send me broken build emails as CodePlex will randomly go down for hours at a time. IT DRIVES ME NUTS!
If you plan to develop code that is free to the world but don't plan on letting anyone and everyone submit code to your project...host your own source control (perforce is free for a couple of users) or use something like google to host your code.

What are the best practices for releasing an open source project? [closed]

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 8 years ago.
Improve this question
We have a pretty cool little web framework that we have used successfully on dozens of client projects. We are planning to release this software to the community. However, I am wringing my hands about what should/should-not go on a new open source software project page. What are the things the site must have? Docs? A Wiki? A link to download? What else?
And, a related but possibly different question is how do we begin marking release numbers. All we use internally is the SVN stamp. Is there a good way to determine when to start calling something version 0.9 versus 1.0 and 1.1 and so-on?
You can get an idea of what's required by what open source project hosting sites provide:
A web site which acts as the "one stop shop" for the project
Docs, potentially in wiki form
A source repository allowing browsing, anonymous checkout, and authenticated and authorised commits
Issue tracking and new feature requests
As for version numbers... I don't think anyone's worked out the best way of doing that yet :) With a bare minimum of thought, I'd consider:
v1.0 should be ready for production use
Major version number changes can completely lose backward compatibility (if necessary - hardly a goal though!)
Minor version number changes should usually be mostly compatible - deprecating is probably better than removing/renaming bits of API
Smaller-than-minor version number changes should only include minor functional additions (if any) and bug/performance fixes
On versioning, I think the absolute best place to start from is Semantic Versioning.
The 0.9 / 1.0 / 1.1 / 1.0.1 / ... version labelling is for marketing purpose only (in the good sense of it). This allows your users/customers to identify if the release is major, minor or bug-fix and whether you consider it mature or not yet.
The minimum to deliver is sources. Other deliverables depend on how you are willing to help your users and provide them support.
Choose a website to host the source on first (SourceForge, for example). Get the source up there on a version control system with anonymous checkout. Get an email address on there for people to contact you.
Call this first version 0.1. This is because you don't have docs yet to support the project.
Then breathe.
Then start looking at documentation, like a wiki. Once you have it all covered, at a basic level of detail, and you believe the release is ready for some primetime, then move to 1.0, and start providing binary downloads.
Make sure you think about the license for the sources.
When I look at an open source project, one of the first things I check is the license. If the license is not GPL2/GPL3/BSD styles or similar, that's a demotivator for me.
The license means what people will do with it, how it can grow, and how much it is owned by the corporate who released it. As by choosing open source I try not to depend on corporations (who depend on their share holders), I really choose to use the software that is really free.
As the open source community is very sensitive to corporate power (Google seems a bit immune to that at the moment), so you really must make sure to deliver the message of truly free on your web site and other materials you release about the software.
See more on free software and open source definitions of the FSF.
Take a look at GitHub or Google Code. they provide a very good starting point for own open source projects. You can describe your project, documentate in a wiki, use git or svn as your repository, and provide downloads together with an issue tracking and multi-developer management. Nice environments out of the box to learn from and to use them.
For release numbers: I don't recommend 0.9 or something like this for pre-releases. The reason? What about release 1.9? Is it the 9th sub-release of the major release 1 or is it the last pre-release of release 2? My release standard is decribed here: http://code.google.com/p/tideland-eas/wiki/ReleaseStandard. I'm using a three-number-scheme, major, minor, and fix, together with a status code, alpha, beta, gamma, and the release date. So I'm able to handle multiple releases in parallel easily.
Hope this helps.
mue

Codeplex/Sourceforge for internal use [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 7 years ago.
Improve this question
I'm looking for a free/open source collaborative project manager that can be deployed internally in my workplace that would act similar to Codeplex or Sourceforge. Does anyone know of something like this, and if so do you have experience with it.
Requirements:
Open Source or Free
Locally Deployable
Has the same types of features found in Sourceforge / Codeplex
Issue/Feature Tracking
Community Interaction (ie. Voting, Roles, etc.)
SCM Integration (Optional)
.NET/Windows Friendly (Optional)
Every business ends up having internal utilities, and domain specific apps that developers create to make life easier. Given the input of the internal developer community they have the potential to become much better (can you say GMail...), and I would simply like to foster such an environment internally by providing an easy place for that interaction to take place.
UPDATE:
So I like what I am seeing in both Trac and GForge, but both are heavily geared towards UNIX/Subversion environments. I should have specified this, but we are a MS shop from top to bottom. How practical do you think it is going to be to try and use these in a MS .NET environment? Would that be like trying to shove a square peg through a round hole?
I like redmine for this: http://www.redmine.org. The only thing it's missing from your criteria is voting, but there might even be a plugin for this.
Trac is also popular (http://trac.edgewall.org) but it lacks suport for aggregation of data across projects.
Try GForge, it's a SourceForge fork and has most of its features.
I agree, Trac should work. IMHO setting up Subversion should be relatively easy on Windows too, there are great Windows clients for it (tortoiseSvn), and Trac runs on python, so it will work on Windows too.
Other advantages of Sourceforge Enterprise are these plugins. There are extra plugins for Visual Studio wich can be found here and here.
SourceForge Enterprise Edition 4.4 is available for free for up to 15 users. We use it for our development team and another development team where I work.
It's been working great for us. It has subversion and cvs built in (whichever you wish to use). If you plan on accessing it over the internet you might want to enable HTTPS. I had to do a little finagling to get HTTPS to work correctly (finding the right CentOS packages to install). If you wanted to use this solution with HTTPS I wouldn't mind if you sent me a message asking for help.
It comes with a VM for VMWare Player:
http://www.collab.net/downloads/sfee/index4.4.html
Launchpad has support for Code Hosting and version control, Bug tracking, Blueprints, Answers, Polls, Translations, etc.
Launchpad is used by the Ubuntu Project.
A few weeks ago, Launchapad was released as open source.
I was just wondering the same thing, something like Trac but in .NET, after a quick GOOGLE search (I have never tried these tools) I found
sharpforge (This no longer looks free!)
I like how the site .netTiers looks.
They use screwturn wiki.
It is totally free if you fulfill all GPLv2 statements.
Assembla and BeanStalk are nice, both have things like; wiki, discussion, alerts, chat, ticketing, Trac, Git and Subversion
What about Trac? It's pretty simple, but does it's Job for a lot of Open Source projects.
I would concur on the Trac suggestion. I use it both for an open source project and for an internal project. It has decent issue tracking and integration with Subversion which allows links between tickets and subversion checkins. It also has an integrated wiki, which can be of some use for documentation. Although we do not use it for voting / community type features, I know there's a number of addons to it that might serve this purpose.