Monotone (software)

Last updated
Monotone
Developer(s) The monotone team
Initial releaseApril 6, 2003;20 years ago (2003-04-06)
Stable release
1.1 [1] / May 4, 2014;9 years ago (2014-05-04)
Repository
Written inC++
Operating system Unix, Linux, BSD, Mac OS X, Windows
Available inEnglish, Italian, Swedish, Portuguese, German, Spanish
Type Revision control
License GPL-2.0-or-later
Website www.monotone.ca   OOjs UI icon edit-ltr-progressive.svg

Monotone is an open source software tool for distributed revision control.

Contents

Monotone tracks revisions to files, groups sets of revisions into changesets, and tracks history across renames. The focus of the project is on integrity over performance. [2] Monotone is designed for distributed operation, and makes heavy use of cryptographic primitives to track file revisions (via the SHA-1 secure hash) and to authenticate user actions (via RSA cryptographic signatures).

History

Milestones

Monotone version 0.26 introduced major changes to the internal database structures, including a new structure known by Monotone developers as a roster. [3] Monotone databases created with version 0.26 can not exchange revisions with older Monotone databases. Older databases must first be upgraded to the new format. The new netsync protocol is incompatible with earlier versions of Monotone.

As Git inspiration

In April 2005, Monotone became the subject of increased interest in the FOSS community after Linus Torvalds mentioned it as a possible replacement for BitKeeper in the Linux development process. In a post on the Linux kernel mailing list, Torvalds praised Monotone and disparaged Subversion (and by extension, all client-server version-control systems): [4]

Don't bother telling me about subversion. If you must, start reading up on "monotone". That seems to be the most viable alternative, but don't pester the developers so much that they don't get any work done. They are already aware of my problems ;)

[4]

Instead of adopting Monotone, Torvalds decided to write his own SCM system, Git. Git's design uses some ideas from Monotone, but the two projects do not share any core source code. Git has a much stronger focus on high performance, inspired by the lengthy history and demanding distributed modes of collaboration used by Torvalds and the other Linux kernel authors. Torvalds later commented on Monotone's design and performance:

If you want a VCS that is written in C++, go play with Monotone. Really. They use a "real database". They use "nice object-oriented libraries". They use "nice C++ abstractions". And quite frankly, as a result of all these design decisions that sound so appealing to some CS people, the end result is a horrible and unmaintainable mess.

[5]

A key issue debated [6] was whether the replacement of BitKeeper should support cherry picking, whereby a tree maintainer can approve a subset of patches while rejecting others on an individual basis. Torvalds argued that this approach "results in the wrong dynamics and psychology in the system" by shifting burden to the upstream maintainers rather than forcing downstream maintainers to put more effort into keeping their trees free from garbage. He further argued that Monotone is correct in its aversion to cherry-picking as a feature, but then failed to take it far enough by not making it easy enough to "throw away" unclean working trees after their purpose is served. [7] Torvalds also noted his perception that Monotone at that time had not achieved the performance level required by a project as large as Linux kernel development.

Design

Like GNU arch, and unlike Subversion, Monotone takes a distributed approach to version control. Monotone uses SHA-1 hashes to identify specific files or groups of files, as with Git and Mercurial, in place of linear revision numbers. Each participant maintains their own revision history, stored in a local SQLite database.

Integrity

Prior to some heavy optimisation in revision 0.27, Monotone's emphasis on correctness over optimisation was often blamed for poor initial experiences. The first action of a new user is often to synchronize (clone) a large existing Monotone database, an action which often took hours for large databases, due to the extensive validation and integrity checking which Monotone performs when revisions are moved through the network. Once the initial (clone) database is populated, subsequent actions usually proceed more rapidly. As of July 2010, there is still room for further optimisation on some rarer functions.[ citation needed ]

Workflow

Monotone is especially strong in its support for a diverge/merge workflow, which it achieves in part by always allowing commit before merge. [8]

Networking

Although Monotone originally supported a variety of networking protocols for synchronizing trees, it now exclusively uses a custom protocol called netsync, which is more robust and efficient, and shares some conceptual ground with rsync and cvsup. (However, as of version 0.27, it is possible to use the netsync protocol over any stream, notably including ssh connections.) Netsync has its own IANA-assigned port (4691) and older versions of it are supported by a Wireshark plug-in for traffic analysis. There is no separate Monotone server because any Monotone client can act as a server.

Other features

Other features of Monotone include:

Drawbacks

As of January 2008, possible drawbacks of Monotone include:

Implementation

Monotone is implemented in modern-dialect C++ on top of the Boost library, the Botan cryptography library, and the SQLite database library. Monotone supports customization and extension via hook functions written in the Lua programming language. The monotone build process is automated with BuildBot and includes extensive regression tests.

See also

Related Research Articles

<span class="mw-page-title-main">Linus Torvalds</span> Creator and lead developer of the Linux kernel (born 1969)

Linus Benedict Torvalds is a Finnish software engineer who is the creator and lead developer of the Linux kernel, used by Linux distributions like Debian, Arch and Android. He also created the distributed version control system Git.

BitKeeper is a discontinued software tool for distributed revision control of computer source code. Originally developed as proprietary software by BitMover Inc., a privately held company based in Los Gatos, California, it was released as open-source software under the Apache-2.0 license on 9 May 2016. BitKeeper is no longer being developed.

