|
33 | 33 | "\n", |
34 | 34 | "Software and technology underpin modern science, which is now almost inevitably computational to varying degrees. There is an ever-increasing demand for more sophisticated Open Source Software, matched by an increasing willingness for researchers to openly collaborate on new tools. The power of Open Source is in that it lowers the barriers to collaboration and adoption, therefore allowing ideas and technology to spread more rapidly. This Module will introduce the necessary tools required for transforming software into something that can be openly accessed and re-used by others.\n", |
35 | 35 | "\n", |
36 | | - "<img src=\"https://github.com/OpenScienceMOOC/Module-5-Open-Research-Software-and-Open-Source/blob/master/content_development/images/open_research_software_open_source.png?raw=true\" width=\"800\" />\n", |
| 36 | + "<img src=\"https://github.com/OpenScienceMOOC/Module-5-Open-Research-Software-and-Open-Source/blob/master/content_development/images/open_research_software_open_source.png\" width=\"800\" />\n", |
37 | 37 | "\n", |
38 | | - "Image by Patrick Hochstenbach (CC0 1.0 Universal) ([source](https://www.fosteropenscience.eu/trainers-materials))\n", |
| 38 | + "<p align=\"center\"><i>Image by Patrick Hochstenbach (CC0 1.0 Universal) ([source](https://www.fosteropenscience.eu/trainers-materials))</i></p>\n", |
| 39 | + "\n", |
| 40 | + "<br/>\n", |
39 | 41 | "\n", |
40 | 42 | "### **Specific learning outcomes for this Module**:\n", |
41 | 43 | "\n", |
|
45 | 47 | "* You will be able to transform code designed for your personal use into code that is accessible and re-usable by others.\n", |
46 | 48 | "* Software developers will be able to make their software citable, and software users will know how to cite the software they use.\n", |
47 | 49 | "\n", |
| 50 | + "<br/>\n", |
48 | 51 | "\n", |
49 | 52 | "## What is Open Source Software <a name=\"What_OSS\"></a>\n", |
50 | 53 | "\n", |
|
69 | 72 | "\n", |
70 | 73 | "Some regard the OSS movement to represent a counter-movement to neoliberalism and privatisation, through defiance of regulations and norms in the construction and re-use of information, and a potential transformation of modern-day capitalism through making software abundantly available with minimal effort.\n", |
71 | 74 | "\n", |
| 75 | + "<br/>\n", |
72 | 76 | "\n", |
73 | 77 | "## Principles of Open Source Software <a name=\"Principles\"></a>\n", |
74 | 78 | "\n", |
|
100 | 104 | "\n", |
101 | 105 | "These definitions have now become widely adopted, both by international governments, as well as some large organisations such as the [Mozilla Foundation](https://www.mozilla.org/en-US/foundation/) and the [Wikimedia Foundation](https://wikimediafoundation.org/wiki/Home).\n", |
102 | 106 | "\n", |
103 | | - "### An Open Source checklist\n", |
| 107 | + "<br/>\n", |
| 108 | + "\n", |
| 109 | + "## An Open Source checklist\n", |
104 | 110 | "\n", |
105 | 111 | "There are a number of existing platforms and tools that support OSS and collaboration. The [Open Science Training Handbook](https://open-science-training-handbook.gitbook.io/book/es/02opensciencebasics/03openresearchsoftwareandopensource#knowledge) provides a check-list to use for evaluating the 'openness' of existing research software, based on the Open Source Definition above:\n", |
106 | 112 | "\n", |
|
111 | 117 | "* Is the full history of the source code available for inspection through a publicly available version history?\n", |
112 | 118 | "* Are the dependencies of the software (hardware and software) described properly? Do these dependencies require only a reasonably minimal amount of effort to obtain and use?\n", |
113 | 119 | "\n", |
| 120 | + "<br/>\n", |
114 | 121 | "\n", |
115 | 122 | "## The Open Source community and its governance <a name=\"OS_Community\"></a>\n", |
116 | 123 | "\n", |
|
130 | 137 | "\n", |
131 | 138 | "Typically, roles are made public through either the README file, a Contributors file, or a separate team page for the project.\n", |
132 | 139 | "\n", |
| 140 | + "<br/>\n", |
133 | 141 | "\n", |
134 | 142 | "## Existing platforms and tools for Open Source Software <a name=\"Platforms\"></a>\n", |
135 | 143 | "\n", |
|
151 | 159 | "\n", |
152 | 160 | "Other similar project hosting services include [BitBucket](https://bitbucket.org/), [GitLab](https://about.gitlab.com/), and [Launchpad](https://launchpad.net/).\n", |
153 | 161 | "\n", |
154 | | - "**[Task 1: Building a GitHub repository](Task_1.md)**\n", |
| 162 | + "**[GO TO TASK 1: Building your first GitHub repository](Task_1.md)**\n", |
| 163 | + "\n", |
| 164 | + "<br/>\n", |
155 | 165 | "\n", |
156 | 166 | "## Making good software for re-use <a name=\"Reuse\"></a>\n", |
157 | 167 | "\n", |
|
163 | 173 | "\n", |
164 | 174 | "An extension of this that can help to make things even easier for future re-use is container technology. Containers are like an ecosystem frozen in time, where the code, the data, any other dependencies, are all packaged and saved in the present functioning versions so that in the future any one can come in and run the analyses again. As such, they are generally good for re-use, but this can come at the sacrifice of modification or understanding by others, as often a lot of details can be hidden within the source code and its dependencies. Common examples of container implementation in research include [Rocker](https://github.com/OpenScienceMOOC/Module-5-Open-Research-Software-and-Open-Source/blob/master/Reading%20Material_Open%20Source%20and%20Open%20Research%20Software/Boettiger%20and%20Eddelbuettel%2C%202017.pdf) (a Docker container for the R language), [Binder](https://mybinder.readthedocs.io/en/latest/), and [Code Ocean](https://codeocean.com/). Sustainable software is good software.\n", |
165 | 175 | "\n", |
166 | | - "### 10 simple rules for reproducible computational research\n", |
| 176 | + "<br/>\n", |
| 177 | + "\n", |
| 178 | + "## 10 simple rules for reproducible computational research\n", |
167 | 179 | "\n", |
168 | 180 | "The 10 simple rules for making computational research more reproducible, based on [Sandve et al., (2013)](https://github.com/OpenScienceMOOC/Module-5-Open-Research-Software-and-Open-Source/blob/master/Reading%20Material_Open%20Source%20and%20Open%20Research%20Software/Sandve%20et%20al.%2C%202013.PDF), are:\n", |
169 | 181 | "\n", |
|
178 | 190 | "9. Connect textual statements to underlying results.\n", |
179 | 191 | "10. Provide public access to scripts, runs, and results.\n", |
180 | 192 | "\n", |
181 | | - " \n", |
| 193 | + "<p align=\"center\"><img src=\"https://github.com/OpenScienceMOOC/Module-5-Open-Research-Software-and-Open-Source/blob/master/content_development/images/simple_rules.png\" width=\"800\" /></p>\n", |
182 | 194 | "\n", |
183 | | - "<br/>\n", |
| 195 | + "<p align=\"center\"><i>Infographic adapted from Sandve et al., (2013). Feel free to download this to keep handy during your research!</i></p>\n", |
184 | 196 | "\n", |
185 | | - "Infographic adapted from Sandve et al., (2013). Feel free to download this to keep handy during your research!\n", |
| 197 | + "<br/>\n", |
186 | 198 | "\n", |
187 | 199 | "If you follow these steps, along with the processes in [**Task 1**](https://github.com/OpenScienceMOOC/Module-5-Open-Research-Software-and-Open-Source/blob/master/content_development/Task_1.md) and [**Task 2**](https://github.com/OpenScienceMOOC/Module-5-Open-Research-Software-and-Open-Source/blob/master/content_development/Task_2.md), you should be fine!\n", |
188 | 200 | "\n", |
| 201 | + "<br/>\n", |
| 202 | + "\n", |
189 | 203 | "## Open Source licensing <a name=\"Licensing\"></a>\n", |
190 | 204 | "\n", |
191 | 205 | "An Open Source license is a type of license designed specifically for software and code that make it explicit what the legal conditions for sharing and re-use are. As mentioned [above](#What_OSS), the addition of a suitable license is what differentiates publicly shared software from OSS. For example, the widely used [MATLAB](https://www.mathworks.com/products/matlab.html) is proprietary software, and [Octave](https://www.gnu.org/software/octave/) is an openly licensed alternative programming language.\n", |
|
205 | 219 | "\n", |
206 | 220 | "Thankfully, the process of selecting an Open Source license is relatively trivial, thanks to user-friendly tools such as [Choose A License](https://choosealicense.com/). Each of these licenses allows other users to use, copy, distribute, and build upon your work, often while ensuring that the creators are appropriately recognised for their work. Here, the key is selecting an appropriate license for your work, depending on what you want, or do not want, others to do with it.\n", |
207 | 221 | "\n", |
| 222 | + "<br/>\n", |
208 | 223 | "\n", |
209 | 224 | "## Software citation <a name=\"Citation\"></a>\n", |
210 | 225 | "\n", |
|
225 | 240 | "\n", |
226 | 241 | "* **Unique identification**: A software citation should include a method for identification that is machine actionable, globally unique, interoperable, and recognized by at least a community of the corresponding domain experts, and preferably by general public researchers.\n", |
227 | 242 | "\n", |
228 | | - "* **Persistence**: Unique identifiers and metadata describing the software and its disposition should persist—even beyond the lifespan of the software they describe.\n", |
| 243 | + "* **Persistence**: Unique identifiers and metadata describing the software and its disposition should persist - even beyond the lifespan of the software they describe.\n", |
229 | 244 | "\n", |
230 | 245 | "* **Accessibility**: Software citations should facilitate access to the software itself and to its associated metadata, documentation, data, and other materials necessary for both humans and machines to make informed use of the referenced software.\n", |
231 | 246 | "\n", |
232 | 247 | "* **Specificity**: Software citations should facilitate identification of, and access to, the specific version of software that was used. Software identification should be as specific as necessary, such as using version numbers, revision numbers, or variants such as platforms.\n", |
233 | 248 | "\n", |
234 | 249 | "Note: For instructions on 'how to make your software citable' see the section [**Using GitHub and Zenodo**](#GitHub_Zenodo) and [**Task 2: Linking GitHub and Zenodo**](https://github.com/OpenScienceMOOC/Module-5-Open-Research-Software-and-Open-Source/blob/master/content_development/Task_2.md).\n", |
235 | 250 | "\n", |
| 251 | + "<br/>\n", |
| 252 | + "\n", |
236 | 253 | "## Using GitHub and Zenodo <a name=\"GitHub_Zenodo\"></a>\n", |
237 | 254 | "\n", |
238 | 255 | "[GitHub](#GitHub) is a popular tool for project management, content storage, and version control. Note that GitHub itself is not OSS. However, Git, the tool which it is based on, is. Git is designed to help manage the source code files, and the updates to them, for a software-related project. However, it can also be extended to other non-software projects; for example, this [MOOC](https://github.com/OpenScienceMOOC/)!\n", |
|
243 | 260 | "\n", |
244 | 261 | "A lot of researchers might typically be afraid of sharing code which is incomplete, buggy, or imperfect. However, in the OSS community, such a practice of sharing 'raw' code is fairly commonplace. Sharing code openly enables others to re-use and improve it, as well as to engage in a deeper way with any research associated with it. This is one of the fundamental aspects of peer-collaboration, perhaps best exemplified by the traditional process of research manuscript peer review.\n", |
245 | 262 | "\n", |
246 | | - "**[Task 2: Linking GitHub and Zenodo](Task_2.md)**\n", |
| 263 | + "**[GO TO TASK 2: Linking GitHub and Zenodo](Task_2.md)**\n", |
| 264 | + "\n", |
| 265 | + "<br/>\n", |
247 | 266 | "\n", |
248 | 267 | "## Collaborating and contributing through Open Source <a name=\"Collaborating\"></a>\n", |
249 | 268 | "\n", |
250 | 269 | "Often, OSS is developed in a public, decentralised, collaborative manner between multiple contributors. The purpose of this is to enhance the diversity and scope of a project and its design, in order to become more beneficial and sustainable. Such an approach was famously likened to a 'bazaar' model by Eric Raymond, an early OSS proponent. One of the major guiding principles of this is that of peer production, which relies on self-organised communities to regulate the development of content, co-ordinated towards a shared goal or outcome.\n", |
251 | 270 | "\n", |
252 | 271 | "OSS projects rely heavily on volunteer collaboration, which often entails a constant flux of newcomers in order to become productive and sustainable ([Steinmacher et al., 2014](https://github.com/OpenScienceMOOC/Module-5-Open-Research-Software-and-Open-Source/blob/master/Reading%20Material_Open%20Source%20and%20Open%20Research%20Software/Steinmacher%20et%20al.%2C%202014.pdf)). Creating the right social atmosphere for a project, and a welcoming engagement environment, are often critical to successful collaboraitons in OSS.\n", |
253 | 272 | "\n", |
| 273 | + "<br/>\n", |
| 274 | + "\n", |
254 | 275 | "## Where to go from here <a name=\"Future_OSS\"></a>\n", |
255 | 276 | "\n", |
256 | 277 | "Hopefully now you have come to see the importance of software as a cornerstone of modern science, and the importance that OSS plays in this.\n", |
|
274 | 295 | "\n", |
275 | 296 | "* More formalised journal venues also exist for software-based articles, including [The Journal of Open Research Software](https://openresearchsoftware.metajnl.com/) and [The Journal of Open Source Software](https://joss.theoj.org/). A list of such venues is also [available](https://www.software.ac.uk/which-journals-should-i-publish-my-software).\n", |
276 | 297 | "\n", |
| 298 | + "<br/>\n", |
277 | 299 | "\n", |
278 | 300 | "### Further reading <a name=\"Reading\"></a>\n", |
279 | 301 | "\n", |
|
294 | 316 | "* Four simple recommendations to encourage best practices in research software [(Jiménez et al., 2017)](https://github.com/OpenScienceMOOC/Module-5-Open-Research-Software-and-Open-Source/blob/master/Reading%20Material_Open%20Source%20and%20Open%20Research%20Software/Jim%C3%A9nez%20et%20al.%2C%202018.pdf).\n", |
295 | 317 | "* Perspectives on Reproducibility and Sustainability of Open-Source Scientific Software from Seven Years of the Dedalus Project [(Oishi et al., 2018)](https://github.com/OpenScienceMOOC/Module-5-Open-Research-Software-and-Open-Source/blob/master/Reading%20Material_Open%20Source%20and%20Open%20Research%20Software/Oishi%20et%20al.%2C%202018.pdf).\n", |
296 | 318 | "\n", |
| 319 | + "<br/>\n", |
297 | 320 | "\n", |
298 | 321 | "### Development Team <a name=\"Development_team\"></a>\n", |
299 | 322 | "\n", |
|
307 | 330 | ] |
308 | 331 | } |
309 | 332 | ], |
310 | | - "metadata": { |
311 | | - "kernelspec": { |
312 | | - "display_name": "Python 3", |
313 | | - "language": "python", |
314 | | - "name": "python3" |
315 | | - }, |
316 | | - "language_info": { |
317 | | - "codemirror_mode": { |
318 | | - "name": "ipython", |
319 | | - "version": 3 |
320 | | - }, |
321 | | - "file_extension": ".py", |
322 | | - "mimetype": "text/x-python", |
323 | | - "name": "python", |
324 | | - "nbconvert_exporter": "python", |
325 | | - "pygments_lexer": "ipython3", |
326 | | - "version": "3.6.5" |
327 | | - } |
328 | | - }, |
| 333 | + "metadata": {}, |
329 | 334 | "nbformat": 4, |
330 | 335 | "nbformat_minor": 2 |
331 | 336 | } |
0 commit comments