<div class="xblock xblock-public_view xblock-public_view-vertical" data-course-id="course-v1:MOOC-FLOSS+101+2021_1" data-init="VerticalStudentView" data-runtime-class="LmsRuntime" data-runtime-version="1" data-block-type="vertical" data-usage-id="block-v1:MOOC-FLOSS+101+2021_1+type@vertical+block@chap-04-seq-03-ver-01" data-request-token="67c4fbd2902a11ee8c631237928d7ffd" data-graded="False" data-has-score="False">
<div class="vert-mod">
<div class="vert vert-0" data-id="block-v1:MOOC-FLOSS+101+2021_1+type@html+block@chap-04-seq-03-ver-01-html-01">
<div class="xblock xblock-public_view xblock-public_view-html xmodule_display xmodule_HtmlBlock" data-course-id="course-v1:MOOC-FLOSS+101+2021_1" data-init="XBlockToXModuleShim" data-runtime-class="LmsRuntime" data-runtime-version="1" data-block-type="html" data-usage-id="block-v1:MOOC-FLOSS+101+2021_1+type@html+block@chap-04-seq-03-ver-01-html-01" data-request-token="67c4fbd2902a11ee8c631237928d7ffd" data-graded="False" data-has-score="False">
<script type="json/xblock-args" class="xblock-json-init-args">
{"xmodule-type": "HTMLModule"}
</script>
<div class="edit-link-wrapper"><div class="edit-link"><p style="text-align: right;"><a href="https://gitlab.com/-/ide/project/mooc-floss/mooc-floss/edit/master/-/course/html/chap-04-seq-03-ver-01-html-01.html" target="_blank"><i class="fa fa-pencil mr-1"></i> Edit on Gitlab</a></p></div><div class="edit-link-original-content"><p>To properly understand the motivations of contributors to a project, it's important to have some understanding of the licensing and business models that can be involved.</p>
<p>By default, source code falls under the scope of <em>Intellectual Property</em>. Hence, there is a <em>copyright</em> of author(s) over the code, which by default (since the <a href="https://en.wikipedia.org/wiki/Berne_Convention" target="[object Object]">Berne Convention</a>) is <em>all rights reserved</em>, meaning that all rights provided by applicable copyright laws are reserved for the copyright holder (in general, the author(s) or his employer).</p>
<p>In order to allow people who get the code to have the four freedoms mentioned in the first module, we need to provide a <em>license</em>. A license is a means to give rights, to the user in case of an <em>End User License Agreement</em> (EULA) or to the people getting the code in our cases, which would otherwise be restricted.</p>
<p>The licenses we will cover here are the <em>Free software licenses</em> (which are the <a href="https://www.gnu.org/licenses/license-list.en.html" target="[object Object]">licenses</a> labeled as such by the Free Software Foundation) and the <em>Open Source License</em> (which are the <a href="https://opensource.org/licenses/category" target="[object Object]">licenses</a> labeled as such by the Open Source Initiative). While the meanings those two organizations put in those words differ, so far the technical and legal meaning of those coincide and those sets of licenses are the same and the most used licenses fall under both categories. If a license fails to be recognized by those two entities, it will be called <em>non-free</em>. The main cause for which licenses fail to meet the criteria is when they try to restrict usage of the software, either by purpose or by user.</p>
<p>We'll cover here the main families of free and open source licenses.</p>
</div></div>
</div>
</div>
<div class="vert vert-1" data-id="block-v1:MOOC-FLOSS+101+2021_1+type@html+block@chap-04-seq-03-ver-01-html-02">
<div class="xblock xblock-public_view xblock-public_view-html xmodule_display xmodule_HtmlBlock" data-course-id="course-v1:MOOC-FLOSS+101+2021_1" data-init="XBlockToXModuleShim" data-runtime-class="LmsRuntime" data-runtime-version="1" data-block-type="html" data-usage-id="block-v1:MOOC-FLOSS+101+2021_1+type@html+block@chap-04-seq-03-ver-01-html-02" data-request-token="67c4fbd2902a11ee8c631237928d7ffd" data-graded="False" data-has-score="False">
<script type="json/xblock-args" class="xblock-json-init-args">
{"xmodule-type": "HTMLModule"}
</script>
<div class="edit-link-wrapper"><div class="edit-link"><p style="text-align: right;"><a href="https://gitlab.com/-/ide/project/mooc-floss/mooc-floss/edit/master/-/course/html/chap-04-seq-03-ver-01-html-02.html" target="_blank"><i class="fa fa-pencil mr-1"></i> Edit on Gitlab</a></p></div><div class="edit-link-original-content"><h4>Permissive vs copyleft</h4>
<p>The main families of open source licenses are the <em>permissive</em> licenses and the <em>copyleft</em> licenses. Both of them give users the rights to run, copy, distribute, study, change and improve the software, with the main difference that the copyleft license require that <strong>if you redistribute a work based on a copyleft license, you should redistribute it with a copyleft license.</strong> Sometimes called <em>viral</em> licenses, they deal with the <a href="https://en.wikipedia.org/wiki/Tragedy_of_the_commons" target="[object Object]">tragedy of the commons</a> by stating that the work they'll be incorporated into will also be part of the commons. On the other hand, permissive licenses will try to maximize the freedoms given to the users, in the sense that they allow people or companies to build open-source or closed-source software based on their work.<span style="color: #222222; font-family: 'Times New Roman'; font-size: 16.96px;"></span></p>
<p>The most notable examples of copyleft licenses are the GNU Public Licenses (<strong>GPL</strong> and its derivatives), or for content the CC-BY-SA license.</p>
<p>For permissive licenses, the main example is the <strong>MIT</strong> license, sometimes called <em>Expat.</em></p>
<h4>Licenses for content</h4>
<p>While the main software licenses are for code, some licenses are more appropriate than others when it comes to contents: For creative works, the main licenses will be the <strong>Creative Commons</strong> licenses. </p>
<p>[infography : creative commons versions explainer]</p>
<p></p>
<p>Some licenses are also designed specifically for some types of content. For instances, most open-source fonts are licensed under <strong>OFL</strong> (open font license). </p>
<h4>How do I see which license a project has?</h4>
<p>There are several ways to see the licenses of a project:</p>
<ul>
<li>On most software forges, the licenses can be detected and displayed</li>
<li>Along with the source code of a project, and usually at the root of the project, you should look for a LICENSE or a COPYRIGHT file, which will contain that information</li>
<li>Sometimes, files in the repository will display their licenses with <a href="https://spdx.org/licenses/" target="[object Object]">SPDX</a>. This will look like a line at the top of the file like this: <code>// SPDX-License-Identifier: GPL-2.0-or-later</code></li>
</ul>
<p>This will also be the way to state the license on your projects, if you want to publish them in the open.</p>
<h4>Dual licensing</h4>
<p>Sometimes, a project will be <em>dual-licensed</em> (or more). This usually means that the project falls under both of these licenses, and that you can consider it under either of the licenses. </p>
<h4>Relicensing</h4>
<p>When a contributor writes some code, by default they, or their employer, have the rights on their contribution. Hence, to get their contribution into the project, they need to put that contribution under the license of the project. This can be done directly or indirectly by giving all rights on the contribution to an actor which will give the users a license on the whole work.</p>
<p>This means that when a project wants to change the license of the code to give a different set of rights to users, all people who have a copyright need to approve the change, or have somehow agreed in advance, or given right to do so to a common entity, with a <em>copyright assignment</em>. </p>
<p>In some cases, these assignments have allowed companies to <em>close</em> their source code, which means that they stopped providing their code with an open source license, after deciding to relicense. <span style="font-size: 1em;">(Zimbra, ElasticSearch, Kibana, etc.)</span></p>
<p></p>
</div></div>
</div>
</div>
<div class="vert vert-2" data-id="block-v1:MOOC-FLOSS+101+2021_1+type@html+block@chap-04-seq-03-ver-01-html-04">
<div class="xblock xblock-public_view xblock-public_view-html xmodule_display xmodule_HtmlBlock" data-course-id="course-v1:MOOC-FLOSS+101+2021_1" data-init="XBlockToXModuleShim" data-runtime-class="LmsRuntime" data-runtime-version="1" data-block-type="html" data-usage-id="block-v1:MOOC-FLOSS+101+2021_1+type@html+block@chap-04-seq-03-ver-01-html-04" data-request-token="67c4fbd2902a11ee8c631237928d7ffd" data-graded="False" data-has-score="False">
<script type="json/xblock-args" class="xblock-json-init-args">
{"xmodule-type": "HTMLModule"}
</script>
<div class="edit-link-wrapper"><div class="edit-link"><p style="text-align: right;"><a href="https://gitlab.com/-/ide/project/mooc-floss/mooc-floss/edit/master/-/course/html/chap-04-seq-03-ver-01-html-04.html" target="_blank"><i class="fa fa-pencil mr-1"></i> Edit on Gitlab</a></p></div><div class="edit-link-original-content"><p>Some websites will help you understand the differences between free software licenses, and the reasons for choosing them:</p>
<ul>
<li><a href="https://choosealicense.com/" target="[object Object]">Choose a License</a> is maintained by github and lists the most popular options and choices.</li>
<li>When it comes to contents, the <a href="https://creativecommons.org/choose/" target="[object Object]">Creative Commons</a> website will help you choose, depending on your requirements.</li>
<li><a href="https://tldrlegal.com/" target="[object Object]">TLDRLegal</a> has helpful and readable summaries of all popular licenses in simple terms</li>
</ul>
<p></p></div></div>
</div>
</div>
</div>
<script type="text/javascript">
(function (require) {
require(['/static/js/dateutil_factory.a28baef97506.js?raw'], function () {
require(['js/dateutil_factory'], function (DateUtilFactory) {
DateUtilFactory.transform('.localized-datetime');
});
});
}).call(this, require || RequireJS.require);
</script>
<script>
function emit_event(message) {
parent.postMessage(message, '*');
}
</script>
</div>
<div class="xblock xblock-public_view xblock-public_view-vertical" data-course-id="course-v1:MOOC-FLOSS+101+2021_1" data-init="VerticalStudentView" data-runtime-class="LmsRuntime" data-runtime-version="1" data-block-type="vertical" data-usage-id="block-v1:MOOC-FLOSS+101+2021_1+type@vertical+block@chap-04-seq-03-ver-02" data-request-token="67c4fbd2902a11ee8c631237928d7ffd" data-graded="False" data-has-score="False">
<div class="vert-mod">
<div class="vert vert-0" data-id="block-v1:MOOC-FLOSS+101+2021_1+type@html+block@chap-04-seq-03-ver-02-html-01">
<div class="xblock xblock-public_view xblock-public_view-html xmodule_display xmodule_HtmlBlock" data-course-id="course-v1:MOOC-FLOSS+101+2021_1" data-init="XBlockToXModuleShim" data-runtime-class="LmsRuntime" data-runtime-version="1" data-block-type="html" data-usage-id="block-v1:MOOC-FLOSS+101+2021_1+type@html+block@chap-04-seq-03-ver-02-html-01" data-request-token="67c4fbd2902a11ee8c631237928d7ffd" data-graded="False" data-has-score="False">
<script type="json/xblock-args" class="xblock-json-init-args">
{"xmodule-type": "HTMLModule"}
</script>
<div class="edit-link-wrapper"><div class="edit-link"><p style="text-align: right;"><a href="https://gitlab.com/-/ide/project/mooc-floss/mooc-floss/edit/master/-/course/html/chap-04-seq-03-ver-02-html-01.html" target="_blank"><i class="fa fa-pencil mr-1"></i> Edit on Gitlab</a></p></div><div class="edit-link-original-content"><p>Free/Libre Open Source Software is now present in lots of aspects of our everyday lives and has a well-established presence in the economic world. Almost all companies use FLOSS in one way or another, and many tech companies have part of their business either centered on it, or interacting with it.</p>
<p>When looking at the main companies in the FLOSS world, we can identify a few business models present that center around FLOSS itself. While it's true that usually downloading and running free software is, well, <em>free</em>, it does not imply that the<a href="https://en.wikipedia.org/wiki/Total_cost_of_ownership" target="[object Object]"> Total Cost of ownership</a> (TCO) is zero. </p>
<h4>Service-based</h4>
<p>Some companies develop free software, while providing their clients with services for a fee. The most classical services offered are:</p>
<ul>
<li>Training: Formation of users is always something to think about when switching from a proprietary software solution to a free one. Being an alternative does not always mean being a clone, and does not mean that all features will always work exactly the same. Purchasing training may help with the transition from proprietary software to FLOSS.</li>
<li>Support: While many open source communities have some kind of interactions with their users, community support by volunteers is not always enough for companies, and some vendors will provide help and support for a fee.</li>
<li>Development: If the software does not do what you need it to do, the license always give the possibility to improve it. However, if you <em>can</em> do it yourself, it's not always obvious that you can find people with the skills required. Some companies can be contracted to work on open source software, either developing features in the upstream project, to make the feature available for all, or, if the license allows it, develop features that only your business would be interested in. </li>
</ul>
<p>The most famous example of service-based company is Red Hat, with their operating system RHEL (Red Hat Enterprise Linux) and training programs.</p>
<h4>Software as a Service (SaaS)</h4>
<p>For online service, there is always the possibility to use a hosted instance, basically paying a company for the configuration, installation, and maintenance of an instance for your use.</p>
<h4>Open Core</h4>
<p><em>Open core</em> companies have a hybrid approach to open source: the core features are open source, but advanced features come with proprietary optional <em>plugins.</em> Depending on the products, those might be just enhancements (quality of life) enhancements, business-only features (for instance Single-Sign-On support which are only useful for businesses), or in extreme cases the software could be barely usable without any plugin.</p>
<h4>Dual licensing</h4>
<p>Sometimes, companies will use dual licensing as a selling point: In general, they will develop open source products under a <em>copyleft</em> license, but will offer to sell licenses for more unrestricted use. That way, if their clients do not want to publish their own source code under the copyleft rules, they have to buy the rights to integrate the code on the non-free license.</p>
<h4>Licenses and Economic models</h4>
<p>This latest example shows how licensing and economic model can be linked: this model needs the company to have all rights for their code, usually through <strong>Contributor License Agreements</strong> (CLAs), authorizing them to relicense (for a fee) the contributions under proprietary terms, even if the original project is publicly under a copyleft license.</p>
</div></div>
</div>
</div>
</div>
<script type="text/javascript">
(function (require) {
require(['/static/js/dateutil_factory.a28baef97506.js?raw'], function () {
require(['js/dateutil_factory'], function (DateUtilFactory) {
DateUtilFactory.transform('.localized-datetime');
});
});
}).call(this, require || RequireJS.require);
</script>
<script>
function emit_event(message) {
parent.postMessage(message, '*');
}
</script>
</div>
<div class="xblock xblock-public_view xblock-public_view-vertical" data-course-id="course-v1:MOOC-FLOSS+101+2021_1" data-init="VerticalStudentView" data-runtime-class="LmsRuntime" data-runtime-version="1" data-block-type="vertical" data-usage-id="block-v1:MOOC-FLOSS+101+2021_1+type@vertical+block@a7b6e62efb9c4bf59eabb29eca0b863c" data-request-token="67c4fbd2902a11ee8c631237928d7ffd" data-graded="False" data-has-score="False">
<div class="vert-mod">
<div class="vert vert-0" data-id="block-v1:MOOC-FLOSS+101+2021_1+type@html+block@chap-04-seq-03-ver-02-html-02">
<div class="xblock xblock-public_view xblock-public_view-html xmodule_display xmodule_HtmlBlock" data-course-id="course-v1:MOOC-FLOSS+101+2021_1" data-init="XBlockToXModuleShim" data-runtime-class="LmsRuntime" data-runtime-version="1" data-block-type="html" data-usage-id="block-v1:MOOC-FLOSS+101+2021_1+type@html+block@chap-04-seq-03-ver-02-html-02" data-request-token="67c4fbd2902a11ee8c631237928d7ffd" data-graded="False" data-has-score="False">
<script type="json/xblock-args" class="xblock-json-init-args">
{"xmodule-type": "HTMLModule"}
</script>
<div class="edit-link-wrapper"><div class="edit-link"><p style="text-align: right;"><a href="https://gitlab.com/-/ide/project/mooc-floss/mooc-floss/edit/master/-/course/html/chap-04-seq-03-ver-02-html-02.html" target="_blank"><i class="fa fa-pencil mr-1"></i> Edit on Gitlab</a></p></div><div class="edit-link-original-content"><h3>How to tell if FLOSS is for you?</h3>
<p>An effective approach to answering this question is to examine it through the lens of <a href="https://en.wikipedia.org/wiki/Scarcity" target="[object Object]">scarcity</a>.</p>
<p>Code that is licensed under a Free/libre open source license is, by definition, non-scarce: everyone can take it, modify it, and use it. It is a <em>common good</em>. If your business plan does not accommodate that and relies on limited distribution, then maybe these licenses are not a great fit.</p>
<p>A proprietary license is a good example of attempting to deal with software like physical goods -- by forbidding the redistribution, even if the act of copying wouldn't cost anything by itself. This recreates scarcity artificially: if you want to be able to copy the software, you need to pay something every time.</p>
<p>However, <em>services</em> and time in general, is usually scarce, hence selling installation, configuration and maintenance time (in the case of SaaS) or development and support services, are a good fit for a business model. A simple example is the case of this very course: the course itself is publicly available and redistributable, which means anyone can see it or even host it (since it only relies on free software technologies that anyone can host). However, services like mentorship, or dedicated training, cost mentors and educators <em>time.</em> And since mentor time cannot be infinitely multiplied, it has value, which does not hold up the course as a public good. </p>
<p>In the case of dual licensing systems based on copyleft relicensing, for instance, it's all about compromises: what you pay for is usually the right to impose scarcity on others, and to ignore the rules set to the use of the open code you want to use. </p>
</div></div>
</div>
</div>
</div>
<script type="text/javascript">
(function (require) {
require(['/static/js/dateutil_factory.a28baef97506.js?raw'], function () {
require(['js/dateutil_factory'], function (DateUtilFactory) {
DateUtilFactory.transform('.localized-datetime');
});
});
}).call(this, require || RequireJS.require);
</script>
<script>
function emit_event(message) {
parent.postMessage(message, '*');
}
</script>
</div>
<div class="xblock xblock-public_view xblock-public_view-vertical" data-course-id="course-v1:MOOC-FLOSS+101+2021_1" data-init="VerticalStudentView" data-runtime-class="LmsRuntime" data-runtime-version="1" data-block-type="vertical" data-usage-id="block-v1:MOOC-FLOSS+101+2021_1+type@vertical+block@98de397f62354a9893a8d6a283f0156a" data-request-token="67c4fbd2902a11ee8c631237928d7ffd" data-graded="False" data-has-score="False">
<div class="vert-mod">
<div class="vert vert-0" data-id="block-v1:MOOC-FLOSS+101+2021_1+type@html+block@chap-04-seq-03-ver-02-html-03">
<div class="xblock xblock-public_view xblock-public_view-html xmodule_display xmodule_HtmlBlock" data-course-id="course-v1:MOOC-FLOSS+101+2021_1" data-init="XBlockToXModuleShim" data-runtime-class="LmsRuntime" data-runtime-version="1" data-block-type="html" data-usage-id="block-v1:MOOC-FLOSS+101+2021_1+type@html+block@chap-04-seq-03-ver-02-html-03" data-request-token="67c4fbd2902a11ee8c631237928d7ffd" data-graded="False" data-has-score="False">
<script type="json/xblock-args" class="xblock-json-init-args">
{"xmodule-type": "HTMLModule"}
</script>
<div class="edit-link-wrapper"><div class="edit-link"><p style="text-align: right;"><a href="https://gitlab.com/-/ide/project/mooc-floss/mooc-floss/edit/master/-/course/html/chap-04-seq-03-ver-02-html-03.html" target="_blank"><i class="fa fa-pencil mr-1"></i> Edit on Gitlab</a></p></div><div class="edit-link-original-content"><h3>CLAs and DCOs</h3>
<p>Which actors there are, and which models they have in a project will have an impact on the contributors and their contributions. When the main actor is a for-profit entity, and their economic model or policies rely on being the sole copyright holder in the code, they will ask for a <strong>Copyright License Agreement</strong> (CLA). This agreement will usually give the main actor the right to use the contribution as they see fit, and in particular can give them a right to relicense the contribution. This creates or maintains a huge asymmetry between the main actor and the contributors. </p>
<p>Since companies with CLAs are able to take their software and license new versions with non-free licenses, and since some have done so in the past, many big free software historic actors are wary of CLAs and do not recommend them.</p>
<p>Instead, foundations like the Linux Foundation have started using <strong>Developer Certificate of Origin</strong> (DCO). The DCO is a statement from the developer that they are the author of the code and have the right to submit their contribution under the project's license. </p>
<h3>Actors and communities</h3>
<p>It's important to figure out the impact of the business plan of the project and its actors, and how it relates to you and your contributions. Otherwise, you can end up in a situation where you have done everything right, but your contribution still gets nowhere -- just because it doesn't fit the business plan of the main actor. It may not be said explicitly in those cases — people might remain friendly, but your contribution will be overlooked, and will be left unmerged for a long time, without explanation. For these reasons, in particular for project with big commercial actors relying on open core models, it's important to discuss with the community beforehand to make sure your contribution fits with their plans for the project.</p>
<p>In extreme cases, when there is a community with volunteer developers and the main actor interests do not align with what the community sees as the best path forward for the project, we can see a <em>community fork</em>, meaning that the community is creating a new project from the code of the previous project, with new governance and directions. The most famous example of this is LibreOffice which was created when the OpenOffice developers disagreed with Oracle's actions after Oracle bought the company who created OpenOffice (Sun Microsystems).</p>
<h4>Identifying stakeholders</h4>
<p>It can be non-obvious to see who has the power in a project, and differentiating decision makers from passersby: the first person who answers on a bug report or merge request may not be someone able to make decisions, and it's worth looking at merged Merge Requests and solved bugs to understand who the people who have some power are, and what they ask of contributors.</p>
</div></div>
</div>
</div>
</div>
<script type="text/javascript">
(function (require) {
require(['/static/js/dateutil_factory.a28baef97506.js?raw'], function () {
require(['js/dateutil_factory'], function (DateUtilFactory) {
DateUtilFactory.transform('.localized-datetime');
});
});
}).call(this, require || RequireJS.require);
</script>
<script>
function emit_event(message) {
parent.postMessage(message, '*');
}
</script>
</div>