From be6074a78ab70a638ce5d9aec64a0d462bbbd19f Mon Sep 17 00:00:00 2001 From: "Fotis E. Psomopoulos" Date: Mon, 3 Sep 2018 13:37:08 +0300 Subject: [PATCH 1/6] Update on the metadata episode, first draft of introduction & setup - metadata: Added the "movie" exercise - metadata: Added bio.tool figure and info - metadata: Added more definitions - metadata: Added explanation of controlled vocabulary vs ontology - metadata: General fixes, typos and timing - introduction: first draft - setup: create accounts on GitHub and bio.tools - guide: added only metadata points --- _episodes/01-introduction.md | 38 ++++++++++++++-- _episodes/03-use-registry.md | 85 ++++++++++++++++++++--------------- _extras/guide.md | 7 +++ fig/bio-tools-main-ui.png | Bin 0 -> 67077 bytes setup.md | 13 +++++- 5 files changed, 102 insertions(+), 41 deletions(-) create mode 100644 fig/bio-tools-main-ui.png diff --git a/_episodes/01-introduction.md b/_episodes/01-introduction.md index 4f375b3..4073338 100644 --- a/_episodes/01-introduction.md +++ b/_episodes/01-introduction.md @@ -1,11 +1,41 @@ --- title: "Introduction" -teaching: 0 +teaching: 10 exercises: 0 questions: -- "Key question" +- "Why are best practices necessary in research software" objectives: -- "First objective." +- "What are the basics of Open Science in research software" +- "What are the FAIR principles" keypoints: -- "First key point." +- "Best practices in research software are tied to the FAIR principles" +- "They are not tailored to software developers, but rather to a wider audience" --- + +Scientific research relies on computer software, yet software is not always developed following practices that ensure its quality and sustainability. One of the most recent publications ([Four simple recommendations to encourage best practices in research software](https://f1000research.com/articles/6-876/v1)) provided a simple, yet robust framework of simple recommendations that encourage the adoption of existing best practices in developing research software. These recommendations are designed around Open Science values, and provide practical suggestions that contribute to making research software and its source code more discoverable, reusable and transparent. + +Based on these recommendations, this lesson focuses on providing both the underlying context as well as some practical exercises towards establishing their usefulness in the long term. The consequent episodes of this lesson are structured in the form of one episode per recommendation; +1. Make source code publicly accessible from day one +2. Make software easy to discover by providing software metadata via a popular community registry +3. Adopt a license and comply with the license of third-party dependencies +4. Define clear and transparent contribution, governance and communication processes + +## Open Science + +"_When all researchers are aware of Open Science, and are trained, supported and guided at all career stages to practice Open Science, the potential is there to fundamentally change the way research is performed and disseminated, fostering a scientific ecosystem in which research gains increased visibility, is shared more efficiently, and is performed with enhanced research integrity._" [Open Science Skills Working Group Report (2017)](https://ec.europa.eu/research/openscience/pdf/os_skills_wgreport_final.pdf#view=fit&pagemode=none) + +Discussing best practices in developing research software, one is bound to touch on the subject of Open Science. Modern research relies on software, and building upon—or reproducing—that research requires access to the full source code behind that software ([ref](https://open-science-training-handbook.gitbook.io)). Sharing software used for research (whether computational in nature, or that relies on any software-based analysis/interpretation) is a necessary, though not sufficient, condition for reproducibility. In addition to reproducibility, sharing software openly allows developers to receive career credit for their efforts, either through direct citation or via published software articles. We are going to be discussing all these aspects in the following lesson. + +## FAIR principles + +The FAIR principles are a set of community-developed guidelines to ensure that data or any digital object are Findable, Accessible, Interoperable and Reproducible. The FAIR principles specifically emphasize enhancing the ability of machines to automatically find and use data or any digital object, and support its reuse by individuals. Standards for the description, interoperability, citation etc. are at the core of these principles ([ref](https://www.incf.org/activities/standards-and-best-practices/what-is-fair)). + +The FAIR Guiding Principles, as described in [Scientific Data by Wilkinson et al](https://www.nature.com/articles/sdata201618): +- To be **Findable** +- To be **Accessible** +- To be **Interoperable** +- To be **Reusable** + +## Why best practices in research software + +There are many best practices currently in place that directly aim and are tailored for software developers. These includes aspects such as test-first programing and test coverage ([ref](https://github.com/r-lib/covr)), code quality ([ref](https://qaas.cyclopt.com/)), continuous integration ([ref](https://travis-ci.org)), etc. Unlike many software development best practices, this lesson aims to target a wider audience, particularly research funders, research institutions, journals, group leaders, and managers of projects producing research software. The adoption of these recommendations offer a simple mechanism for these stakeholders to promote the development of better software and an opportunity for developers to improve and showcase their software development skills. diff --git a/_episodes/03-use-registry.md b/_episodes/03-use-registry.md index f0c6756..1ff5d95 100644 --- a/_episodes/03-use-registry.md +++ b/_episodes/03-use-registry.md @@ -1,13 +1,12 @@ --- title: "Make software easy to discover by providing software metadata via a popular community registry" teaching: 90 -exercises: 0 +exercises: 45 questions: - "Why are metadata important in research software?" - "What are good metadata?" - "Which are the most commonly used platforms for registering research software data." objectives: - - "Understand the importance of metadata" - "Understand why metadata are necessary for software discoverability" - "Have a clear concept of what good metadata entail" @@ -26,24 +25,28 @@ You are already using metadata, but you might not be fully aware of it. **Definition** -Metadata (for data) can be defined as ["a set of data that describes and gives information about other data"](https://en.wikipedia.org/wiki/Metadata) or ["Meta is a prefix that in most information technology usages means 'an underlying definition or description'"](https://whatis.techtarget.com/definition/metadata). For some more information and examples, [follow this link](https://web.archive.org/web/20160306145239/http://www.theguardian.com/technology/interactive/2013/jun/12/what-is-metadata-nsa-surveillance#meta=0000000). +Metadata (for data) can be defined as: +- ["A set of data that describes and gives information about other data"](https://en.oxforddictionaries.com/definition/metadata) +- ["Meta is a prefix that in most information technology usages means 'an underlying definition or description'"](https://whatis.techtarget.com/definition/metadata) + +For some more information and examples, [follow this link](https://web.archive.org/web/20160306145239/http://www.theguardian.com/technology/interactive/2013/jun/12/what-is-metadata-nsa-surveillance#meta=0000000). -For the software case, we have defined metadata as "a set of data that describes and gives information about software with the purpose of make it findable/discoverable". +For the software case, we have defined metadata as "_a set of data that describes and gives information about software with the purpose of make it findable/discoverable_". > ## Exercise: Think about metadata > #### Time 5 minutes > > Let's think about why metadata is useful to describe a publication. We have for instance a title and authors. What other metadata can you think of? Why would you say those are metadata? -> +> > By the end of this exercise, you should be able to better understand the difference between data and metadata. > > > ## Solution > > > > Some other common metadata for publications are starting page, ending page, journal where it was published, volume and item. -> > -> > They are considered metadata because they give you information about the publication but they are not the publication. -> > +> > +> > They are considered metadata because they give you information about the publication but they are not the publication. +> > > {: .solution} {: .discussion} @@ -51,8 +54,13 @@ For the software case, we have defined metadata as "a set of data that describes **Definition** From Wikipedia, ["Software documentation is written text or illustration that accompanies computer software or is embedded in the source code. It either explains how it operates or how to use it, and may mean different things to people in different roles."](https://en.wikipedia.org/wiki/Software_documentation) +All software documentation can be divided into two main categories ([ref](https://www.altexsoft.com/blog/business/software-documentation-types-and-best-practices/)), _Product_ documentation and _Process_ documentation. Most of the time you will be dealing with the _Product documentation_, which describes the product that is being developed and provides instructions on how to perform various tasks with it. Product documentation can be broken down into: +- System documentation and +- User documentation + +_System documentation_ represents documents that describe the system itself and its parts. It includes requirements documents, design decisions, architecture descriptions, program source code, and help guides. On the other hand, _User documentation_ covers manuals that are mainly prepared for end-users of the product and system administrators. User documentation includes tutorials, user guides, troubleshooting manuals, installation, and reference manuals. -That is, metadata helps describe the software in a standardised way, so it can be findable/discoverable, by both machines and humans. +Opposed to the documentation, metadata helps describe the software in a standardized way, so it can be findable/discoverable, by both machines and humans. > ## Software metadata vs documentation > @@ -61,6 +69,25 @@ That is, metadata helps describe the software in a standardised way, so it can b {: .callout} +> ## Exercise: Highlighting the importance of metadata +> #### Time 20 minutes +> +> **Part 1** +> Split into Groups of 3-4; each group decides on "keywords" / placeholders for describing a movie (do **not** include the title!). Such keywords might include attributes such as _Director_, _Year_, _Actor(s)_, _Genre_, _Duration_, _Setting_, etc. As soon the placeholders are defined, every person in the group thinks of a movie and tries to describe it based on specific keywords. +> Do people identify the movie? If you put the keywords in Google, does it give you back the correct movie? +> +> **Part 2** +> Do the same thing but for a research tool (it can be of the same scientific discipline as the people comprising the group, or a general purpose tool). +> +> By the end of this exercise, you should be able to internalize what metadata are and what **good** metadata are. +> +> > ## Solution +> > +> > TODO +> > +> {: .solution} +{: .discussion} + ## What are the existing commonly used standards descriptions for software metadata @@ -78,15 +105,14 @@ A standard can be defined as "a structure agreed and adopted by a community" or > {: .callout} -TODO: difference between control vocabulary and ontology. - +**Controlled vocabularies** provide a way to organize knowledge for subsequent retrieval. It is usually a carefully selected list of words and phrases, which are used to tag units of information (document or work) so that they may be more easily retrieved by a search. The fundamental difference between an **ontology** and a **controlled vocabulary** is the level of abstraction and relationships among concept. A formal ontology is a controlled vocabulary expressed in an ontology representation language. ([ref](https://semwebtec.wordpress.com/2010/11/23/contolled-vocabulary-vs-ontology/)) Examples - The [Gene Ontology](https://http://www.geneontology.org/) (GO) is the framework for the model of biology. The GO defines concepts/classes used to describe gene function, and relationships between these concepts. It classifies functions along three aspects: molecular function, cellular component and biological process - The [Climate and Forecast (CF) metadata](https://http://cfconventions.org/) are designed to promote the processing and sharing of files created with the NetCDF API. The CF conventions are increasingly gaining acceptance and have been adopted by a number of projects and groups as a primary standard. The conventions define metadata that provide a definitive description of what the data in each variable represents, and the spatial and temporal properties of the data. - The [myGrid Ontology](https://http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.118.4077&rep=rep1&type=pdf) is designed to support web service discovery and composition in the bioinformatics domain. myGrid supports in silico experiments in the life sciences, enabling the design and enactment of workflows as well as providing components to assist service discovery, data and metadata management. The myGrid ontology is one component in a larger semantic discovery framework for the identification of the highly distributed and heterogeneous bioinformatics services in the public domain. -- The [Sequence Ontology (SO)](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC1175956/) is a structured controlled vocabulary for genomic annotation. SO provides a common set of terms and definitions that will facilitate the exchange, analysis and management of genomic data. -- The [Darwin Core](https://http://rs.tdwg.org/dwc/) standard is body of standards. It includes a glossary of terms (in other contexts these might be called properties, elements, fields, columns, attributes, or concepts) intended to facilitate the sharing of information about biological diversity by providing reference definitions, examples, and commentaries. +- The [Sequence Ontology (SO)](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC1175956/) is a structured controlled vocabulary for genomic annotation. SO provides a common set of terms and definitions that will facilitate the exchange, analysis and management of genomic data. +- The [Darwin Core](https://http://rs.tdwg.org/dwc/) standard is body of standards. It includes a glossary of terms (in other contexts these might be called properties, elements, fields, columns, attributes, or concepts) intended to facilitate the sharing of information about biological diversity by providing reference definitions, examples, and commentaries. ## Standards for software metadata @@ -94,9 +120,6 @@ Examples - How can I make sure that I am using a good standard? - How to choose a standard? -The process of choosing a "good standard" is to see what is being (extensively) used by the community. It should ideally be well known and highlighted by the existence of a certain number of citations. - - The process in choosing a "good standard" is to see what is being (extensively) accepted in the scientific community. It should ideally be well known and highlighted by the existence of a certain number of citations. Example of standards: @@ -113,7 +136,6 @@ EDAM is a comprehensive ontology of well-established, familiar concepts that are - [BioSchema.org](http://bioschemas.org/specifications/Tool/specification/) Bioschemas is a community project built upon [schema.org](schema.org). It provides customisations, a.k.a. profiles, on top of schemas.org types and properties. Profiles include examples together with guidelines regarding cardinality, marginality and reuse of well-known vocabularies in Life Sciences. - The following table shows examples of metadata you would find on a software package in the SoftwareX journal. It gives a short description and a possible value. |Description|Value| @@ -128,7 +150,8 @@ The following table shows examples of metadata you would find on a software pack | Support email for questions | aperson@gmail.com | -> ## Exercise: Using a registry, e.g., bio.tools +> ## Exercise: Using a standard for creating metadata +> #### Time 10 minutes > > Ask the participants to go to the https://schema.org/SoftwareApplication and try to map the "metadata" they prepared for the previous movie/Software exercise. How many have you mapped? What are the top x metadata entries that you have missed and you think are necessary? What are your unmapped "metadata" that do not have a respective entry in schema - is there a closely related entry, or a composite one? > @@ -145,23 +168,20 @@ The following table shows examples of metadata you would find on a software pack {: .callout} - ## Existing platforms and tools for software metadata - The [schema.org](https://schema.org/SoftwareApplication) is the raw form of the possible metadata fields. It is very detailed but it is not readily useful for writing down the metadata of your software. Bioschemas has made an effort to narrow down and customise schema.org. types relevant for Life Sciences, one of them is the SoftwareApplication type. More information is available on [this link](http://bioschemas.org/specifications/Tool/specification/). -Adding metadata describing your software is commonly done via available platforms, that internally use those standards. The following list indicates some of the most prevelant ones: +Adding metadata describing your software is commonly done via available platforms, that internally use those standards. The following list indicates some of the most prevalent ones: 1. [bio.tools](https://bio.tools) This is a portal to bioinformatics resources worldwide, aimed to help bioinformaticians and scientists find, understand, compare and select resources, as well as use and connect them in workflows. As a platform, it makes use of the [EDAM ontology](http://EDAMontology.org), and therefore provides a standardized vocabulary for providing metadata. Moreover, it includes aspects such as `language` and `platform`. However, it does not support filters by `language` nor does it assign a doi to the software (which is to be expected, as it serves as a registry and not a repository). - 2. [OMICTools](https://omictools.com/) -This is a commercial service providing a registry of tools relevant in life sciences, containing sufficient metadata for connecting different tools in a single pipeline. However, it is not an open registry, i.e. the authors need to contact the development team in order for a tool to be included. +This is a **commercial** service providing a registry of tools relevant in life sciences, containing sufficient metadata for connecting different tools in a single pipeline. However, it is not an open registry, i.e. the authors need to contact the development team in order for a tool to be included. 3. [Astrophysics Source Code Library](http://ascl.net/) The Astrophysics Source Code Library (ASCL) is a free online registry for source codes of interest to astronomers and astrophysicists and lists codes that have been used in research that has appeared in, or been submitted to, peer-reviewed publications. It is fairly simple compared to other registries, but it focused on a particular domain (astrophysics). @@ -179,13 +199,14 @@ Zenodo is a general-purpose open access repository. > ## Exercise: Using a registry, e.g., bio.tools +> #### Time 10 minutes > -> Connect to the test instance of [bio.tools](link to test instance) and create a new entry on a software tool / github repo that you own or any of your favourite tools. You could find useful having a look to their [documentation on adding a tool](http://biotools.readthedocs.io/en/latest/user_guide.html#add-content). +> Connect to the test instance of [bio.tools](https://dev.bio.tools/) and create a new entry on a software tool / github repo that you own or any of your favourite tools. You could find useful having a look to their [documentation on adding a tool](http://biotools.readthedocs.io/en/latest/user_guide.html#add-content). > -> TODO: bio.tools image +> ![bio.tools main page](https://raw.githubusercontent.com/SoftDev4Research/4OSS-lesson/gh-pages/fig/bio-tools-main-ui.png) > > Once you are done, ask any of your colleagues what their tool is about. Use the search box to find it. -> +> > > ## Solution > > > > We have a tool to visualize protein sequence annotations developed in JavaScript and hosted in GitHub. A publication indexed in PubMed is already available. @@ -197,17 +218,9 @@ Zenodo is a general-purpose open access repository. > > If you go to the search box and look for "protein visualisation", you will see an entry like: > > TODO : add image > > -> > That's it! You have published your tool in the development version or bio.tools. You are ready to go live and published yout tool for real! Remember bio.tools focuses on life sciences. +> > That's it! You have published your tool in the development version or bio.tools. You are ready to go live and published your tool for real! Remember bio.tools focuses on life sciences. > {: .solution} {: .challenge} ## Wrap up -We are increasing visibility, because we are supporting findability by adding the correct/good metadata -> Connect this with FAIR principles. - - -**Instructor Notes / Setup** -- [Local Installation of Zenodo](https://github.com/zenodo/zenodo/blob/master/INSTALL.rst) -It may be interesting to have a local installation of zenodo to play around. The instructions using Docker are available on the link above. - -- [Bio-Linux](http://environmentalomics.org/bio-linux-software-list/) -It is a final OS containing tools that have been already published, connected metadata, etc +By adding good enough metadata to our research software, we are directly supporting its findability, thus increasing the overall visibility of the software. This is tied to the FAIR principles mentioned in the introductory episode of this lesson; diff --git a/_extras/guide.md b/_extras/guide.md index 50d9d0b..dcbbca8 100644 --- a/_extras/guide.md +++ b/_extras/guide.md @@ -3,3 +3,10 @@ layout: page title: "Instructor Notes" --- FIXME + +- Notes from the metadata episode + - [Local Installation of Zenodo](https://github.com/zenodo/zenodo/blob/master/INSTALL.rst) + It may be interesting to have a local installation of zenodo to play around. The instructions using Docker are available on the link above. + + - [Bio-Linux](http://environmentalomics.org/bio-linux-software-list/) + It is a final OS containing tools that have been already published, connected metadata, etc diff --git a/fig/bio-tools-main-ui.png b/fig/bio-tools-main-ui.png new file mode 100644 index 0000000000000000000000000000000000000000..311e0d0f16175ca1793b7f6ea7978f9e54b3aca4 GIT binary patch literal 67077 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ය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

vb*+!kS^nVH!0ia6+DIRwvX3Pcduk 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 U% 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 literal 0 HcmV?d00001 diff --git a/setup.md b/setup.md index 12b3c0a..e960886 100644 --- a/setup.md +++ b/setup.md @@ -3,4 +3,15 @@ layout: page title: Setup root: . --- -FIXME + +In order to be prepared for the lesson, you need to have accounts to the following (free) services: + +1. GitHub + +If you don't already have a [GitHub](https://github.com/) account, please follow the guide [here](https://services.github.com/on-demand/intro-to-github/create-github-account) in order to create one. + +2. BioTools + +[bio.tools](https://bio.tools/) is a portal to bioinformatics resources worldwide, aimed to help bioinformaticians and scientists, find, understand, compare and select resources as well as use and connect them in workflows. + +For the purposes of this lesson, we will be using the [**developer** instance of bio.tools](https://dev.bio.tools/) so that we can add test content (it is removed periodically). From 5071a71c9f5d301c07c5c49228181cf524cefd53 Mon Sep 17 00:00:00 2001 From: "Fotis E. Psomopoulos" Date: Mon, 3 Sep 2018 13:52:50 +0300 Subject: [PATCH 2/6] Fixed minor typo. --- _episodes/03-use-registry.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_episodes/03-use-registry.md b/_episodes/03-use-registry.md index 1ff5d95..d822fde 100644 --- a/_episodes/03-use-registry.md +++ b/_episodes/03-use-registry.md @@ -223,4 +223,4 @@ Zenodo is a general-purpose open access repository. {: .challenge} ## Wrap up -By adding good enough metadata to our research software, we are directly supporting its findability, thus increasing the overall visibility of the software. This is tied to the FAIR principles mentioned in the introductory episode of this lesson; +By adding good enough metadata to our research software, we are directly supporting its findability, thus increasing the overall visibility of the software. This is tied to the **findable** aspect of the FAIR principles mentioned in the introductory episode of this lesson. From 7962664fe8b3a52f04c87f67695927ae2a302767 Mon Sep 17 00:00:00 2001 From: "Fotis E. Psomopoulos" Date: Tue, 4 Sep 2018 10:08:11 +0300 Subject: [PATCH 3/6] Fixed points raised by @mkuzak --- _episodes/01-introduction.md | 7 ++++--- _episodes/03-use-registry.md | 6 +----- _extras/guide.md | 4 +++- setup.md | 2 +- 4 files changed, 9 insertions(+), 10 deletions(-) diff --git a/_episodes/01-introduction.md b/_episodes/01-introduction.md index 4073338..a158c16 100644 --- a/_episodes/01-introduction.md +++ b/_episodes/01-introduction.md @@ -3,10 +3,11 @@ title: "Introduction" teaching: 10 exercises: 0 questions: -- "Why are best practices necessary in research software" +- "Why are best practices necessary in research software?" +- "How Open Source can help with better quality of software?" objectives: -- "What are the basics of Open Science in research software" -- "What are the FAIR principles" +- "Basics of Open Science in research software" +- "Introduction to the FAIR principles" keypoints: - "Best practices in research software are tied to the FAIR principles" - "They are not tailored to software developers, but rather to a wider audience" diff --git a/_episodes/03-use-registry.md b/_episodes/03-use-registry.md index d822fde..1c56229 100644 --- a/_episodes/03-use-registry.md +++ b/_episodes/03-use-registry.md @@ -54,11 +54,7 @@ For the software case, we have defined metadata as "_a set of data that describe **Definition** From Wikipedia, ["Software documentation is written text or illustration that accompanies computer software or is embedded in the source code. It either explains how it operates or how to use it, and may mean different things to people in different roles."](https://en.wikipedia.org/wiki/Software_documentation) -All software documentation can be divided into two main categories ([ref](https://www.altexsoft.com/blog/business/software-documentation-types-and-best-practices/)), _Product_ documentation and _Process_ documentation. Most of the time you will be dealing with the _Product documentation_, which describes the product that is being developed and provides instructions on how to perform various tasks with it. Product documentation can be broken down into: -- System documentation and -- User documentation - -_System documentation_ represents documents that describe the system itself and its parts. It includes requirements documents, design decisions, architecture descriptions, program source code, and help guides. On the other hand, _User documentation_ covers manuals that are mainly prepared for end-users of the product and system administrators. User documentation includes tutorials, user guides, troubleshooting manuals, installation, and reference manuals. +All software documentation can be divided into two main categories ([ref](https://www.altexsoft.com/blog/business/software-documentation-types-and-best-practices/)), _Product_ documentation and _Process_ documentation, with the former further broken down to _System_ and _User_ documentation. However, in the majority of cases in research software, documentation refers to _User documentation_, i.e. information in the form of manuals that are mainly prepared for end-users of the product and system administrators. As such, (user) documentation includes tutorials, user guides, troubleshooting manuals, installation, and reference manuals. Opposed to the documentation, metadata helps describe the software in a standardized way, so it can be findable/discoverable, by both machines and humans. diff --git a/_extras/guide.md b/_extras/guide.md index dcbbca8..6e8f3b3 100644 --- a/_extras/guide.md +++ b/_extras/guide.md @@ -6,7 +6,9 @@ FIXME - Notes from the metadata episode - [Local Installation of Zenodo](https://github.com/zenodo/zenodo/blob/master/INSTALL.rst) + It may be interesting to have a local installation of zenodo to play around. The instructions using Docker are available on the link above. - [Bio-Linux](http://environmentalomics.org/bio-linux-software-list/) - It is a final OS containing tools that have been already published, connected metadata, etc + + It is a complete Operating System (OS) containing tools that have been already published, connected metadata, etc. diff --git a/setup.md b/setup.md index e960886..89ebe7d 100644 --- a/setup.md +++ b/setup.md @@ -4,7 +4,7 @@ title: Setup root: . --- -In order to be prepared for the lesson, you need to have accounts to the following (free) services: +In order to be prepared for the lesson, you need to have accounts on the following (free) services: 1. GitHub From 7581dfcdcb94ef579367fb83f2447b8794d2524d Mon Sep 17 00:00:00 2001 From: "Fotis E. Psomopoulos" Date: Tue, 4 Sep 2018 19:36:52 +0300 Subject: [PATCH 4/6] Addressed some of the comments raised by @ljgarcia --- _episodes/01-introduction.md | 6 +++--- _episodes/03-use-registry.md | 13 ++++++++++++- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/_episodes/01-introduction.md b/_episodes/01-introduction.md index e5456bf..6e0a660 100644 --- a/_episodes/01-introduction.md +++ b/_episodes/01-introduction.md @@ -10,7 +10,7 @@ objectives: - "Introduction to the FAIR principles" keypoints: - "Best practices in research software are tied to the FAIR principles" -- "They are not tailored to software developers, but rather to a wider audience" +- "The discussed best practices are not tailored to software developers, but rather to a wider audience" --- Scientific research relies on computer software, yet software is not always developed following practices that ensure its quality and sustainability. One of the most recent publications ([Four simple recommendations to encourage best practices in research software](https://f1000research.com/articles/6-876/v1)) provided a simple, yet robust framework of simple recommendations that encourage the adoption of existing best practices in developing research software. These recommendations are designed around Open Science values, and provide practical suggestions that contribute to making research software and its source code more discoverable, reusable and transparent. @@ -25,11 +25,11 @@ Based on these recommendations, this lesson focuses on providing both the underl "_When all researchers are aware of Open Science, and are trained, supported and guided at all career stages to practice Open Science, the potential is there to fundamentally change the way research is performed and disseminated, fostering a scientific ecosystem in which research gains increased visibility, is shared more efficiently, and is performed with enhanced research integrity._" [Open Science Skills Working Group Report (2017)](https://ec.europa.eu/research/openscience/pdf/os_skills_wgreport_final.pdf#view=fit&pagemode=none) -Discussing best practices in developing research software, one is bound to touch on the subject of Open Science. Modern research relies on software, and building upon—or reproducing—that research requires access to the full source code behind that software ([ref](https://open-science-training-handbook.gitbook.io)). Sharing software used for research (whether computational in nature, or that relies on any software-based analysis/interpretation) is a necessary, though not sufficient, condition for reproducibility. In addition to reproducibility, sharing software openly allows developers to receive career credit for their efforts, either through direct citation or via published software articles. We are going to be discussing all these aspects in the following lesson. +Discussing best practices in developing research software, one is bound to touch on the subject of Open Science. Modern research relies on software, and building upon or reproducing that research requires access to the full source code behind that software ([ref](https://open-science-training-handbook.gitbook.io)). Sharing software used for research (whether computational in nature, or that relies on any software-based analysis/interpretation) is a necessary, though not sufficient, condition for reproducibility. In addition to reproducibility, sharing software openly allows developers to receive career credit for their efforts, either through direct citation or via published software articles. We are going to be discussing all these aspects in the following lesson. ## FAIR principles -The FAIR principles are a set of community-developed guidelines to ensure that data or any digital object are Findable, Accessible, Interoperable and Reproducible. The FAIR principles specifically emphasize enhancing the ability of machines to automatically find and use data or any digital object, and support its reuse by individuals. Standards for the description, interoperability, citation etc. are at the core of these principles ([ref](https://www.incf.org/activities/standards-and-best-practices/what-is-fair)). +Though not all the recommendations from the FAIR data principles directly apply to software, there is good alignment between the discussed best practices and the FAIR data principles. The FAIR principles are a set of community-developed guidelines to ensure that data or any digital object are Findable, Accessible, Interoperable and Reproducible. The FAIR principles specifically emphasize enhancing the ability of machines to automatically find and use data or any digital object, and support its reuse by individuals. Standards for the description, interoperability, citation etc. are at the core of these principles ([ref](https://www.incf.org/activities/standards-and-best-practices/what-is-fair)). The FAIR Guiding Principles, as described in [Scientific Data by Wilkinson et al](https://www.nature.com/articles/sdata201618): - To be **Findable** diff --git a/_episodes/03-use-registry.md b/_episodes/03-use-registry.md index 1c56229..b9d4ea9 100644 --- a/_episodes/03-use-registry.md +++ b/_episodes/03-use-registry.md @@ -219,4 +219,15 @@ Zenodo is a general-purpose open access repository. {: .challenge} ## Wrap up -By adding good enough metadata to our research software, we are directly supporting its findability, thus increasing the overall visibility of the software. This is tied to the **findable** aspect of the FAIR principles mentioned in the introductory episode of this lesson. +By adding good enough metadata to our research software, we are directly supporting its findability, thus increasing the overall visibility of the software. This is tied to the **findable** aspect of the FAIR principles mentioned in the introductory episode of this lesson. The connection can be further enhanced through the rest of the best practices. For example, metadata can also support accessibility if you include a license there, or interoperability if you include input/output data types or format. There might also be some metadata supporting reusability as well. + +> ## Optional Challenge: Mapping your metadata to the FAIR principles +> +> Using the metadata you identified for your tool earlier, try to map each one to the four FAIR principles. You can see an example in Table 1 of the [F1000 paper](https://f1000research.com/articles/6-876/v1). +> +> +> > ## Solution +> > +> > +> {: .solution} +{: .challenge} From 38557940051d44f58bfd17f71f5b0a136c5b36cc Mon Sep 17 00:00:00 2001 From: "Fotis E. Psomopoulos" Date: Tue, 4 Sep 2018 19:46:58 +0300 Subject: [PATCH 5/6] Additional fixes proposed by @ljgarcia --- _episodes/01-introduction.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/_episodes/01-introduction.md b/_episodes/01-introduction.md index 6e0a660..7c1eda8 100644 --- a/_episodes/01-introduction.md +++ b/_episodes/01-introduction.md @@ -13,9 +13,9 @@ keypoints: - "The discussed best practices are not tailored to software developers, but rather to a wider audience" --- -Scientific research relies on computer software, yet software is not always developed following practices that ensure its quality and sustainability. One of the most recent publications ([Four simple recommendations to encourage best practices in research software](https://f1000research.com/articles/6-876/v1)) provided a simple, yet robust framework of simple recommendations that encourage the adoption of existing best practices in developing research software. These recommendations are designed around Open Science values, and provide practical suggestions that contribute to making research software and its source code more discoverable, reusable and transparent. +Scientific research nowadays relies heavily on the computational aspects provided by computer software, yet software is not always developed following practices that ensure its quality and sustainability. One of the recent publications ([Four simple recommendations to encourage best practices in research software](https://f1000research.com/articles/6-876/v1)) provided a simple, yet robust framework of simple recommendations that encourage the adoption of existing best practices in developing research software. These recommendations are designed around Open Science values, and provide practical suggestions that contribute to making research software and its source code more discoverable, reusable and transparent. -Based on these recommendations, this lesson focuses on providing both the underlying context as well as some practical exercises towards establishing their usefulness in the long term. The consequent episodes of this lesson are structured in the form of one episode per recommendation; +Based on these recommendations, this lesson focuses on providing both the underlying context as well as some practical exercises towards establishing their usefulness in the long term. The consequent episodes of this lesson are structured in the form of one episode per recommendation: 1. Make source code publicly accessible from day one 2. Make software easy to discover by providing software metadata via a popular community registry 3. Adopt a license and comply with the license of third-party dependencies From 4e6afc65e95306ff50ad7dfb38c0382a18db2246 Mon Sep 17 00:00:00 2001 From: "Fotis E. Psomopoulos" Date: Wed, 5 Sep 2018 11:19:39 +0300 Subject: [PATCH 6/6] Additional fix addressing @ljgarcia comment --- _episodes/03-use-registry.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_episodes/03-use-registry.md b/_episodes/03-use-registry.md index b9d4ea9..f7ee1ac 100644 --- a/_episodes/03-use-registry.md +++ b/_episodes/03-use-registry.md @@ -101,7 +101,7 @@ A standard can be defined as "a structure agreed and adopted by a community" or > {: .callout} -**Controlled vocabularies** provide a way to organize knowledge for subsequent retrieval. It is usually a carefully selected list of words and phrases, which are used to tag units of information (document or work) so that they may be more easily retrieved by a search. The fundamental difference between an **ontology** and a **controlled vocabulary** is the level of abstraction and relationships among concept. A formal ontology is a controlled vocabulary expressed in an ontology representation language. ([ref](https://semwebtec.wordpress.com/2010/11/23/contolled-vocabulary-vs-ontology/)) +**Controlled vocabularies** provide a way to organize knowledge for subsequent retrieval. It is usually a carefully selected list of words and phrases, which are used to tag units of information (document or work) so that they may be more easily retrieved by a search. The fundamental difference between an **ontology** and other **controlled vocabularies**, e.g., thesauri, is the level of abstraction and relationships among concept. A formal ontology is a controlled vocabulary expressed in an ontology representation language. ([ref](https://semwebtec.wordpress.com/2010/11/23/contolled-vocabulary-vs-ontology/)) Examples - The [Gene Ontology](https://http://www.geneontology.org/) (GO) is the framework for the model of biology. The GO defines concepts/classes used to describe gene function, and relationships between these concepts. It classifies functions along three aspects: molecular function, cellular component and biological process