๐๏ธ What is Open Source?
Open Source can refer to a broad range of subjects, like the idea of Open Access for research where all research is published in a way that the public does not have to pay to access the work. Or the idea of Open Innovation where concepts, tools and methods that help drive innovation may be shared, such as posting 3D models for printing or royalty-free images for use on websites. Open source code can be used for studying and allows capable end users to adapt software to their personal needs in a similar way user scripts and custom style sheets allow for web sites. Users can publish their modifications as forks for other users with similar preferences, or suggest possible improvements in the form of pull requests.
๐๏ธ AI and LLMs in Programming
Large Language Models (LLMs) have rapidly changed how software is written. Tools like GitHub Copilot, ChatGPT, Claude, and Cursor can generate code, explain errors, write tests, and review pull requests. Understanding what these tools are, how they work, and how to use them responsibly is increasingly important for any programmer.
๐๏ธ APIs
An API (Application Programming Interface) is a defined way for two pieces of software to communicate with each other. APIs are everywhere in modern software: when a weather app shows you the forecast, it's fetching data from a weather API. When you log into a site with Google, that site is calling Google's OAuth API.
๐๏ธ CI/CD
CI/CD stands for Continuous Integration and Continuous Delivery (or Deployment). It's a set of practices and tools that automate the testing and deployment of software, letting teams ship code more reliably and frequently.
๐๏ธ Collaboration and Communication
Collaboration and communication are at the heart of open source development. Open source projects thrive on the contributions of a diverse and often geographically dispersed community of developers, designers, testers, and users. Effective collaboration and clear communication are key to the success of these projects. In this guide, we'll explore how collaboration and communication work in the open source ecosystem.
๐๏ธ Command Line
The command line (also called the terminal, shell, or CLI โ Command Line Interface) is a text-based way to interact with your computer. Instead of clicking icons and menus, you type commands.
๐๏ธ Community
The open source community is diverse and highly motivated. Whether itโs development or advocacy, open source software and other collaborative projects benefit through, and because of, community.
๐๏ธ Debugging
Debugging is the process of finding and fixing errors (bugs) in your code. Every programmer spends a significant portion of their time debugging โ it's a core skill, not a sign of failure.
๐๏ธ Documentation
Documentation is any communicable material that is used to describe, explain or instruct regarding some attributes of an object, system or procedure, such as its parts, assembly, installation, maintenance and use.
๐๏ธ Engineering Methodologies
Engineering methodologies are structured approaches to planning, executing, and managing engineering projects. They provide a systematic framework for designing, developing, and maintaining complex systems, products, or processes. By following established engineering methodologies, teams can ensure efficiency, quality, and successful project outcomes. Here, we explore some commonly used engineering methodologies:
๐๏ธ Ethics
Ethics in open source refers to the principles and guidelines that guide the behavior and actions of individuals and communities involved in open source software development. It encompasses a set of values and practices that promote collaboration, transparency, fairness, and responsible use of open source resources. Key aspects of ethics in open source include:
๐๏ธ Governance
Open-source governance is a political philosophy that applies the principles of open-source and open-content movements to democratic principles. It enables any interested citizen to contribute to the creation of policy, as with a wiki document. The legislation is democratically opened to the general citizenry, employing their collective wisdom to benefit the decision-making process and improve democracy.
๐๏ธ Human-Centered Design
Human-Centered Design (HCD) is a user-focused approach to designing products, services, or solutions that prioritize the needs, preferences, and experiences of the end-users. In open source projects, HCD is increasingly recognized as a valuable methodology for creating software that is intuitive, accessible, and user-friendly. In this guide, we'll explore the principles and practices of HCD in the context of open source development.
๐๏ธ Knowledge Transfer
Knowledge transfer is a critical aspect of open source development that ensures the continuity and growth of projects by sharing expertise and information among contributors. In open source, knowledge transfer helps onboard new contributors, maintain project stability, and foster a collaborative environment. In this guide, we'll explore how knowledge transfer takes place within the open source community.
๐๏ธ Leadership Skills
Effective leadership plays a crucial role in the success and sustainability of open source projects. Open source communities thrive on collaboration, and skilled leaders are essential for guiding contributors, making decisions, and fostering a positive and productive environment. In this guide, we'll explore the key leadership skills and qualities that are valuable in the open source ecosystem.
๐๏ธ Open Source Licenses
Open source licenses grant permission for anybody to use, modify, and share licensed software for any purpose, subject to conditions preserving the provenance and openness of the software.
๐๏ธ Open Science
Open Access, or Open Science is the movement to make scientific research (including publications, data, physical samples, and software)ย free, immediate, online availability of research articles coupled with the rights to use these articles fully in the digital environmentย to all levels of society, amateur or professional. Open science is transparent and accessible knowledge that is shared and developed through collaborative networks.
๐๏ธ Package Management
A package manager is a tool that automates the process of installing, upgrading, configuring, and removing software packages. Rather than manually downloading files and resolving dependencies, a package manager handles all of that for you.
๐๏ธ Product Development
In business and engineering, new product development covers the complete process of bringing a new product to market, renewing an existing product or introducing a product in a market. It requires an understanding of customer needs and wants, the competitive environment, and the nature of the market.
๐๏ธ Project Management
Project management is the process that guides a teamโs work to accomplish all project goals within certain parameters. The goal of project management is to produce a complete project that meets these objectives.
๐๏ธ Open Source Projects
Every project is unique but there is often a similar organizational structure. Understanding of terms and roles will help you get quickly oriented to any new project.
๐๏ธ Quantum Computing and Open Source
Quantum computing is one of the most exciting frontiers in science and technology. Rather than using the 0s and 1s of classical computers, quantum computers exploit the strange behavior of quantum mechanics to perform certain types of computation dramatically faster. While large-scale quantum computers are still being built, the open source ecosystem around quantum computing is already rich, and you can start experimenting today on a regular laptop or through free cloud access to real quantum hardware.
๐๏ธ Security Basics
Security is not just for security engineers โ every developer has a responsibility to write code that protects users and data. This page covers the foundational security practices that every student and researcher should know.
๐๏ธ Software Testing
In the world of software development, there are many different forms of testing, but they all seek to accomplish the same goal. That is, verify that a program has the correct behavior. In practical terms, that takes many forms. You might be testing that:
๐๏ธ Version Control
Definition