<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-02-seq-07-ver-01" data-request-token="92f2c72e903111ee8c631237928d7ffd" 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-02-seq-07-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-02-seq-07-ver-01-html-02" data-request-token="92f2c72e903111ee8c631237928d7ffd" 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-02-seq-07-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"><p>Welcome to this first course activity, which will be about « Collaboration ».</p>
<p>(Fade to source video) In Free, Libre, and Open Source software, people try to work collaboratively on projects. Sometimes in small teams, sometimes in larger groups, and sometimes with thousands or tens of thousand people. To this day, the Linux kernel has seen contributions from more than 21000 different people! Some just contributed to fixing a typo, and some made major changes that shaped the project to what it is now.</p>
<p>All the contribution that is done to the project are thoroughly reviewed by the people responsible to maintain the project, they are called the Maintainers. Mind you, not all contributions get accepted and that is done to preserve the quality and idea of the project.</p>
<p>We will start this introduction with a comparison between software development and a completely different field: video games. More precisely, "sandbox" video games allow players some creative freedom and a multiplayer potential that we will use to draw parallels between the play experience, and some of the things you'll go through during your contribution experience.</p>
<p>(fade to Minetest gameplay) Here we will use Minetest, which is similar to a well-known game(Minecraft) and is an open-source project, so it is possible to contribute to it and help it to improve in future versions. We will provide you a world to build in, and your goal will be similar to the course's goal in open-source software: Improve something. You can build a new building, add decoration or improve the design of something already in the world, you will just need to make sure you are leaving the world a better place than what it was when you entered it. Then let the world know about what you improved in the forum!</p>
<p>(end of video)</p>
<p>(text)</p>
<p><caveat> </caveat></p></div></div>
</div>
</div>
<div class="vert vert-1" data-id="block-v1:MOOC-FLOSS+101+2021_1+type@html+block@70bd5fcf66d34d41893e0cb329a92e2f">
<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@70bd5fcf66d34d41893e0cb329a92e2f" data-request-token="92f2c72e903111ee8c631237928d7ffd" 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/70bd5fcf66d34d41893e0cb329a92e2f.html" target="_blank"><i class="fa fa-pencil mr-1"></i> Edit on Gitlab</a></p></div><div class="edit-link-original-content"><p>This activity is <em>recommended</em> but ultimately optional and there are very good reasons for which you would like to avoid it: If you're unfamiliar with 3d games, and do not already know how to move around with WASD keys and mouse, you might get frustrated at this activity, or if you do not have a mouse (It's technically possible to play with a touchpad for instance, but the experience will be affected). The goal of this activity is to make you understand how collaboration organically emerges in the right environment, and what can stem from a creative open-ended collective, so if you think you would not benefit from it, you can skip to the debrief video.</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-02-seq-07-ver-02" data-request-token="92f2c72e903111ee8c631237928d7ffd" 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-02-seq-07-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-02-seq-07-ver-02-html-01" data-request-token="92f2c72e903111ee8c631237928d7ffd" 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-02-seq-07-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"><h4 id="prerequisites-text-images-1min-">Prerequisites</h4>
<p>Minetest should work on any hardware and with most operating systems (Windows, macOS, and most Linux distributions). It even works on some Android phones and tablets.</p>
<p>If you are in a restricted environment, like a school or university, it is possible that the network will block some ports, including the default port of Minetest. In this case, ask your system administrator to unlock port UDP 3000.</p>
<h4 id="how-to-install-minetest-text-images-2-min-">How to install Minetest</h4>
<p>You can find installation instructions at <a href="https://www.minetest.net/downloads/">www.minetest.net/downloads</a></p>
<h4 id="activity-text-images-7-min-">A test world</h4>
<p>Once installed, you can launch Minetest and try out a test world:</p>
<p><img src="/assets/courseware/v1/c4886b895766e87805796c99f6124c40/asset-v1:MOOC-FLOSS+101+2021_1+type@asset+block/minetest.png" alt="" /></p>
<p></p>
<ul>
<li>Select "Creative mode" on the left</li>
<li>Click "New" to create a new world, then click "Create"</li>
<li>Click "Play game"</li>
<li>Check whether you can move around with WASD keys; familiarize yourself with the mouse movements; see what happens when you left-click; look at the block types in inventory (<key>I</key>), and try to place one using the right-click</li>
<li>Once you're comfortable with the keys, press Esc, then Exit to the menu</li>
<li>In the menu, click "Join game", then enter 137.194.211.3 and 30000 in the Address/port fields</li>
<li>First, "visit" what is already there. You may get ideas of the underlying logic based on what is around already</li>
<li>If there are other people on the server, great! You can take this opportunity to ask them (press <key>T</key> to chat) what they are building and how to help them</li>
<li>If you're alone, no worries. Just look around, and find something to improve on, or to add to the world!</li>
<li>You can spend as much time as you like on this project, but we recommend trying it out for at least half an hour, then posting a screenshot of what you've done on the forum :)</li>
</ul>
<h4 id="troubleshooting">Troubleshooting</h4>
<ul>
<li>
<p>If you don't have a QWERTY keyboard layout, you might need to adjust some keys, which you can do in the menu (Esc → "Change keys")</p>
</li>
<li>
<p>If you find any instances of unacceptable behavior (e.g. chat abuse that is in violation of the code of conduct, etc.) please report it on the forum and we will act accordingly</p>
</li>
<li>
<p>If the server is full, please try again later and report the issue on the forum; we'll try to increase the capacity</p>
</li>
</ul></div></div>
</div>
</div>
<div class="vert vert-1" data-id="block-v1:MOOC-FLOSS+101+2021_1+type@problem+block@ce81adade9c6453ea1826ab9695eb4c6">
<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@ce81adade9c6453ea1826ab9695eb4c6" data-request-token="92f2c72e903111ee8c631237928d7ffd" 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">Minetest Quiz 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-02-seq-07-ver-03" data-request-token="92f2c72e903111ee8c631237928d7ffd" 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-02-seq-07-ver-03-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-02-seq-07-ver-03-html-01" data-request-token="92f2c72e903111ee8c631237928d7ffd" 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-02-seq-07-ver-03-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"><h4>Contribute to the world: Build!</h4>
<p>The idea of the activity is to let your creative side loose!</p>
<p>If, while walking around, you see anyone building a fort/building/house that you like, ping them in the chat and try to coordinate the completion of the building or adding a new structure to it. If you see something you want to improve, go for it! And if you don't find anything that interests you, you can start building your own structure. Try to explain your ideas to anyone who might want to contribute to your structure. Remember, the goal is to <span class="ILfuVd"><span class="hgKElc"><b>always leave a place better than you found it</b>. </span></span></p>
<p>Additionally, <strong>mind your environment</strong>: If something is already there, make sure your additions integrate well with it, and make a compromise between what you were planning to do, and the surroundings. If others are around, <strong>coordinate </strong>and make sure everyone is on the same page about what should be there, and what should not. If there were previous discussions about it, make sure to look at them rather than ignoring it!</p>
<p>And lastly, when you see newcomers arrive, <strong>welcome them!</strong> If you've been around for some time, new people don't have the knowledge you might have gotten on the area, about what people are trying to achieve or have decided to do or not to do, and pointing them to the right direction will help them do something faster. Make sure to do this in a friendly and welcoming way: it's not about being the boss, it's about getting things done efficiently.</p></div></div>
</div>
</div>
<div class="vert vert-1" data-id="block-v1:MOOC-FLOSS+101+2021_1+type@discussion+block@124f04730b71425a8b725da73f2c1b82">
<div class="xblock xblock-public_view xblock-public_view-discussion" data-course-id="course-v1:MOOC-FLOSS+101+2021_1" data-block-type="discussion" data-usage-id="block-v1:MOOC-FLOSS+101+2021_1+type@discussion+block@124f04730b71425a8b725da73f2c1b82" data-request-token="92f2c72e903111ee8c631237928d7ffd" 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">Discussion 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-02-seq-07-ver-04" data-request-token="92f2c72e903111ee8c631237928d7ffd" 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-02-seq-07-ver-04-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-02-seq-07-ver-04-html-01" data-request-token="92f2c72e903111ee8c631237928d7ffd" 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-02-seq-07-ver-04-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>(Video - minetest play)</p>
<p>Welcome back! We hope you had a fun time. Now let's debrief: We purposefully sent you into an unknown world, with unclear instructions, and lots of creative freedom. This will have created the question: <em><strong>What should I do</strong>?</em></p>
<p>This is a great first question, and one that is central to this course. The aim here is to get you to contribute to a free software community project, and the first question you should ask yourself is indeed: <em>What should I do?</em></p>
<p>The <strong>what <em>could</em> I do?</strong> question comes next. In the game, you technically <em>could</em> do anything, but the wording of the task, <em>leave the world a better place</em>, is context-dependent. Is there something that, upon first glance, looks bad and needs improving? Is there perhaps some unfinished item in the middle of a place which you could contribute to? If so, then you've found your task. In a free software project, you will find bug lists and roadmaps that will give you direction. You will also find dead code, undocumented code that is unclear or untested, and code that is slow and inefficient—all this can be improved!</p>
<p><strong>How to do it</strong> depends on a number of factors; you will have to use the tools you know, your skills and your knowledge. In some cases, you won't know how to do something. And that's okay! Usually, the best way to find out how a community expects things to be done is through discussion.</p>
<p>What's more, when you have several people focused on a common goal—whether in a game, or in any situation—communication and people skills in general, are key. If you were ingame with several people, you may have found yourselves using the chat, or looking for the most efficient way to communicate. These are decisions that tend to arise naturally in any collaborative environment. Hence the question <strong>How do I fit in?</strong> and if the forum in the course makes it easier, so do all communication channels in free software communities. Discussing and collectively deciding what should be done, and how to do it, is central in most projects! Like in here, where it's possible that someone can come with a proposal that does not fit in the already discussed plans, it also happens in open source projects that an improvement proposal does not "fit" in the projects plans, and need discussions and compromises.</p>
<p>The rest of the course is all about these issues: explaining how people interact, take decisions in the context of collectively building software, and how to help it happen.</p>
<p>Let's start!</p></div></div>
</div>
</div>
<div class="vert vert-1" data-id="block-v1:MOOC-FLOSS+101+2021_1+type@html+block@e79479470a1441559195c4dd6446a03f">
<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@e79479470a1441559195c4dd6446a03f" data-request-token="92f2c72e903111ee8c631237928d7ffd" 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/e79479470a1441559195c4dd6446a03f.html" target="_blank"><i class="fa fa-pencil mr-1"></i> Edit on Gitlab</a></p></div><div class="edit-link-original-content"><h3 id="minetest-todo">Minetest TODO</h3>
<ul>
<li>discuss with framasoft</li>
<li>"test world" -> Imho a video with a voice over comment would be better than screenshots here, especially if we want to be inclusive of people unfamiliar with 3d games.</li>
<li>then post on the forum with a screenshot of... -> It would be good to provide more guidance about what to do, and how -- maybe show some examples, of both new creations from scratch, improvements to other people's creations, what to say/ask to others if some are around, etc.</li>
<li>It's a good start, but there are a few additional points to be made in this section -- cf the recap from the brainstorm meetings we had: !13 (diffs)</li>
</ul>
<blockquote>
<p><br /><br />Learners come in a world that already exists with already existing creations in it - like when you come in a business project. Learners have to fit in and contribute things that fit into the existing universe. It teaches that this universe is not ours as a new contributor, we're entering it, and discovering it as we edit it. When we come into a building world, we're not sure what we want to build or what other people want us to build. There are people building a house here, "How do I fit in? How do I discuss with those people?" etc.<br /><br /><br /><br />See the perspective from both sides of a contribution: as the one making a contribution, and as the one receiving a contribution. To also put learners in the position of the maintainers they will have to interact with, who created something that they want to modify. To see how it feels to have someone coming to make changes they would not have expected on top of their own vision for their creation. To see concretely that, when someone comes and tries to change something we have created, we won't necessarily like that change, especially without communication and collaboration between the original creator and the new contributor. There needs to be a process and limits to that, we can't expect maintainers to just accept anything.<br /><br /><br /><br />One of the big mistakes that a lot of people do when they first contribute to FLOS is to think that, because we come to contribute something voluntarily, that this is automatically something that the project should be thankful for, and bend sideways to accept and merge in, without requiring additional efforts from the contributor. Just sending a pull request and expecting to be done isn't going to cut it -- it's the beginning of the process, with the goal being to adapt the contribution in a way that makes it acceptable to both the contributor and the upstream maintainer.<br /><br /><br />Relatedly, on many public Minecraft servers, there is a process to contribute -- otherwise, anyone can come and destroy the work of others, or alter it in undesirable ways, as the game will likely illustrate. The issues are similar to contributions in FLOSS: permissions, trust.<br /><br /><br />More broadly, the necessity to handle unwanted behavior, in general, will show up. We can use the opportunity to mention the code of conduct of the course again, walk through its points, and note that the need to adhere to it is valid everywhere the course points to, within the course (game, forums) or outside of it, on the projects being contributed to (which might also have their own code of conduct, which should also be read and followed).<br /><br /><br />On the other side, even if aggregating contributions isn't always simple, the game will help to highlight the fact that 10 people contributing to building a cathedral in Minecraft goes much faster than someone doing it alone. It makes the principles of contributions to a common good more concrete, even before entering the more purely technical aspects specific to code contributions.<br /> The question of the types of communication channels will likely also come up because people will probably chat in the game, but it's not as efficient as setting a parallel communication channel. There might be also moments where other people are around, and then we can have something synchronous, but sometimes not. This also reflects what happens in FLOSS projects. Sometimes we get an immediate response; sometimes we don't. Sometimes we are just working on our own and trying to fit our pieces in, without a whole lot of feedback until someone else comes in, sometimes days or weeks later. Other times, we're trying to place a piece and there are hundreds of other people trying to change the same thing at the same time.<br /> There are differences with "real world" contributions too, for example in the video game by default, there are no permissions, what is done is immediately merged, rather than going through a system of merge requests, reviews, etc.<br /> The stakes are also low: people just create something that they care about for 15 minutes. But it's not something on which there is a deep need to have something curated, or have good moderation.<br /><br />Inspiration comes from Upstream University: using legos, someone was constructing an object/structure, and someone else came with an idea of how to modify it.<br /><br /></p>
</blockquote>
<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>