The Linux kernel mailing list (LKML) is the main electronic mailing list for Linux kernel development, where the majority of the announcements, discussions, debates, and flame wars over the kernel take place. Many other mailing lists exist to discuss the different subsystems and ports of the Linux kernel, but LKML is the principal communication channel among Linux kernel developers. It is a very high-volume list, usually receiving about 1,000 messages each day, most of which are kernel code patches.

<span class="mw-page-title-main">Git</span> Software for version control of files

Git is a distributed version control system that tracks changes in any set of computer files, usually used for coordinating work among programmers who are collaboratively developing source code during software development. Its goals include speed, data integrity, and support for distributed, non-linear workflows.

In software development, distributed version control is a form of version control in which the complete codebase, including its full history, is mirrored on every developer's computer. Compared to centralized version control, this enables automatic management branching and merging, speeds up most operations, improves the ability to work offline, and does not rely on a single location for backups. Git, the world's most popular version control system, is a distributed version control system.

In software development, a codebase is a collection of source code used to build a particular software system, application, or software component. Typically, a codebase includes only human-written source code system files; thus, a codebase usually does not include source code files generated by tools or binary library files, as they can be built from the human-written source code. However, it generally does include configuration and property files, as they are the data necessary for the build.

<span class="mw-page-title-main">Mercurial</span> Distributed revision-control tool for software developers

Mercurial is a distributed revision control tool for software developers. It is supported on Microsoft Windows and Unix-like systems, such as FreeBSD, macOS, and Linux.

A kernel is a component of a computer operating system. A comparison of system kernels can provide insight into the design and architectural choices made by the developers of particular operating systems.

<span class="mw-page-title-main">Comparison of open-source wireless drivers</span>

Wireless network cards for computers require control software to make them function. This is a list of the status of some open-source drivers for 802.11 wireless network cards.

In software development, version control is a class of systems responsible for managing changes to computer programs or other collections of information such that revisions have a logical and consistent organization. The following tables include general and technical information on notable version control and software configuration management (SCM) software. For SCM software not suitable for source code, see Comparison of open-source configuration management software.

<span class="mw-page-title-main">Linux</span> Family of Unix-like operating systems

Linux is a family of open-source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991, by Linus Torvalds. Linux is typically packaged as a Linux distribution (distro), which includes the kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word "Linux" in their name, but the Free Software Foundation uses and recommends the name "GNU/Linux" to emphasize the use and importance of GNU software in many distributions, causing some controversy.

Linux began in 1991 as a personal project by Finnish student Linus Torvalds to create a new free operating system kernel. The resulting Linux kernel has been marked by constant growth throughout its history. Since the initial release of its source code in 1991, it has grown from a small number of C files under a license prohibiting commercial distribution to the 4.15 version in 2018 with more than 23.3 million lines of source code, not counting comments, under the GNU General Public License v2 with a syscall exception meaning anything that uses the kernel via system calls are not subject to the GNU GPL.

kernel.org is the main distribution point of source code for the Linux kernel, which is the base of the Linux operating system.

<span class="mw-page-title-main">Tux (mascot)</span> Mascot of Linux

Tux is a penguin character and the official brand character of the Linux kernel. Originally created as an entry to a Linux logo competition, Tux is the most commonly used icon for Linux, although different Linux distributions depict Tux in various styles. The character is used in many other Linux programs and as a general symbol of Linux.

<span class="mw-page-title-main">Linux kernel</span> Operating system kernel

The Linux kernel is a free and open-source, monolithic, modular, multitasking, Unix-like operating system kernel. It was originally written in 1991 by Linus Torvalds for his i386-based PC, and it was soon adopted as the kernel for the GNU operating system, which was written to be a free (libre) replacement for Unix.

Plastic SCM is a cross-platform commercial distributed version control tool developed by Códice Software Inc. It is available for Microsoft Windows, Mac OS X, Linux, and other operating systems. It includes a command-line tool, native GUIs, diff and merge tool and integration with a number of IDEs. It is a full version control stack not based on Git.

WireGuard is a communication protocol and free and open-source software that implements encrypted virtual private networks (VPNs), and was designed with the goals of ease of use, high speed performance, and low attack surface. It aims for better performance and more power than IPsec and OpenVPN, two common tunneling protocols. The WireGuard protocol passes traffic over UDP.

Bcachefs is a copy-on-write (COW) file system for Linux-based operating systems. Its primary developer, Kent Overstreet, first announced it in 2015, and it will be added to the Linux kernel beginning with 6.7. It is intended to compete with the modern features of ZFS or Btrfs, and the speed and performance of ext4 or XFS. It self-describes as "stable", as of December 2022.

This article documents the version history of the Linux kernel. The Linux kernel is a free and open-source, monolithic, Unix-like operating system kernel. It was conceived and created in 1991 by Linus Torvalds.

References

  1. "NEWS". May 4, 2014. Retrieved July 16, 2019.
  2. "7 Version Control Systems Reviewed". September 18, 2008. Retrieved 2010-11-01.
  3. What are rosters
  4. 1 2 Linus Torvalds (April 6, 2005). "LKML: Linus Torvalds: Kernel SCM saga". LKML .
  5. Linus Torvalds (2007-09-06). "Re: [RFC] Convert builin-mailinfo.c to use The Better String Library". GMANE . Archived from the original on 2016-02-06.
  6. David Woodhouse (2005-04-07). "LKML: David Woodhouse: Kernel SCM saga" . Retrieved 2017-02-23.
  7. Linus Torvalds (April 7, 2005). "LKML: Linus Torvalds: Re: Kernel SCM saga". LKML .
  8. "Dealing with a Fork - monotone documentation" . Retrieved 2010-11-21.