Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Starts the discussion on source{d}'s business model #137

Open
wants to merge 3 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ We try to put as much information here as possible, in the rare cases that a top
* Roadmap
* [Culture](general/culture.md)
* [Product](general/product.md)
* [Business Model](general/business_model.md)
* [Organizational & Legal Structure](general/organizational_legal_structure.md)
* [Investors, Board of Directors and Advisors](general/investors_board_advisors.md)
* Leadership
Expand Down
56 changes: 56 additions & 0 deletions general/business_model.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
Business model
---------------

This section of our guide functions as a snapshot of our latest thinking related to the business model of source{d}. This is a live document that will continue to grow as we learn more.

## Context related to our culture

> ‘We want to always remain a company that does everything with the individual developer in mind. Not the developer as an employee of a company, but the developer as an individual in the developer community.’

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Better formatting:

> ‘We want to always remain a company that does everything with the individual developer in mind. Not the developer as an employee of a company, but the developer as an individual in the developer community.’
>
> _source: [source{d}'s culture document](culture.md#for-developers)_

_source: [source{d}'s culture document](culture.md#for-developers)_

At source{d} we pride ourselves on always choosing to do what is best for the individual developer in the community. This principle is shared by our team members, our management team, the founders, our [advisors](investors_board_advisors.md#advisors), [board of directors](investors_board_advisors.md#board-of-directors) and [shareholders](investors_board_advisors.md#shareholders)).

When thinking about our business model, the most important question for us is:

**By choosing to monetize in this manner, are we still doing what is best for the individual developer in the community?**

This means, for instance, that we will never release a core feature under a license that would not allow individual developers to benefit.

The only case where this would be acceptable if the feature was irrelevant to individual users and only beneficial to large enterprises.

## Background

Joseph Jacks (one of our advisors) maintains the [Commercial Open Source Software Index](https://docs.google.com/spreadsheets/d/17nKMpi_Dh5slCqzLSFBoWMxNvWiwt2R-t4e_l7LPLhU/edit#gid=0) where he tracks all companies built around open-source software that have >100mm annual revenue.

Almost every single one of these companies follows what is called the [open-core model](https://en.wikipedia.org/wiki/Open_core).

> Open core is a business model for the monetization of commercially produced open-source software. ...primarily involves offering a "core" or feature-limited version of a software product as free and open-source software, while offering "commercial" versions or add-ons as proprietary software.

It's important to note that while often proprietary means closed source code, it doesn't have to be. You can have your source code open to the world but with a restrictive license that for instance can only be used for academic research.

**Side-note:** as an organization we should never write/implement our own open source licenses, the community has already done a great job of creating and vetting a selection of licenses that are the status quo.

## source{d} business model

### Who do we want to target as customers?

To make sure we stay true to doing what is right for individual developers in the community, we do not want to charge any individual users.

We don't believe startups and SME's make up a large enough market to build a sustainable company in the long term. The amount you can charge to small organizations pales in comparission to what you can charge enterprises (value-add x # of developers). At the same time, selling to SME's is almost always a [SaaS](https://en.wikipedia.org/wiki/Software_as_a_service) business. While there are success stories of this, such as [Travis CI](https://travis-ci.com/) we don't think it's the right route for source{d}.

**source{d} focuses on enterprises as customers**

From the point of view of value we can add to an organization, large scale analysis & ML on top of source code shines when there is a large amount of code and a large number of developers.

### Enterprises as customers

Today every large organization has become/is becoming a software company. The number of software developers in what were once considered traditional businesses, such as banks and airlines, is often already in the 1,000s or 10,000s.

There is a growing number of challenges that enterprises face within their [Software Development Life Cycle (SDLC)](https://en.wikipedia.org/wiki/Systems_development_life_cycle) that can be tackled with large scale language-agnostic analysis of their source code, and trained ML models.

### Business model meets our technology

The current model that we are exploring is to have single node versions of our technology stack be fully open-source under a permissive licenses such as [Apache 2.0](https://www.apache.org/licenses/LICENSE-2.0) but multiple nodes of our stack that allow distributed computing over a large amount of repositories with a large number of concurent users to be under a restrictive license.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Really interested to see, how that would be possible in case of a single codebase.

Personally, I do not see a way for this to happen yet, except if a VERY restrictive license (non-OSS?) is used firsthand, so enterprises are incentivized to pay or buy a re-license of the same codebase, under a comercial license that has the desired terms.

AGPL my be not restrictive enough, as it would allow multiple node usage, in case enterprises do not need modify/re-distributer the “derivative work” on top of this codebase.

But even if they do, it still could be free (as a 🍺) for them to use, if they are willing to contribute all the changes upstream.

But of course I’m not a lawyer, thus the excitement to see how this works out.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@bzz this is why we're having the discussion now. Since the new reposdb project (we really need more than a code-name for this project) is now underway, it could open up the possibility to separate code bases of the main data source. Having separation of concerns across different code bases will make it significantly easier for the community to understand what is pure OSS and what is restrictive, otherwise we're making things too confusing.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think you need to consult with a lawyer specialized in open source licenses to evaliuate options to reach your goal.
If it' a single code base, the limitation single node vs distributed you want to enforce will not work since it is against the open source definition. https://en.wikipedia.org/wiki/The_Open_Source_Definition https://opensource.org/faq#commercial

You might want to look into what Chef did in 2014 with a mix of commercial and open source components in the product, and a proprietary license for the commercial pieces that limited the number of nodes for free to 25. https://blog.chef.io/2014/09/08/there-is-one-chef-server-and-it-is-open-source/
https://www.chef.io/online-master-agreement-archive-20151101/

But it seems they changed that in 2016 https://blog.chef.io/2016/04/26/changes-to-how-chef-products-handle-licenses/
https://www.chef.io/online-master-agreement/

I don't think you'll be able to have a single open source codebase covering both open source and limited parts, you will need some kind of proprietary offering targeting Enterprise needs with a proprietary license.

Having that part under a proprietary license if not unfriendly to individual developers: without a business model for sourced there will be no corporation funding the development of the open source offering.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@chanezon thank you very much for the insights. What is your opinion on keeping proprietarily licensed code public and not in a private repo?


This would allow us to charge enterprises who are in need for a large number of nodes but not disadvantage individual developers or smaller organizations to take advantage of our technology.