# There are a lot of open-source projects SourceForge has 325,939 projects registered. Google Code has over 250,000. GitHub has (depending on what you count as a project) between 885,000 and 2.9 million. The questions we are asking have been asked many times before. # How do they get maintained? Open-source projects generally get work done on them by two types of people: * People paid to work on them * People with a personal interest in them It surprises many programmers to learn that people actually paid to work on open-source software, but it makes sense from a business perspective - if you base your entire business on, say, the Apache HTTP server, paying one of your developers to put in a few hours a week improving it is still less expensive than licensing a proprietary product, plus you get the features you want implemented and the bugs you need fixed. # Mozilla ![](01-maintenance/mozilla.png) Mozilla Firefox is a popular browser, being the first to lead any significant userbase away from Microsoft's Internet Explorer. Guess what? The Mozilla Corporation has an annual revenue of over $90 million and has over 600 employees. And who provides the funding for all these programmers (and marketing drones, and managers, etc.)? For having the default search engine set as Google, that estimable company provides rougly 85% of Mozilla's revenue. # OpenOffice.org ![](01-maintenance/OOo.png) Sun released OpenOffice.org as a free version of StarOffice, with the intent of luring away users from Microsoft Office with the lower price, then convincing them to switch to StarOffice for more features. At its peak, Sun had over 38,000 employees. # The GIMP ![](01-maintenance/gimp.png) The GIMP is worked on just by volunteers; it has a shitty UI and took years to get simple scalable brushes. # Apache ![](01-maintenance/apache.png) The Apache Foundation provides infrastructure and support for a project, particularly legal protection. Work is done by volunteers and funding is through donations. # GNU ![](01-maintenance/gnu.png) GNU similarly provides infrastructure and legal protection for projects. Both GNU and Apache do not, however, provide any programming work - it's up to the projects to find their own developers. # GitHub ![](01-maintenance/github.png) GitHub has made it easy for members of a community to submit patches to a product; it should be noted that the community needs to *exist*, though. GitHub helps you get volunteer contributions, but it isn't magic. # Maintenance vs. Development # Feature development is a lot of work. If we, as we intend, produce at the end of the year a mostly-bug-free product, then maintenance *should* be minimal - tweaks as clients install new versions of Java or their browsers. Maintenance can be done by an already-employeed developer, for a few hours every now and then. Feature requests could be aggregated and assigned periodically in batch to a group of students in a class. Alternatively, some group of consultants (possibly a subset of the students currently involved with development) could charge for support and development. # What's this all mean for us? # # No one cares that much about Scheduler. # We're not going to work on Scheduler in our spare time, just for kicks. # Someone will have to pay for maintenance. # As stated above, that cost could be credit for students, hours for a salaried employee, or wage for a consultant.