Inner source

Last updated

InnerSource is the use of open source software development best practices and the establishment of an open source-like culture within organizations [1] for the development of its non-open-source and/or proprietary software. The term was coined by Tim O'Reilly in 2000 [2] in his column. [3]

Contents

Motivation

Open source is recognized to be capable of delivering high quality software. [4] Furthermore, the open collaboration in open source enables collaboration even between competitors (e.g. ARM and Intel working on Linux kernel on merit-based decisions).

Consequently, software developing organizations want to benefit from its outcomes (the software components and tools), but also from the development practices exercised and established in the open source world. [5]

Used open source practices

Besides several practices established in foundations such as Apache Software Foundation, Linux Foundation, and Eclipse Foundation, InnerSource and open source projects require open collaboration, open communication, and a proper quality assurance.

Open collaboration

All required development artifacts (e.g. code, documentation, issue tracker, etc.) have to be accessible for all employees of a company leveraging InnerSource. Central software forges are an essential tool for implementing open collaboration.

Based on the principles of open collaboration (egalitarian, meritocratic, and self-organizing) every contributor who is willing to help an InnerSource project is typically welcome. Contributions to InnerSource projects are typically judged meritocratically based on the value they bring to the project. Meritocracy can also be enabled by open communication as decisions are discussed publicly. Although an organization does not necessarily become completely self-organizing to adopt InnerSource, InnerSource allows individuals, organizational units, and project communities a higher degree of self-organization.

Open communication

InnerSource projects and programs rely on open communication to make all communication openly accessible for all employees. Open communication is communication that is public (within the company), written, archived, and complete. As consequence of this property, the communication is asynchronous. The goal is to allow any individual or party that has stake or interest in an InnerSource project to participate in the communication. As open communication discussions are archived, a detailed documentation of the software is passively gathered that allows one to go back and revisit historic discussions and decisions.

Quality assurance through separation of contribution from integration

A dedicated code review and the separation of contributors and committers (integrators, developers with write access) assures the quality of an open source project, and, therefore, also for an InnerSource project.

Benefits

Beyond the quality attributes of open source software the following benefits are reported: [6] [7]

More efficient and effective development
Overcoming organizational unit boundaries
  • Cost and risk sharing among organizational units
  • Collaboration across organizational unit boundaries
  • Program-wide information exchange
More successful reuse
  • Use of competences missing at component providers
  • Independence between reusers and providers
  • Relief of component providers
Better software product
More flexible utilization of developers
  • Simplified developer deployment
  • Collaboration of detached developers
Enhanced knowledge management
  • Community-based learning
  • Openness and availability of knowledge
Higher employee motivation

Prevalence

Among others the following companies are known for adopting InnerSource: [6]

Key factors for adopting InnerSource

InnerSource can be a promising approach for large organizations that develop software. However, it may not be appropriate in all settings. The following nine factors, grouped in three categories, can be consulted to gauge the extent to which InnerSource may be appropriate. [13]

Product factors

Process and Tools factors

Organization and Community factors

Related Research Articles

<span class="mw-page-title-main">Squeak</span> Object-oriented programming language

Squeak is an object-oriented, class-based, and reflective programming language. It was derived from Smalltalk-80 by a group that included some of Smalltalk-80's original developers, initially at Apple Computer, then at Walt Disney Imagineering, where it was intended for use in internal Disney projects. The group would later go on to be supported by HP Labs, SAP, and most recently, Y Combinator.

<span class="mw-page-title-main">Open-source software</span> Software licensed to ensure source code usage rights

Open-source software (OSS) is computer software that is released under a license in which the copyright holder grants users the rights to use, study, change, and distribute the software and its source code to anyone and for any purpose. Open-source software may be developed in a collaborative, public manner. Open-source software is a prominent example of open collaboration, meaning any capable user is able to participate online in development, making the number of possible contributors indefinite. The ability to examine the code facilitates public trust in the software.

Computer-supported cooperative work (CSCW) is the study of how people utilize technology collaboratively, often towards a shared goal. CSCW addresses how computer systems can support collaborative activity and coordination. More specifically, the field of CSCW seeks to analyze and draw connections between currently understood human psychological and social behaviors and available collaborative tools, or groupware. Often the goal of CSCW is to help promote and utilize technology in a collaborative way, and help create new tools to succeed in that goal. These parallels allow CSCW research to inform future design patterns or assist in the development of entirely new tools.

