Full text
Strengthening Open Source Practices in Heliophysics Increasing collaboration, decreasing duplicate work, and building community using open source software HOW TO: Create an open source tool 1. Select a host for your project. (Github is by far the most popular, but it is not the only option.) 2. Create a name and a basic description of your project 3. Add a license for your project 4. Provide some way for people to use your project. For Python, this generally means publishing wheels to PyPi or Conda. Building Community Maxine Hartnett, Veronica Martinez, Julie Barnum Laboratory of Atmospheric and Space Physics, University of Colorado Contributions are made Contributions are made back into the open source project, as users find bugs or develop new features Code is made open source Code is made publicly available, with documentation and other tools for easy use Code is used Projects find open source code that addresses unsolved problems The Cycle of Open Source Importance of Open Source Software Addressing Common Concerns How to run an Open Source Project Code reviews, contribution guidelines, and automatic testing make contributing back easy. License, documentation, and consistent releases make code useable. Code style, good code design, and documentation make projects easier to modify. Open source tools benefit from standards and community by increasing visibility and reducing barriers to entry. Providing documentation, clean, easy to read code, and regular releases all make it easier for the end user. NASA’s Transform to Open Science (TOPS) provides education for open science in their “Open Science 101” course. ✉ maxine.hartnet[email protected]olorado.edu ✉ veronica.martine[email protected]olorado.edu ✉ [email protected]olorado.edu Concern Key Question Solutions Expertise “Is it too hard to use, modify, and develop without deep programming knowledge?” Clear documentation, tutorials, and training reduce barriers and build confidence. Collaboration fills knowledge gaps. Maintenance & Longevity “Who keeps it running?” Community adoption and institutional partnerships improve long-term sustainability. Credit & Recognition “Will my work be used without citation?” Licenses protect attribution and publishing software provides a DOI for proper credit. Security & Data Privacy “Is open source less secure?” Open review can enhance security by identifying vulnerabilities faster. Modular designs separate public components from private components. Integration Challenges “Will it work with legacy and proprietary systems?” Modular design, APIs, and open standards (e.g., HDF5, CDF, NetCDF) improve interoperability. Funding Support “Who pays for upkeep” Growing recognition of software as a research product is leading to more funding and institutional repositories. Visibility & Usability “How will the community find my code and how can I find existing open source tools?” PyHC maintains a project list to find existing open source projects and where you can add your own. Promoting your tools with community partners helps ensure that code is reused and expanded upon Open source software is most effective when it’s used. Joining open source communities and encouraging open source at your institution is the best way to get your software used. Copyleft licenses require all derivative works to also be free and open source. Strong copyleft GNU Public License (GPL) GNU Affero GPL (AGPL) Permissive BSD-3 Apache-2.0 MIT Weak copyleft GNU Lesser Public License (LGPL) Mozilla Public License (MPL) Common Development and Distribution License (CDDL) Common open source licenses Less obligations for derivative works More obligations for derivative works Preferred for scientific applications! PyHC provides tools and a framework for supporting open source software for heliophysics. ●Standards for open source repositories and suggestions for improving quality ●A catalog of existing repositories to increase visibility and reusability ●A strong community to answer questions ●Workshops and tutorials for beginners Python in Heliophysics Community (PyHC) ●Less duplicated efforts ●Easier transitions between different repositories ●Simpler validation to join communities WHY USE STANDARDS? How to Build Your Own Community ●Encourage projects with potential for reusability to be made open source ●Provide resources, including pointing to standards defined by groups like PyHC and SDAC, or from meetings such as DASH and the SDS workshops ●Look to similar organizations - LASP, STSci, and NASA all have open source organizations you can look to ●Lead by example - make your open repositories open source! Some key standards for open source repositories https://github.com/IMAP-Science-Operations-Center/ https://github.com/MAVENSDC/cdflib https://github.com/lasp https://github.com/swxsoc/sammi Communities share libraries and make them findable. Just like this giant Lego tower, software is built on a foundation of open source. Even placing one tiny piece lifts everyone up higher! A major advantage of open source software is the ability to reuse solutions. It’s difficult to tell where we are duplicating effort if everyone is working in closed source software. Open source software is extensively used in almost every piece of software being developed. Many for-profit software companies pay their employees to contribute to open source software, because they know they benefit heavily from sharing work, even if it benefits their competitors as well. Open source software reduces the time and effort needed to write code. Less code to write = more time to contribute to novel solutions = better science! Open source software sparks development of tools that are more powerful than we could create alone!