Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Fix for manually crafted clusters.
[simgrid.git] / doc / doxygen / community_giveback.doc
1 /*! @page community_giveback Giving back to SimGrid
2
3 @tableofcontents
4
5 We are sometimes asked by users how to give back to the project. Here
6 are some ideas, but if you have new ones, feel free.
7
8 @section contributing_spread Spread the word
9
10 There is many ways to help the SimGrid project. The first and most
11 natural one is to <b>use it for your research, and say so</b>. Cite
12 the SimGrid framework in your paper and discuss of its advantages with
13 your colleagues to spread the word. When we ask for new fundings to
14 sustain the project, the amount of publications enabled by SimGrid is
15 always the first question that we get. The more you use the framework,
16 the better for us. 
17
18 We use several systems to detect the scientific publications citing
19 our work, so actually citing correctly the framework (see 
20 <a href="http://simgrid.gforge.inria.fr/Publications.html">here</a>)
21 should be enough to get us adding your paper to our list. But if you
22 remark that your paper is missing on 
23 <a href="http://simgrid.gforge.inria.fr/Usages.html">our 
24 page listing all papers using SimGrid</a>, please say so. Likewise, if
25 your paper is badly cited, please drop us an email so that we can fix
26 it.
27
28 Also, <b>help us constituting an active and welcoming user
29 community</b>. Get subscribed to the mailing lists, and answer the
30 questions that newcommers have if you can. Point them (gentely ;) to
31 the relevant part of the documentation on need, and help them becoming
32 part of our community too. 
33
34 Another easy way to help the project is to add a link to the
35 <a href="http://simgrid.gforge.inria.fr">SimGrid homepage</a>
36 on your homepage to <b>improve SimGrid's ranking in the search
37 engines</b>. Internet visibility is a battle where you can make the
38 difference. This can be done by adding the following html snipet to
39 your page, that simply renders as <a href="http://simgrid.gforge.inria.fr/">Simgrid</a>.
40
41 @verbatim
42 <a href="http://simgrid.gforge.inria.fr/" 
43    title="Versatile simulation of distributed systems: Grid Simulator, P2P simulator, MPI simulator, Cloud Simulator or HPC Simulator">
44    Simgrid</a>
45 @endverbatim
46
47 Or you can prefer this version with a little logo (if you want to
48 contribute another logo for that, please don't hesitate ;)
49 <img src="http://simgrid.gforge.inria.fr/logos/simgrid_logo.png"/>
50
51 @verbatim
52 <a href="http://simgrid.gforge.inria.fr/" 
53    title="Versatile simulation of distributed systems: Grid Simulator, P2P simulator, MPI simulator, Cloud Simulator or HPC Simulator">
54    <img src="http://simgrid.gforge.inria.fr/logos/simgrid_logo.png"
55         alt="Versatile simulation of distributed systems: Grid Simulator, P2P simulator, MPI simulator, Cloud Simulator or HPC Simulator" align="center"> 
56 </a>
57 @endverbatim
58
59 Finally, if you organize a scientific event where you expect many
60 potential users, <b>invite us to give a tutorial on SimGrid</b>. We
61 found that 45 minutes to one hour is sufficient. It allows to explain
62 the main motivations and outcomes of the project in order to motivate
63 the attendees get more information on SimGrid, and eventually improve
64 their scientific habits by using a sound simulation framework. 
65 <a href="http://webloria.loria.fr/~quinson/blog/2012/1120/Simgrid_at_Louvain/">Here</a>
66 is an example of such a presentation.
67
68 @section contributing_bugs Reporting (and fixing) any issue you find
69
70 Because of its size and complexity, SimGrid is not perfect and
71 contains a large amount of glitches and issues. When you find one,
72 don't assume that it's here because we don't care. It survived only
73 because nobody told us. We unfortunately cannot endlessly review our
74 large code and documentation base. So please, <b>report any issue you
75 find</b>, be it a typo in the documentation, a paragraph that
76 needs to be reworded, a bug in the code or any other problem. The best
77 way to do so is to open a bug on our 
78 <a href="https://gforge.inria.fr/tracker/?atid=165&group_id=12&func=browse">Bug
79 Tracking System</a> so that we don't forget about it (we have other
80 obligations too and are sometimes unable to fix bugs right away, no
81 matter how easy the fix it). The worst way to report such issue is to
82 go through private emails. These are unreliable, and we are trying to
83 develop SimGrid openly, so private discussions are to be avoided if
84 possible. 
85
86 If you can provide a patch fixing the issue you report, that's even
87 better, and often ensures that it will get fixed very soon.
88
89 Of course, a very good way to give back to the SimGrid community is to
90 <b>triage and fix the bugs in the BTS</b>. If you
91 can come up with a patch fixing them, we will be more than happy to
92 apply your changes so that the entier community enjoys them.
93
94 @section contributing_contrib Contributing features and associated tools
95
96 If you deeply miss a feature in the framework, you should consider
97 implementing it yourself. That's free software, meaning that you are
98 free to help yourself. Of course, we'll do our best to assist you in
99 this task, so don't hesitate to contact us with your idea.
100
101 If you develop an independent tool that is somehow associated to
102 SimGrid, we'd love helping you gaining visibility by listing it on our 
103 <a href="http://simgrid.gforge.inria.fr/contrib.html">Contrib
104 section</a>. 
105
106 @section contributing_todo Enchancements
107
108 If you want to want to start working on the SimGrid codebase, here are a few
109 ideas of things that could be done to improved the current code (not all of them
110 are easy, though):
111
112 @subsection contributing_todo_cxxification Migration to C++
113
114 The code is being migrated to C++ but a large part is still C (or C++ with
115  idioms). It would be valuable to replace C idioms with C++ ones:
116
117  - replace XBT structures with C++ containers;
118
119  - replace `char*` with `std::string`;
120
121  - use RAII (`std::unique_ptr`, etc.) instead of explicit `malloc/free` or
122    `new/delete`.
123
124 @subsection contributing_todo_exceptions Migration to C++
125
126 SimGrid used to implement exceptions in C. This has been replaced with C++
127 exceptions but some bits of the C exceptions are still remaining:
128
129  - `xbt_ex` was the type of C exceptions. It is now a standard C++ exception.
130     We might want to remove this and use a more idiomatic C++ solution.
131     `std::system_error` might be used for some error categories.
132
133  - The C API currently throws exceptions exceptions. Throwing exceptions out
134    of C API is not very friendly. C code does not expect them, cannot catch
135    them and cannot handle resource management properly with exceptions.
136    We should clearly separate the C++ API and the C API and catch all exceptions
137    before they get ouf of C APIs.
138
139 @subsection contributing_todo_futures Additions to the futures
140
141  - Some features are missing in the Maestro future implementation
142   (`simgrid::simix::Future`, `simgrid::simix::Promise`)
143   could be extended to support additional features:
144   `when_any`, `shared_future`, etc.
145
146  - The corresponding feature might then be implemented in the user process
147    futures.
148
149  - We might need to provide the option to cancel a pending operation. This
150    might be achieved by defining some `Action` or `Operation` class with an
151    API compatible with `Future` (and convertiable to it) but with an
152    additional `.cancel()` method.
153
154 @subsection contributing_todo_simcalls Simcalls cleanup
155
156  - Remove simcalls by using the generic ones. One issue with this is that we
157    didn't devise a good way to deal with generic simcalls in the model-checker
158    yet.
159
160 @subsection contributing_todo_mc Model-checker
161
162  - Find a good solution to handle generic simcalls in the model-checker.
163
164  - Define a clear interface to be used by model-checking algorithms. The
165    `Session` class in intended to expose this interface but it is not a thing
166    yet.
167
168  - Rewrite the different algorithms as implementations of the `Checker` class
169    using the `Session` inteface.
170
171  - Currently a lot of informations the model-checker reads many informations
172    about the model-checked process by `process_vm_readv()`-ing brutally the
173    data structure leading to some horrible code such as walking a swag from
174    another process. It would be nice to have a sane way for the model-checker
175    to expose the relevant information to the model-checker.
176
177 */