<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-06-seq-03-ver-01" data-request-token="c13a9c4a903311ee8c631237928d7ffd" 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-06-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-06-seq-03-ver-01-html-01" data-request-token="c13a9c4a903311ee8c631237928d7ffd" 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-06-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"><h5>Read the doc</h5>
<p>Almost all software projects, no matter the programming language used, provide ways to get their software to run, which usually amounts to the following steps:</p>
<p></p>
<h5>Install the requirements</h5>
<p>Very few project don't have any dependencies : whether tools are needed to build it, or whether the code calls libraries, you'll need to setup some stuff.</p>
<h5>Build the project</h5>
<p>For compiled languages such as C or C++, this usually means compiling, while interpreted languages could create some cache files (like .pyc files for Python), prepare or minify assets, or setup database tables. In any case, this step creates files that will be directly usable in the next.</p>
<h5>Run the project</h5>
<p>Launch everything that you prepared! This could be arbitrarily difficult: from the executable that you can just run, up to the web services that require a precise environment configuration.</p>
<h5>Run the tests</h5>
<p>Most projects have <strong>unit tests</strong> that can be run independently to check that individual parts of the code work</p>
<h5>Debugging - Profiling</h5>
<p>Sometimes you will have to run the projet in "debug mode", this requires a specific setup to be able to debug the code by enabling step-by-step execution of the code and visualizing the state of the program at each step. In extreme cases where performance issues are to be fixed, you will have to run the project in "profiling mode" and be able to "profile" the program to visualize different metrics during its execution (memory consumption, CPU usage, Input/Output rate...).</p>
<h5>Help!</h5>
<p data-sourcepos="45:1-46:114" dir="auto">While all the above is Supposed To Work™, you'll find that in many cases it's not as simple as that: You may find missing steps, sometimes things that "everyone knows" but are not written down, etc. As a general rule, if the procedure is documented, you should try to understand and follow it; and if the documentation is wrong, asking about it and helping fix it is probably the best thing to do. If there is no documentation, then it's normal to ask about it : you don't know the steps yet, so you actually have the best perspective to write a newcomer documentation!</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>