
"Social coding" has spread widely over recent decades thanks to "open source". Without going too far back in time – although we could mention pre-internet projects such as GNU, started by Richard Stallman in the 1980s, and Linus Torvalds' collaborative development of Linux in 1991 – it was the rise of "git hosting" platforms such as SourceForge, launched in 1999, and GitHub in 2008 (later acquired by Microsoft in 2018) that marked and sealed its development and present-day success.
This escalation was so closely coordinated that many people came to see the two concepts as "intrinsically linked", almost as synonyms. Social coding and open source certainly have a lot in common, but it is worth remembering that they are quite different things. Let's try to clarify.
- By open source we mean a software development model in which the source code is made available to the general public so that anyone can view, use, modify and distribute it. In an open source project the source code is open and free of intellectual property restrictions such as copyright, and it is often shared under a specific licence that governs its use and distribution.
- By social coding, on the other hand, we mean the practice of developing software collaboratively, involving a community of programmers and developers. This practice is based on the idea that a software project's source code is accessible to the whole community and that developers can contribute to, discuss and collaborate on its evolution.
Old and new approaches together? It can be done
Although in practice most projects built through social coding are open source, social coding can also be adopted in closed or proprietary software projects!
For example, a company can use internal social coding platforms to let its developers collaborate more effectively within the organisation, gaining some of the undoubted benefits of this practice without giving up the opportunity to "own" a project's source code.
So what are the benefits of social coding in a private, business setting? Here are a few:
- transparency: changes are documented and visible, encouraging open review and software security;
- community: it involves a community of developers and users who help improve the software;
- innovation: developers collaborate openly to solve problems, improve performance and add new features to the software.
When applied to open source projects, social coding has further benefits, such as:
- open collaboration: the source code is publicly accessible and developers from all over the world can contribute;
- a wider or global community: it involves a theoretically unlimited community of developers and users, which encourages further improvement of the software.
However, for a company project, and depending on its goals, these benefits may not be benefits at all. Social coding applied within a private organisation that retains the rights to the code has the characteristics of the traditional or closed development model, including:
- proprietary code: kept private and not accessible from outside, it thus becomes a company asset with a value that can, in theory, be monetised;
- confidentiality: changes can only be known by the organisation that owns the code, limiting their visibility and review;
- in-house development: changes and the evolution of the software are mostly managed internally, without involving an external community;
- proprietary licences: the software is often subject to proprietary licences that restrict its use and distribution;
- in-house innovation: innovations are mainly the work of an internal team of developers and engineers.
Private social coding: the tools
But how can this halfway house between traditional coding and the model that has been so successful thanks to the internet be put into practice?
The most popular social coding platforms, such as GitHub or GitLab, used mostly for open source projects, can also be used for closed or private projects thanks to dedicated tools for collaboration, version tracking and change management.
These web apps are extremely useful for company projects too, offering features similar to those of public platforms but with a focus on privacy and internal work management. They let companies host and manage their source code in the cloud, collaborate internally and keep control of their data, while at the same time opening up to the new, no longer staying entrenched within their own organisation, and taking full advantage of remote working.
Here are some of the main social coding platforms that can also be used for this purpose:
- GitHub Enterprise: the famous GitHub offers GitHub Enterprise, a self-managed version of its platform. Companies can install and configure it on their own networks or private clouds. It provides advanced tools for code management and collaboration;
- GitLab Self-Managed: GitLab, the main alternative to GitHub, offers a self-hosted version alongside its open version, allowing companies to install and manage their own GitLab server within their infrastructure. This option allows a high degree of customisation and control;
- Bitbucket Server: Atlassian's Bitbucket offers a very interesting solution, formerly known as Stash. It is a self-managed option for collaboration and source code management within organisations, with advanced Git and Mercurial repository management features;
- Phabricator: an open source application for managing Git, Mercurial and Subversion repositories. It can be installed in-house and offers a range of tools for social coding, task management, code review and more;
- Gitea: a lightweight open source application for hosting Git repositories privately. It can be installed in-house and offers simple repository and collaboration management;
- GitBucket: another open source alternative for private Git repository hosting. It offers a GitHub-like interface and can be installed within your own infrastructure;
- Azure DevOps Server: formerly known as Team Foundation Server, it is offered by Microsoft as a standalone solution for software lifecycle management, including management of Git or Team Foundation Version Control (TFVC) repositories.
We asked our CEO, Massimiliano Aiello (you can read an interview with him here), what he thinks of this approach to programming, which keeps spreading successfully. We also asked him which solution ESSE I has adopted to make cooperation between its developers as effective and cohesive as possible. Here is his answer.
For us, working together is fundamental, because it lets us combine the skills and knowledge of several people to create better, more complete software that takes many points of view into account and therefore leads to results our clients appreciate more.
The social coding tools we use at ESSE I are mainly two: Azure DevOps Services and Azure DevOps Server. They are software intelligence platforms that offer the same essential features and services, but with some fundamental differences.
Azure DevOps Services is the cloud version and offers a scalable, reliable, global hosted service backed by a 99.9% service level agreement. It also lets you set up your development environment quickly, get immediate access to the latest features, improve connectivity with remote sites and reduce operating costs. Finally, Azure DevOps Services supports integration with GitHub.com repositories, including the server version of the GitHub Enterprise tool you mentioned.The other solution we offer is Azure DevOps Server, this time the on-premises version based on a SQL Server back end. Those who choose this version usually need their data to stay within their network and be available when they want to access SQL Server Reporting Services. Azure DevOps Server is really very powerful: it gives you full control over data and security, and lets you customise the work process by importing or exporting XML files. In Italy, this second solution is usually adopted by our clients linked to the public administration.
In conclusion
Although we mainly develop proprietary code, we too think social coding is the right path to follow, because it gives us a way to practise the collaborative spirit, in the name of harmony, with which we want to stand out from other software houses. We believe that inspiring this value, together with knowledge sharing, is crucial for the environment we belong to.
It is no coincidence that, for the past few days, in addition to our blog and social channels, we have also chosen to raise awareness of development topics on the social coding platform GitHub, which we are starting to use with the aim of giving away scripts for educational purposes.
If you'd like to stay in touch on this important platform too, we look forward to seeing you at https://github.com/esse-i-dev