Code review is a software quality assurance activity in which one or more people check a program, mainly by viewing and reading parts of its source code, either after implementation or as an interruption of implementation. At least one of the persons must not have authored the code. The persons performing the checking, excluding the author, are called "reviewers".

In software development, agile practices include requirements, discovery and solutions improvement through the collaborative effort of self-organizing and cross-functional teams with their customer(s)/end user(s). Popularized in the 2001 Manifesto for Agile Software Development, these values and principles were derived from, and underpin, a broad range of software development frameworks, including Scrum and Kanban.

Software quality assurance (SQA) is a means and practice of monitoring all software engineering processes, methods, and work products to ensure compliance against defined standards. It may include ensuring conformance to standards or models, such as ISO/IEC 9126, SPICE or CMMI.

<span class="mw-page-title-main">Danese Cooper</span> American advocate of open source software

Danese Cooper is an American programmer, computer scientist and advocate of open source software.

Software visualization or software visualisation refers to the visualization of information of and related to software systems—either the architecture of its source code or metrics of their runtime behavior—and their development process by means of static, interactive or animated 2-D or 3-D visual representations of their structure, execution, behavior, and evolution.

End-user development (EUD) or end-user programming (EUP) refers to activities and tools that allow end-users – people who are not professional software developers – to program computers. People who are not professional developers can use EUD tools to create or modify software artifacts and complex data objects without significant knowledge of a programming language. In 2005 it was estimated that by 2012 there would be more than 55 million end-user developers in the United States, compared with fewer than 3 million professional programmers. Various EUD approaches exist, and it is an active research topic within the field of computer science and human-computer interaction. Examples include natural language programming, spreadsheets, scripting languages, visual programming, trigger-action programming and programming by example.

The open-source-software movement is a movement that supports the use of open-source licenses for some or all software, as part of the broader notion of open collaboration. The open-source movement was started to spread the concept/idea of open-source software.

DevOps is a methodology in the software development and IT industry. Used as a set of practices and tools, DevOps integrates and automates the work of software development (Dev) and IT operations (Ops) as a means for improving and shortening the systems development life cycle. DevOps is complementary to agile software development; several DevOps aspects came from the agile way of working.

Crowdsourcing software development or software crowdsourcing is an emerging area of software engineering. It is an open call for participation in any task of software development, including documentation, design, coding and testing. These tasks are normally conducted by either members of a software enterprise or people contracted by the enterprise. But in software crowdsourcing, all the tasks can be assigned to or are addressed by members of the general public. Individuals and teams may also participate in crowdsourcing contests.

Open collaboration is any "system of innovation or production that relies on goal-oriented yet loosely coordinated participants who interact to create a product of economic value, which is made available to contributors and noncontributors alike." It is prominently observed in open source software, but can also be found in many other instances, such as in Internet forums, mailing lists and online communities. Open collaboration is also thought to be the operating principle underlining a gamut of diverse ventures, example including bitcoin, TEDx, and Wikipedia.

<span class="mw-page-title-main">Open coopetition</span>

In R&D management and systems development, open coopetition or open-coopetition is a neologism to describe cooperation among competitors in the open-source arena. The term was first coined by the scholars Jose Teixeira and Tingting Lin to describe how rival firms that, while competing with similar products in the same markets, cooperate which each other in the development of open-source projects in the co-development of Webkit).

A distributed development project is a research and development (R&D) project that is done across multiple business worksites or locations. It is a form of R&D where the project members may not see each other face to face, but they are all working collaboratively toward the outcome of the project. Often this is done through email, the Internet and other forms of quick long-distance communication. Distributed development was largely pioneered by the open-source software community.

The research project SCALARE is a European ITEA 2 project.

Communication in Distributed Software Development is an area of study that considers communication processes and their effects when applied to software development in a globally distributed development process. The importance of communication and coordination in software development is widely studied and organizational communication studies these implications at an organizational level. This also applies to a setting where teams and team members work in separate physical locations. The imposed distance introduces new challenges in communication, which is no longer a face to face process, and may also be subjected to other constraints such as teams in opposing time zones with a small overlap in working hours.

<span class="mw-page-title-main">Open source</span> Practice of freely allowing access and modification of source code

