In general, both businesses and people alike seem not to understand how an open source project is managed / organized. The fact that there is no company 'owning' the product, doesn't mean the project cannot be controlled. In this blog we are going to discuss how to start and maintain an open source project, and why we make an analogy with a beehive.
Setting up the project
To start up the project, you need to
make a few descisions.
Choose your project idea
Start by
identifying what problem you want to solve or what need you want to
address with your project. Make sure it aligns with your skills,
interests, and available resources.
Define project scope
Clearly
define the goals, objectives, and requirements for your project. This
will help you stay focused and ensure that everyone involved
understands the purpose of the project.
Choose a license
Select an
appropriate open-source license to protect your intellectual property
rights while allowing others to use, modify, and distribute your work
freely. Popular licenses include MIT, Apache, and GNU General Public
License (GPL).
Set up version control
Use a
version control system like Git or Mercurial to manage your project's
codebase. This will allow you to track changes, collaborate with
others, and maintain different versions of the software. Create a
repository on a hosting platform such as GitHub, Bitbucket, or
GitLab.
Develop your project
Start coding
and building your project according to the defined scope and
requirements. Regularly commit your code to the version control
system to keep track of changes.
Documentation and testing
Write
clear documentation for your project, including instructions on how
to build, run, and test it. Also, create automated tests to ensure
that your code is working as expected.
Create a website or wiki
Set up a
website or wiki where users can find information about the project,
its purpose, usage guidelines, documentation, and contact details for
the development team. Use platforms like GitHub Pages, ReadTheDocs,
or Wikis to host your content.
Engage with the community
Reach
out to potential contributors, users, and supporters through social
media, online forums, mailing lists, or IRC channels. Encourage
feedback, suggestions, and bug reports from the community to improve
your project.
Release your project
Once you're
satisfied with the quality of your code and documentation, release it
under your chosen open-source license. Announce the release on your
website, social media, or relevant forums to attract users and
contributors.
Continuously maintain and
update
Regularly update your project based on user feedback, bug
reports, and new features. Respond promptly to issues reported by
users and merge pull requests from contributors. Keep your
documentation up-to-date as well.
Funding of the project
The funding of a foss project is connected to the sustainability, cause money...
To start an open source project often means there's no money to start the project. It's a community initiative, with zero to no investments. People from the community basically invest in time. When the Free and Open Source Software product is finished, it's time to make money, right? First we have to discuss the fact, that there are people in the foss community, who get allergic reactions to everything what has to do with money. Like there are people who are against asking money for educational purposes, there are people against any form of financial compensation for writing software. Most successful foss projects need professional support to stay successful and sustainable. There are a few ways foss organizations can earn some bucks, let's discuss them.
Donations
Encourage
users and supporters to donate money directly to the project through
platforms like Open Collective, GitHub Sponsors, or Patreon.
Projects like Thunderbird, solely run on donations. Donations are
most suited for applications where the clients are private persons
and not companies. To get a healthy organization out of funding, you
need time to be able to predict the amount of money that comes in.
Crowdfunding
Launch
a crowdfunding campaign on platforms such as Kickstarter, Indiegogo,
or GoFundMe to raise funds for specific project goals, like hiring
developers, improving infrastructure, or releasing new features. The
problem with crowdfunding is, that none of these platforms are foss
themselves, so how does this fit with the foss philosophy when the
crowd funder is going to sell your supporter's data?
Services and
Consultancy
Offer professional services related to your
open-source project, such as custom development, training, support,
or consulting. This will generate income. Still to stay true to the
foss philosophy the add-ons should be available for the entire
community.
Affiliate Marketing
and Advertising
Incorporate affiliate marketing links or ads in
your documentation, website, or newsletters. You'll earn a commission
from sales generated through these links without affecting the
open-source nature of your project.
Merchandise
Sales
Sell merchandise like t-shirts, mugs, stickers, and other
items featuring your project's logo or artwork to generate income.
Use platforms like Spreadshop, Teespring, or Redbubble for easy setup
and fulfillment.
Training and
Workshops
Organize training sessions, workshops, or online
courses related to your open-source project. Charge a fee for
attendance or access to the course materials.
Collaborate with
Companies
Partner with companies interested in supporting or
integrating your project into their products or services. You can
receive funding, resources, or access to new markets through these
collaborations without compromising the open-source nature of your
project.
So we discussed several ways you can make money with an
open source project, still there need to be some sort of official
organization.
Governance of the project
The first real governance decision is an important one. Who or what will be the owner of the open source product? Who or what will be mentioned as the owner in the chosen foss license?, if that is applicable? In some licenses an owner is mentioned, in others the default license is included in the version control page. What is the organization which is going to be sued in the case of license infringement? What organization is responsible for damages? You really don't want that as a private person. The choice you have in this case is also dependent on the laws of the country, you or the organization will be residing. In most countries you basically have a few options, become a company or become some a sort of organization, like a club or a foundation. This is of course an important decision, as it is defining for the future of the product and the community. What kind of organization you choose is important, and you should get info from a local advisor, which model suits best for your goals. As rule of thumb, the foss community likes organization types, like foundations better than companies. But because of possible legal repercussions, you don't want to do this as a private person. Which choice you make, you will be probably one of the Queen bees in the Hive. To set up the organization, you need to make additional decisions:
Establish decision-making processes
Define how decisions will
be made within the project. This can involve consensus-based
decision-making, majority voting, or a leader with final authority.
Document these processes in your governance documentation.
Create roles and responsibilities
Identify key roles needed
for the project's success, such as maintainers, developers,
documenters, community managers, and release managers. Clearly define
their duties, expectations, and decision-making powers.
Establish communication channels
Set up communication
platforms like mailing lists, forums, or chat rooms where
contributors can discuss ideas, report issues, and collaborate on the
project. Make sure these channels are accessible to everyone involved
in the project.
Develop a code of conduct
Create a code of conduct that
outlines expected behavior within the project community. This helps
maintain a healthy and inclusive environment for all participants.
Establish contribution guidelines
Provide clear instructions on
how contributors can submit pull requests, report bugs, or propose
new features. This includes formatting requirements, testing
procedures, and documentation standards.
Create an issue tracking system
Set up a bug tracker or task
management tool to keep track of reported issues, feature requests,
and other tasks related to the project's development.
Implement version control and continuous integration
Use a
version control system like Git or Mercurial for managing code
changes and collaborating with others. Also, set up automated tests
and continuous integration tools to ensure that new contributions
don't break existing functionality.
Document governance rules
Clearly document your project's
governance structure, including decision-making processes, roles,
responsibilities, communication channels, contribution guidelines,
code of conduct, and issue tracking systems. Share this information
on your project's website or wiki for easy access by all
contributors.
The Beehive
But why the analogy
with a beehive? And not with a Bazaar? (Raymond, Eric 1997). While I
like the principle of the Bazaar idea, it just doesn't seem very
organized. The Bazaar is full of independent merchants. This, while a
Beehive, is organized by a few queen bees. Someone in the
organization have to make the final calls, or control the voting
system. It's our opinion that the beehive just is a better analogy,
especially when the product is controlled by a foundation. A Beehive
has a very flat structure, more or less of two organization levels,
the queens and the bees. The most companies often have more levels of
organization.
When the project is controlled by a company,
the Cathedral model is applicable, which is further not discussed in
this blog.
Sustainability of the project
The sustainability of the project is not only about funds. The way of funding we discussed in previous sections of this blog. Sustainability is more how tow keep your community healthy. It's a simple fact that not everybody has the same level of enthusiasm for the project, and you cannot predict, nor want to influence, the life of people in the project. The fact is that some bees will leave the hive. Needless to say, you need some ways to find new bees. One of the best options is to partner up with a foss educator like OpenSource Science (OS-SCi), let students contribute to your project and do internships. While creating enticement with the students, you have a fantastic opportunity to let them join the Hive.