Code Owners
   HOME

TheInfoList



OR:

In
software engineering Software engineering is a branch of both computer science and engineering focused on designing, developing, testing, and maintaining Application software, software applications. It involves applying engineering design process, engineering principl ...
, code ownership is a term used to describe control of an individual
software developer Software development is the process of designing and Implementation, implementing a software solution to Computer user satisfaction, satisfy a User (computing), user. The process is more encompassing than Computer programming, programming, wri ...
or a development team over
source code In computing, source code, or simply code or source, is a plain text computer program written in a programming language. A programmer writes the human readable source code to control the behavior of a computer. Since a computer, at base, only ...
modifications of a module or a product.


Definitions

While the term is very popular, there is no universally accepted definition of it. Koana et al., in their 2024 literature review, found 28 different definitions, and classified them as follows: * ''Psychological ownership'' is a feeling by the developer of ownership and pride in the particular element of the project; * ''Corporeal ownership'' is a set of formal or informal rules defining responsibility for a particular software piece. The rules depend on the development approach taken by the team, but generally can be partitioned along the lines of "what is being owned?" / "who owns it?" / "what is the degree of control?": ** while the answer to "what?" is typically some part of the source code, the ownership concept have been also applied to other artifacts of the software development as diverse as an entire project or a single
software bug A software bug is a design defect ( bug) in computer software. A computer program with many or serious bugs may be described as ''buggy''. The effects of a software bug range from minor (such as a misspelled word in the user interface) to sev ...
; ** the owner ("who?") might be an individual developer or a group that might include authors of the code, reviewers, and managers. The two extremes are represented by a ''dedicated ownership'' with just one developer responsible for any particular piece of code and a
collective code ownership Extreme programming (XP) is an agile software development methodology used to implement software systems. This article details the practices used in this methodology. Extreme programming has 12 practices, grouped into four areas, derived from the ...
, where every member of the team owns all the code; ** the degree of control by an owner can vary from a mandatory code review to responsibility for testing to a complete implementation.


Authorship

Some researchers also use the term to describe the authorship of software (identifying who wrote a particular line of software). Koana et al. state that this is a different, although related, meaning, as the code owner might not be original author of the software piece.


Influence upon quality

It is generally accepted that the lack of clear code ownership (usually in the form of many developers freely applying small changes to a shared piece of code) is causing errors to be introduced. At the same time, with no code owner, the knowledge about an artifact can be lost. This is confirmed by large-scale studies, for example, involving
Windows 7 Windows 7 is a major release of the Windows NT operating system developed by Microsoft. It was Software release life cycle#Release to manufacturing (RTM), released to manufacturing on July 22, 2009, and became generally available on October 22, ...
and
Windows Vista Windows Vista is a major release of the Windows NT operating system developed by Microsoft. It was the direct successor to Windows XP, released five years earlier, which was then the longest time span between successive releases of Microsoft W ...
.


Code owners in version control

Modern
version control systems Version control (also known as revision control, source control, and source code management) is the software engineering practice of controlling, organizing, and tracking different versions in history of computer files; primarily source code ...
allow explicit designation of code owners for particular files or directories (cf.
GitHub GitHub () is a Proprietary software, proprietary developer platform that allows developers to create, store, manage, and share their code. It uses Git to provide distributed version control and GitHub itself provides access control, bug trackin ...
CODEOWNERS feature). Typically, the code owner is either receiving notifications for all the changes in the owned code or is required to approve each change.


References


Sources

* * * Software engineering terminology {{software-eng-stub