<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-05-ver-01" data-request-token="bca3bfb4903211ee8c631237928d7ffd" 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-05-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-05-ver-01-html-01" data-request-token="bca3bfb4903211ee8c631237928d7ffd" 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-05-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>As contributors, we need to establish functioning and collaborative relationships with the maintainers. They are the ones who will ultimately decide to integrate or not your work in the project. Sometimes this responsibility is spread very widely, like for example in Wikipedia where everyone can make changes, but everyone can revert -- in all cases, it remains important to understand the people who will be reviewing your work, their motivations and criteria.</p>
<h3>Attitude towards maintainers</h3>
<p>Thinking about the upstream maintainers in positive terms is important to build trust with them -- otherwise collaboration will be extremely difficult. Even when we disagree about their methods, or find flaws in their technical approaches, it's important to maintain our respect and trust in their judgement.</p>
<p>One way to do this is to remember how much work, effort and skill it must have taken them to get the project to what it is now. Nobody is perfect, but they have been good enough to bring the project to its current stage. They deserve merit and respect from that achievement -- while, when we join the project, we haven't yet proven our worth, nor contributed a comparable amount of work, or even fully understood the full context and history of the project, yet.</p>
<h3>Dealing with rejection</h3>
<p>Be aware that one of the potential outcome, when submitting any contribution, is that it could be rejected. In many projects, like Wikipedia, the criteria for accepting contributions can be harsh, and ensuring that the contribution is kept by the project is challenging. </p>
<p>When we are contributing to a common good where other people are governing, there is a review process to ensure contributions match the criteria from the people governing it (including post-moderation via reverts, in the case of Wikipedia). It's important to be prepared to see it potentially discarded, as only work that closely matches the project's approach and its maintainers' goals will stick. (Also in the case of Wikipedia, the more small and sourced the chance and the highest chances it can stay.)</p>
<p>Generally, the ride for the first few contributions can be wild, and it often takes a fair amount of abnegation and persistence to be able to pass that phase.</p>
<p>Contributing is exposing ourselves to others, who might have different perspectives, as their contributors or maintainers will review your contributions, and give their opinion about it -- which is often not what we expect. The maintainers and contributors of open source projects also vary widely in their ability to deal well with other people, and in providing constructive feedback. It's important to be aware that not everyone in the open source community will be nice or have great communication skills. Be prepared for some negative feedback (or even reverts!), and try not to take it personally. Instead, try to apply any feedback you receive to improve the final results of your contributions.</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-05-ver-02" data-request-token="bca3bfb4903211ee8c631237928d7ffd" 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-05-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-05-ver-02-html-01" data-request-token="bca3bfb4903211ee8c631237928d7ffd" 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-05-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>Who decides during reviews?</h4>
<p>It's generally simple: the project maintainers do.</p>
<p>So to ensure that a maximum of our work can actually be integrated with the project, a simple rule applies: obeying the reviews that we get, even when we don't necessarily agree with them. As newcomers, we submit ourselves to the reviewer to the extent that our work is not degraded beyond recognition. Maybe we would have done things differently, but as long as the review does not go against our contribution as a whole, having to adapt to the requests of the reviewers will still bring us closer to our goal. It's better for us to have a modified version of our contribution merged, rather than disagreeing and ending up with an unmerged contribution, which we'll have to maintain separately forever.</p>
<p>This is a social interaction many of us struggle with at first -- it can be difficult to do something without being convinced that it is the right approach, or for matters of taste, like the style of a function. But being newcomers, we don't yet have much credit in the community or the reviewers, so accepting and applying all review comments will help to score precious points in convincing reviewers to accept the contribution.</p>
<h4>Gaining influence and decision-making</h4>
<p>Because at first we aren't known in the project, the other contributors don't know yet to trust our technical skills, or our commitment to the project's advancement. So while they might be interested in collaborating with us to get more contributions to the project, they have to pick where to spend their time. So they might be less willing to engage in long conversations about the merits of our work. As newcomers to the project, we will get more cooperation from its existing members and more work merged if we readily address all their review comments, without pushing back.</p>
<p>Once we know the project members better, and we have more credit as a recurring contributor, we will have more latitude to address controversial topics -- but we first need to prove that we can work with the existing community of contributors. That we can walk the walk, before talking the talk. We need to work our way progressively through the contributions levels described in the previous section, as each will unlock a level of trust and immersion in the project that will help for the next contribution level. Arguing over technical decisions is an advanced level of contributor.</p>
<p>This is again similar to joining a new group in general -- like for a new job, or going to a party with people we don't know: if the host asks to help set the table, and wants it done in a specific way, it would be rude to refuse or criticize the approach. Being at someone's place and not knowing anyone, we are expected to conform to their way of doing things -- and if we don't like it, we can always go home early. After a while, once we have a good relationship with the host, and have helped our share, we can start to say,<em> "Hey, I'm not sure about the way we set the table, maybe there is a better way?"</em></p>
<p><em>[Media: illustration of someone starting at a new job - humoristic?]</em></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>
<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-05-ver-03" data-request-token="bca3bfb4903211ee8c631237928d7ffd" 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-05-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-04-seq-05-ver-03-html-01" data-request-token="bca3bfb4903211ee8c631237928d7ffd" 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-05-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"><p>When contributing, it is important to come back and check on progress regularly -- to follow-up if nothing moved, answer promptly to replies and address review comments. It is time to do so for the <a href="/courses/course-v1:MOOC-FLOSS+101+2021_1/jump_to_id/9487b94b42b5491db5ad13bd691d107e" target="[object Object]">micropatch contribution</a> and the <a href="/courses/course-v1:MOOC-FLOSS+101+2021_1/jump_to_id/16963a46841542e5af1ad0e9079cb8fa" target="[object Object]">documentation contribution</a> that we started in the previous module.</p>
</div></div>
</div>
</div>
<div class="vert vert-1" data-id="block-v1:MOOC-FLOSS+101+2021_1+type@problem-builder+block@015f92531bb047df9e141afe102784bf">
<div class="xblock xblock-public_view xblock-public_view-problem-builder" data-course-id="course-v1:MOOC-FLOSS+101+2021_1" data-block-type="problem-builder" data-usage-id="block-v1:MOOC-FLOSS+101+2021_1+type@problem-builder+block@015f92531bb047df9e141afe102784bf" data-request-token="bca3bfb4903211ee8c631237928d7ffd" 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">Micropatch follow-up 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-2" data-id="block-v1:MOOC-FLOSS+101+2021_1+type@problem-builder+block@d07cc9fd780440dab76de82d207a0df1">
<div class="xblock xblock-public_view xblock-public_view-problem-builder" data-course-id="course-v1:MOOC-FLOSS+101+2021_1" data-block-type="problem-builder" data-usage-id="block-v1:MOOC-FLOSS+101+2021_1+type@problem-builder+block@d07cc9fd780440dab76de82d207a0df1" data-request-token="bca3bfb4903211ee8c631237928d7ffd" 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">Documentation contribution follow-up 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>