<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-03-seq-02-ver-01" data-request-token="2e8b74b8903411ee8c631237928d7ffd" 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@2dc02a0426bc45878415938d69e92552">
<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@2dc02a0426bc45878415938d69e92552" data-request-token="2e8b74b8903411ee8c631237928d7ffd" 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/2dc02a0426bc45878415938d69e92552.html" target="_blank"><i class="fa fa-pencil mr-1"></i> Edit on Gitlab</a></p></div><div class="edit-link-original-content"><p>In the preceding activity you already had a brief introduction to Gitlab, a Source Code Hosting Facility, also called a Forge.</p>
<p><span style="font-size: 1em;">If you are already familiar with forges, you can </span>jump ahead to the description of Source Control Management software (SCM),<span style="font-size: 1em;"> or to </span>the activities<span style="font-size: 1em;"> which will get us started on making concrete contributions to a project. Don't skip the activities though! They are simple steps, but ones we'll build upon in future sections to ramp up the size and scope of our contributions.</span></p></div></div>
</div>
</div>
<div class="vert vert-1" data-id="block-v1:MOOC-FLOSS+101+2021_1+type@html+block@chap-03-seq-02-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-03-seq-02-ver-01-html-01" data-request-token="2e8b74b8903411ee8c631237928d7ffd" 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-03-seq-02-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"><div class="header-details">
<h3 class="xblock-display-title"><span class="xblock-display-name">What is a Forge or a Source Code Hosting Facility?</span></h3>
</div>
<p></p>
<p>A <b>source-code-hosting facility</b> (also known as <a href="https://en.wikipedia.org/wiki/Forge_(software)" title="Forge (software)">forge</a>) is a file archive and web hosting facility for <a href="https://en.wikipedia.org/wiki/Source_code" title="Source code">source code</a> of software, documentation, <a href="https://en.wikipedia.org/wiki/Web_page" title="Web page">web pages</a>, and other works, accessible either publicly or privately. They are often used by <a href="https://en.wikipedia.org/wiki/Open-source_software" title="Open-source software">open-source software</a> projects and other multi-developer projects to maintain revision and version history, or <a href="https://en.wikipedia.org/wiki/Version_control" title="Version control">version control</a>. Many repositories provide a <a href="https://en.wikipedia.org/wiki/Bug_tracking_system" title="Bug tracking system">bug tracking system</a>, and offer <a href="https://en.wikipedia.org/wiki/Release_management" title="Release management">release management</a>, <a href="https://en.wikipedia.org/wiki/Mailing_list" title="Mailing list">mailing lists</a>, and <a href="https://en.wikipedia.org/wiki/Wiki" title="Wiki">wiki</a>-based project documentation</p>
<p style="padding-left: 30px;"><em>From the wikipedia page <a href="https://en.wikipedia.org/wiki/Comparison_of_source-code-hosting_facilities" target="[object Object]">https://en.wikipedia.org/wiki/Comparison_of_source-code-hosting_facilities</a></em></p></div></div>
</div>
</div>
<div class="vert vert-2" data-id="block-v1:MOOC-FLOSS+101+2021_1+type@survey+block@d8ed7d7e5a1d47c4a852ee60c908a298">
<div class="xblock xblock-public_view xblock-public_view-survey" data-course-id="course-v1:MOOC-FLOSS+101+2021_1" data-block-type="survey" data-usage-id="block-v1:MOOC-FLOSS+101+2021_1+type@survey+block@d8ed7d7e5a1d47c4a852ee60c908a298" data-request-token="2e8b74b8903411ee8c631237928d7ffd" data-graded="False" data-has-score="False">
<div class="page-banner"><div class="alert alert-warning"><span class="icon icon-alert fa fa fa-warning" aria-hidden="true"></span><div class="message-content">Survey is only accessible to enrolled learners. Sign in or register, and enroll in this course to view it.</div></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-03-seq-02-ver-02" data-request-token="2e8b74b8903411ee8c631237928d7ffd" 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-03-seq-02-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-03-seq-02-ver-02-html-01" data-request-token="2e8b74b8903411ee8c631237928d7ffd" 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-03-seq-02-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>Here are the commonly found features on software forges</p>
<h4>Common features of forges</h4>
<ul>
<li><strong>Code review</strong> one or several people check a <a href="https://en.wikipedia.org/wiki/Computer_program" title="Computer program">program</a> mainly by viewing and reading parts of its <a href="https://en.wikipedia.org/wiki/Source_code" title="Source code">source code</a>, and comment it. Sometimes you can have multiple persons commenting a single line with a discussion thread. see <a href="https://en.wikipedia.org/wiki/Code_review" target="[object Object]">https://en.wikipedia.org/wiki/Code_review</a> and those examples:<br /><br /><img src="/assets/courseware/v1/9337bb13eebd9190018ccedb38fbb95e/asset-v1:MOOC-FLOSS+101+2021_1+type@asset+block/Screenshot_from_2022-12-12_16-43-12.png" alt="github code comment example" width="836" height="714" /><br /><em>An example of a code comment between line 120 and 121 on the github syncthing project (found <a href="https://github.com/syncthing/syncthing/pull/8417/files/9dea90adc4a14c339adf8534c5c774389aefa977">here</a>)<br /></em><em></em><em><br /><img src="/assets/courseware/v1/8d4ae19007c20f72f95abaec91d5fc3f/asset-v1:MOOC-FLOSS+101+2021_1+type@asset+block/Screenshot_from_2022-12-12_16-48-58.png" alt="github code review example" width="838" height="546" /><br />An example of a code review with code snippets (excerpt) and comments: a conversation thread between a contributor and the author of the syncthing software on github (found <a href="https://github.com/syncthing/syncthing/pull/8417">here</a>).<br /></em><em><br /><img src="/assets/courseware/v1/b299e3f74b646cde79c7e25a20a5b5d8/asset-v1:MOOC-FLOSS+101+2021_1+type@asset+block/Screenshot_from_2022-12-12_17-08-27.png" alt="code comment example on gitlab" width="871" height="722" style="border-style: solid; border-width: 3px;" /><br />code commenting example on the inkscape gitlab repository found <a href="https://gitlab.com/inkscape/inkscape/-/merge_requests/4887/diffs">here</a><br /><br /></em></li>
<li><strong>Personal or Private repository</strong>: an organization (or a person) may have public and private repositories on a forge.<br /><img src="/assets/courseware/v1/43af343d9a3565033aefa91baa893f60/asset-v1:MOOC-FLOSS+101+2021_1+type@asset+block/Screenshot_from_2022-12-12_17-29-02.png" alt="list of subgroups and repositories for the inkscape organization on gitlab" width="869" height="806" style="border-style: solid; border-width: 3px;" /><br /><em>A list of public repositories maintained by the Inkscape community found <a href="https://gitlab.com/inkscape">here</a>.<br /><br /></em></li>
<li><strong>Bug or issue tracking</strong>: it keeps track of reported software bugs in software development projects. See <a href="https://en.wikipedia.org/wiki/Bug_tracking_system" target="[object Object]">https://en.wikipedia.org/wiki/Bug_tracking_system</a> for more info. <br /><img src="/assets/courseware/v1/d6eeff3f3742dc3de19b65a1e3c74cce/asset-v1:MOOC-FLOSS+101+2021_1+type@asset+block/Screenshot_from_2022-12-12_17-32-01.png" alt="example of the issue tracker of the inkscape project on gitlab" width="875" height="599" style="border-style: solid; border-width: 3px;" /><br /><em>example of the issue tracker of the inkscape project on gitlab found <a href="https://gitlab.com/groups/inkscape/-/issues">here</a>.<br /><br /></em></li>
<li><strong>Web hosting</strong>: see <a href="https://en.wikipedia.org/wiki/Web_hosting_service" target="[object Object]">https://en.wikipedia.org/wiki/Web_hosting_service</a> some forges provide web hosting facilities: you may then access both the source code of web pages and the web pages themselves. An example is <a href="https://about.gitlab.com/">https://about.gitlab.com/ </a>with its source code available here <a href="https://gitlab.com/gitlab-com/www-gitlab-com">https://gitlab.com/gitlab-com/www-gitlab-com</a>. That was the system you used before to create a web page on Gitlab.</li>
<li><strong>Wiki</strong> : some pages for a project may be managed by its own audience, using a web browser. A typical wiki contains multiple pages for the subjects or scope of the project, and could be either open to the public or limited to use within an organization for maintaining its internal knowledge base. More info here <a href="https://en.wikipedia.org/wiki/Wiki" target="[object Object]">https://en.wikipedia.org/wiki/Wiki</a><br /><img src="/assets/courseware/v1/a96f466290b24139809a003516dd1a28/asset-v1:MOOC-FLOSS+101+2021_1+type@asset+block/Screenshot_from_2022-12-12_18-23-20.png" alt="example of the wireshark gitlab wiki" width="856" height="473" style="border-style: solid; border-width: 3px;" /><br /><em>example of the wireshark wiki project on gitlab found <a href="https://gitlab.com/wireshark/wireshark/-/wikis/home">here</a>.<br /></em><br /><strong>Forums</strong> : on github these are called "discussions" and they integrate directly with projects (an issue may be converted to a discussion thread in the forum and vice-versa) and may have code integration features, voting systems etc.<br /><img src="/assets/courseware/v1/a2fd2eb8ad8a0c554bcb427ee9c45960/asset-v1:MOOC-FLOSS+101+2021_1+type@asset+block/Screenshot_from_2022-12-12_18-38-22.png" alt="example of a forum on the terminal project on github" width="834" height="644" /><br /><em>example of a forum on the terminal project on github found <a href="https://github.com/microsoft/terminal/discussions">here</a><br /><br /></em></li>
</ul>
<h4>Extra features</h4>
<p>see the list on <a href="see the list on https://en.wikipedia.org/wiki/Comparison_of_source-code-hosting_facilities" target="[object Object]">https://en.wikipedia.org/wiki/Comparison_of_source-code-hosting_facilities</a></p>
<ul>
<li><strong>Translation System</strong> : to help translating collaboratively the software in different languages (not available on github/gitlab but on LaunchPad, GForge, Assembla)</li>
<li><strong>Mailing List</strong> (not availaible on github/gitlab but on GNU Savannah, GForge, Buddy, Launchpad... )</li>
<li><strong>Shell server</strong>: the Command Line Interface of the service is directly accessible</li>
<li><strong>Announcements/News</strong> : a page with news articles, announcements for the community</li>
<li><strong>Build System</strong>: example what does BUILD means and what is a Build System</li>
<li><strong>Release Binaries</strong>: explain what is a release briefly, what is a "binary", give examples of releases of a software on github/gitlab for example</li>
<li><strong>Team</strong>: possibility to work as a team and manage the members and their roles. Explain the different default roles on github/gitlab and their permissions</li>
<li><strong>Self-Hosting</strong>: if you want to use your own servers instead of the ones in the cloud</li>
</ul>
<p><br /><br /></p></div></div>
</div>
</div>
<div class="vert vert-1" data-id="block-v1:MOOC-FLOSS+101+2021_1+type@survey+block@5904e8bb90cb408a82bd1e1bd95556a1">
<div class="xblock xblock-public_view xblock-public_view-survey" data-course-id="course-v1:MOOC-FLOSS+101+2021_1" data-block-type="survey" data-usage-id="block-v1:MOOC-FLOSS+101+2021_1+type@survey+block@5904e8bb90cb408a82bd1e1bd95556a1" data-request-token="2e8b74b8903411ee8c631237928d7ffd" data-graded="False" data-has-score="False">
<div class="page-banner"><div class="alert alert-warning"><span class="icon icon-alert fa fa fa-warning" aria-hidden="true"></span><div class="message-content">Survey is only accessible to enrolled learners. Sign in or register, and enroll in this course to view it.</div></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-03-seq-02-ver-04" data-request-token="2e8b74b8903411ee8c631237928d7ffd" 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@problem+block@2d6aaa3865694a6aa9075cf36776a7d2">
<div class="xblock xblock-public_view xblock-public_view-problem xmodule_display xmodule_ProblemBlock" data-course-id="course-v1:MOOC-FLOSS+101+2021_1" data-block-type="problem" data-usage-id="block-v1:MOOC-FLOSS+101+2021_1+type@problem+block@2d6aaa3865694a6aa9075cf36776a7d2" data-request-token="2e8b74b8903411ee8c631237928d7ffd" data-graded="False" data-has-score="True">
<div class="page-banner"><div class="alert alert-warning"><span class="icon icon-alert fa fa fa-warning" aria-hidden="true"></span><div class="message-content">Quiz on forges is only accessible to enrolled learners. Sign in or register, and enroll in this course to view it.</div></div></div>
</div>
</div>
<div class="vert vert-1" data-id="block-v1:MOOC-FLOSS+101+2021_1+type@html+block@5274d145e09044ca88b5073c2e48b74a">
<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@5274d145e09044ca88b5073c2e48b74a" data-request-token="2e8b74b8903411ee8c631237928d7ffd" 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/5274d145e09044ca88b5073c2e48b74a.html" target="_blank"><i class="fa fa-pencil mr-1"></i> Edit on Gitlab</a></p></div><div class="edit-link-original-content"><p>You can go further and explore forges more deeply by doing this external activity:</p>
<p><a href="https://teachingopensource.org/FOSS_Field_Trip_(Activity)" target="_blank" rel="noopener"> https://teachingopensource.org/FOSS_Field_Trip_(Activity)</a> <a href="http://teachingopensource.org/activity/foss-field-trip-browsing-forge/" target="[object Object]"></a></p>
<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>