Open source is source code that is made freely available for possible modification and redistribution. Products include permission to use the source code, design documents, or content of the product. The open-source model is a decentralized software development model that encourages open collaboration. A main principle of open-source software development is peer production, with products such as source code, blueprints, and documentation freely available to the public. The open-source movement in software began as a response to the limitations of proprietary code. The model is used for projects such as in open-source appropriate technology, and open-source drug discovery.

A software bot is a type of software agent in the service of software project management and software engineering. A software bot has an identity and potentially personified aspects in order to serve their stakeholders. Software bots often compose software services and provide an alternative user interface, which is sometimes, but not necessarily conversational.

It is a common software engineering practice to develop software by using different components. Using software components segments the complexity of larger elements into smaller pieces of code and increases flexibility by enabling easier reuse of components to address new requirements. The practice has widely expanded since the late 1990s with the popularization of open-source software (OSS) to help speed up the software development process and reduce time to market.

References

  1. Capraro, Maximilian; Riehle, Dirk (2017-02-06). "InnerSource Definition, Benefits, and Challenges" (PDF). ACM Computing Surveys. 49 (4): 1–36. doi:10.1145/2856821. ISSN   0360-0300. S2CID   5385511. InnerSource (IS) is the use of open source software development practices and the establishment of an open source-like culture within organizations. The organization may still develop proprietary software but internally opens up its development.
  2. ben van 't ende (2016-05-09). "InnerSource: An Open Source Approach to Community Culture". Tim O'Reilly, the founder of O'Reilly Media, coined the term "inner-sourcing" in 2000, describing it as: "the use of open source development techniques within the corporation."
  3. O'Reilly, Tim (2000-12-01). "Open Source and OpenGL". oreilly.com. O'Reilly and Associates. Archived from the original on 2015-02-15. Retrieved 2017-02-22. [W]e've also worked with companies on what we call "inner sourcing" — that is, helping them to use open source development techniques within the corporation.
  4. Kevin Crowston, Kangning Wei, James Howison, Andrea Wiggins (2012), ACM (ed.), "Free/Libre open-source software development: What we know and what we do not know", ACM Computing Surveys (in German), 44 (2): 1–35, doi:10.1145/2089125.2089127, S2CID   2246943 {{citation}}: CS1 maint: multiple names: authors list (link)
  5. Stol, Klaas-Jan; Fitzgerald, Brian (2014). "InnerSource—adopting open source development practices within organizations: a tutorial" (PDF). IEEE Software. doi:10.1109/MS.2014.77. hdl: 10344/4443 . S2CID   1965218. [...] a number of organizations have adopted open source practices to develop their software. [...] Unlike traditional approaches, developers of an InnerSource project do not belong to a single team or department. Instead, anybody within the confines of the organization can become a contributing member of this internal community, either as a user or contributor.
  6. 1 2 Capraro, Maximilian; Riehle, Dirk (2016-12-01). "InnerSource Definition, Benefits, and Challenges". ACM Comput. Surv. 49 (4): 67:1–67:36. doi:10.1145/2856821. ISSN   0360-0300. S2CID   5385511.
  7. Stol, Klaas-Jan; Fitzgerald, Brian (2015-07-01). "InnerSource - Adopting Open Source Development Practices within Organizations: A tutorial" (PDF). IEEE Software. 32 (4): 60–67. doi:10.1109/MS.2014.77. hdl: 10344/4443 . ISSN   0740-7459. S2CID   1965218.
  8. Microsoft Internal Solorigate Investigation Update.
  9. Oram, Andy (2015). Getting Started with InnerSource. O’Reilly Media, Inc. ISBN   978-1-491-93758-7.
  10. Smith, Jared (2016). Using open source methods for internal software projects. O’Reilly Media, Inc.
  11. Archived at Ghostarchive and the Wayback Machine : Commit San Francisco 2020: Shucking Corporate Oysters-Kickstarting an Innersource Culture @ T-Mobile. YouTube .
  12. "Watch: Creating an InnerSource Hub at Siemens". JFrog. 2020-07-28. Retrieved 2020-12-09.
  13. Stol, K. J.; Avgeriou, P.; Babar, M. A.; Lucas, Y.; Fitzgerald, B. (2014). "Key factors for adopting InnerSource". ACM Transactions on Software Engineering and Methodology. 23 (2): 1. doi:10.1145/2533685. hdl: 10344/3897 . S2CID   6995068.