About this document#
Welcome to Horizons’s Gitiquette Guide! This documentation is your go-to resource for understanding and practicing version control, Git and GitHub, and company-specific best practices for coding and software development. Whether you’re a newcomer to Git or a seasoned developer, this guide aims to provide valuable insights tailored to your needs.
A Collaborative and Evolving Resource#
This guide is ever-evolving, driven by the collective wisdom of our team. We wholeheartedly encourage every team member to actively contribute their expertise, suggestions, and insights. Your input is invaluable in shaping and upholding our standard practices, especially in terms of managing technical debt, knowledge transfer, and overall productivity.
While this guide carries an opinionated and prescriptive tone, designed to ease newcomers into our practices, it’s equally important that we all align with these best practices. If you have differing views, please do not hesitate to voice your opinions. Refer to the [Contributing to this document] section for details on how you can play a part in this collaborative effort.
Open Source Software and Licensing#
A concept that will frequenty pop up in this guide is collaborative software development. Open source software is a fundamental pillar of modern software development. It offers transparency, accessibility, and a collaborative approach to creating software. Here are some key aspects to understand:
What is Open Source Software? Open source software refers to programs whose source code is made available to the public, allowing anyone to view, modify, and distribute it. This openness fosters collaboration, innovation, and community-driven development.
Key Principles of Open Source:
Free Redistribution: Users can share open source software freely, which promotes the spread of knowledge and technology.
Access to Source Code: The source code, the underlying code that makes software work, is accessible. This empowers developers to understand, modify, and improve the software.
Derived Works: Users can create their own versions or “forks” of open source software, building upon the original to meet their specific needs.
Collaborative Community: Open source projects often have a community of contributors who work together to enhance and maintain the software.
Open Source Licenses:
Open source software isn’t without rules. Licenses define how the software can be used, modified, and distributed. Common open source licenses include:
GNU General Public License (GPL): Requires that any modified versions of the software are also open source.
MIT License: Allows broad use, modification, and distribution as long as the original copyright notice and disclaimer are included.
Apache License: Permits modification and distribution, with patent protection and warranties explicitly disclaimed.
BSD License: Provides more freedom to modify and distribute, with fewer restrictions.
Benefits of Open Source:
Transparency: You can see how the software works, enhancing trust and security.
Cost-Effective: Many open source tools are free, reducing software expenses.
Community Support: A passionate community of contributors and users often provides support, updates, and improvements.
Customization: You can tailor open source software to your specific needs.
Challenges:
Complexity: Managing various open source components in a project can be complex.
Compatibility: Compatibility issues can arise when combining multiple open source tools.
Security Concerns: Ensure that open source software is up-to-date and secure to avoid vulnerabilities.
Note
Open Source and Horizons
As local government, we have a responsibility to the rate-payers to be transparent and trustworthy. Our primary goal is not to provide profits for investors, but to provide stable and lasting benefits for our rate-payers and the environment. While the Horizons organisation does rely on a lot of proprietary software, it is the opinion of the author (which does not necessarily reflect the opinion of the Horizons organisation as a whole, Horizons management, or any other individial employees) that the software we build should, as far as is practical, responsible, and possible, be available as open source software. Open source software plays a vital role in the tech world, promoting collaboration and innovation. The software we write as Horizons staff does not belong to us, but to the community. It should therefore be accessible to our community to verify, modify and utilise the software.