Last year, Linux OS celebrated its 25th anniversary. In these years, Linux – and a lot of other Open Source Software (OSS) – has changed the world. While the concept of Open Source Software has made a significant difference to the industry, there is another driving force underneath successful OSS software: its community. While approaching the year 2018 at full speed, at the same time communities has emerged around us. So before you dive into the depths of the latest and greatest Microsoft technologies in this issue of XPRT, we’d like to elaborate on the power of Communities.
1. Emergence of communities
In the early days of both the Greek and Roman empires, it was quite common for wise men to gather together and share their thoughts. The entire philosophy of Democracy is based on these gatherings. Therefore, it’s not strange that the word community finds its origin in the Latin word ‘communis’, meaning ‘shared in common’.
With the growth of IT in the second half of the 20th century, gatherings found a central place in the IT business. End User Groups were founded to share experiences, IT Pro’s shared their knowledge on mailing lists, and many developers became active on online forums. Soon this drew the attention of researchers, which resulted in studies that correlated community participation to increased productivity.
Xpirit’s managing director, Pascal Greuter, used to be a very active community member: “During my early years as a consultant, I spent my spare time answering questions on mailing lists. It helped me understand and take on challenges from different angles. Later, it allowed me to quickly identify common errors and extract best practices.”
Nowadays, we see communities embedded in both our social and professional lives. Social networks, WhatsApp groups, Slack, GitHub and StackOverflow are known to everyone. Community principles became deeply embedded into project guidelines such as the Agile manifesto. The low-entry structures of communities with respect for everyone’s opinion are here to stay.
2. Technology ‘Ecosystems’
Compared to other industries, communities are probably most deeply embedded in IT. While often gathered around a product or field of interest in other industries, in IT they are usually related to an area of expertise. Engineers have the tendency to focus their complete attention on a single technology. We see this in the structure of the community. Completely focused “ecosystems” on a single technology allow deliberate but limited learning, and are difficult to open up to adopt new ideas.
“Technologies were clustered into several distinct “ecosystems” that tended to be used by the same developers. On the left of this chart we can see a large cluster representing web development (with JavaScript at the center) and one for Microsoft technologies (centered around C# and Visual Studio). On the right we see a constellation connecting Java, Android, and iOS. Other smaller correlated clusters included C/C++/Assembly, Raspberry Pi with Arduino, and languages like Python and R alongside language-specific IDEs.”
Source: https://xpir.it/cxprt5-com1
A good example of such an “ecosystem” is the Open Source .NET Community. After Microsoft’s first source drop of the .NET code late 2014, they started to develop the platform in close collaboration with the community. Using open forums, ticketing systems, podcasts, and even open design sessions, they allowed the community to participate in the overall design and source code of .NET. The product of the community is very tangible: Core and derived community components have never been in better alignment with the design concepts of .NET.
Introducing yourself to such an “ecosystem” can really enrich your knowledge and can help you gather new ideas. Not only is learning about the technology a fun experience, but it also increases your employability! Community engagement is – like volunteer work – highly rewarded by potential employers. Stepping outside of your familiar communities or even your comfort zone can bring about a whole new experience!
3. Community-based Product Development
We already mentioned that .NET and especially .NET Core have benefitted tremendously from an active community. The community helps to shape new ideas long before they even get embedded into a released product. This form of co-creation is helpful because it allows early experiments before a single byte of production code is produced.
Co-creation hits the heart of the influence of the community on product development. While the feedback on new ideas flies in almost instantly, feedback on existing offerings helps product owners set priorities. It also allows them to identify complicated or misunderstood areas in their products.
Microsoft, Google, Facebook, and all other tech giants use this form of co-creation all the time. How many times haven’t you tried Gmail Beta or even an Alpha of ReactJS? These days, Microsoft even issues Go-Live licenses for Visual Studio and TFS pre-releases. Why? Because the burden of supporting pre-released software is cheaper than releasing the wrong thing.
Microsoft ♥ Communities & OSS
As part of their global strategy, Microsoft has taken a major leap in embracing Communities and OSS. In the last few years, they have overcome the historical sentimental gap between themselves and the OSS world. The most tangible examples of these are highlighted below:
- SQL Server 2017 will be released on Windows, Linux and Docker
- Azure Cosmos DB can be used from any NoSQL adapter
- Bash runs on Windows[1]
- Visual Studio is now fully featured on macOS.
[1] https://xpir.it/xprt5-com2
Microsoft’s commitment to the community goes so far that it appears that all their activity is now on Github. In last year’s statistics, they became the most active OSS contributor! These numbers illustrate that it is beneficial for a company to not only rely on open source software, but also contribute to it. Have a look for yourself at https://github.com/Microsoft.
Community features have even been embedded into Microsoft’s product offering. Microsoft Visual Studio Team Services (VSTS), a Microsoft Azure Cloud-based SAAS offering, enables teams to work closely together on software development projects while providing a rich tool set and capabilities that can be used across platforms. This includes a wide range of topics such as integration with Maven, Jenkins, NPM Package Management, and many other cross-platform developments. In addition, advanced pull request workflows and Git forking enables communities inside companies to leverage the power of the collaboration. While this is known to many Microsoft developers, it is less known by other communities. VSTS could easily act as bridge between these communities!
Rules of Community Engagement
Participating in communities is free of charge but does not come for free. You can’t only take something from the community. Every participant is expected to make their contribution to the community. This can be as simple as thanking community members for their efforts in answering your question. Another way is voting up answers on StackOverflow. The most important unwritten rule is to pay back everybody’s willingness to help with kindness and respect.
Some communities have strict Contribution Policies. A great example of this is the .NET Roslyn contribution policy[1]. It states clearly what is expected from you when you want to add something to the source code of the Just-in-Time compilation component of .NET.
You also need to understand that the community gives you a good answer or an excellent library, but you shouldn’t trust it blindly as if it’s your own. Microsoft has recently published a blogpost on their DevOps blog, explaining that many Open Source projects contain vulnerabilities[2]. You’ll always need to take any piece of input, use it to the best, but make it your own and add your own craftsmanship on top of it.
[1] https://xpir.it/xprt5-com3
[2] https://xpir.it/xprt5-com4
Conclusion
Communities deliver an awesome foundation for the modern engineer. They give you answers, deliver a learning environment, and even building blocks to accelerate. We at Xpirit try to leverage communities wherever possible. Every time we use something, we try to give back something. Feedback, thumbs up, thumbs down, and pull requests on GitHub. The XPRT-magazine is another example which helps us to combine what we learn and deliver it back to you.
We encourage you to become a community member. Get active! Don’t be shy, there’s plenty of people out there who have made mistakes. And the community is forgiving. They won’t even bother about your mistakes, they will love it. Because other community members will learn from things you experience as difficult. Try and share the love! Tweet to us (@xpiritbv) with your greatest community stories and we’ll reward you for the community love. It will surely enable you to achieve endless possibilities!
This article is part of XPRT. magazine.