Code Co-op
   HOME

TheInfoList



OR:

Code Co-op is the
peer-to-peer Peer-to-peer (P2P) computing or networking is a distributed application architecture that partitions tasks or workloads between peers. Peers are equally privileged, equipotent participants in the network. They are said to form a peer-to-peer n ...
revision control In software engineering, version control (also known as revision control, source control, or source code management) is a class of systems responsible for managing changes to computer programs, documents, large web sites, or other collections o ...
system made by Reliable Software.


Distinguishing features

Code Co-op is a distributed
revision control In software engineering, version control (also known as revision control, source control, or source code management) is a class of systems responsible for managing changes to computer programs, documents, large web sites, or other collections o ...
system of the replicated type. It uses
peer-to-peer Peer-to-peer (P2P) computing or networking is a distributed application architecture that partitions tasks or workloads between peers. Peers are equally privileged, equipotent participants in the network. They are said to form a peer-to-peer n ...
architecture to share projects among developers and to control changes to files. Instead of using a
centralized database A centralized database (sometimes abbreviated CDB) is a database that is located, stored, and maintained in a single location. This location is most often a central computer or database system, for example a desktop or server CPU, or a mainframe c ...
(the repository), it replicates its own database on each computer involved in the project. The replicas are synchronized by the exchange of (differential) ''scripts''. The exchange of scripts may proceed using different transports, including e-mail (support for
SMTP The Simple Mail Transfer Protocol (SMTP) is an Internet standard communication protocol for electronic mail transmission. Mail servers and other message transfer agents use SMTP to send and receive mail messages. User-level email clients typical ...
and
POP3 In computing, the Post Office Protocol (POP) is an application-layer Internet standard protocol used by e-mail clients to retrieve e-mail from a mail server. POP version 3 (POP3) is the version in common use, and along with IMAP the most common p ...
, integration with
MAPI Messaging Application Programming Interface (MAPI) is an API for Microsoft Windows which allows programs to become email-aware. While MAPI is designed to be independent of the protocol, it is usually used to communicate with Microsoft Exchange Ser ...
clients,
Gmail Gmail is a free email service provided by Google. As of 2019, it had 1.5 billion active users worldwide. A user typically accesses Gmail in a web browser or the official mobile app. Google also supports the use of email clients via the POP an ...
) and LAN. Code Co-op has a built-in
peer-to-peer wiki Wiki software (also known as a wiki engine or a wiki application), is collaborative software that runs a wiki, which allows the users to create and collaboratively edit pages or entries via a web browser. A wiki system is usually a web application ...
system, which can be used to integrate documentation with a software project. It is also possible to create text-based Wiki databases, which can be queried using simplified SQL directly from wiki pages.


Standard features

#Distributed development support through
E-mail Electronic mail (email or e-mail) is a method of exchanging messages ("mail") between people using electronic devices. Email was thus conceived as the electronic ( digital) version of, or counterpart to, mail, at a time when "mail" meant ...
,
LAN Lan or LAN may also refer to: Science and technology * Local asymptotic normality, a fundamental property of regular models in statistics * Longitude of the ascending node, one of the orbital elements used to specify the orbit of an object in sp ...
, or
VPN A virtual private network (VPN) extends a private network across a public network and enables users to send and receive data across shared or public networks as if their computing devices were directly connected to the private network. The be ...
#Change-based model—modifications to multiple files are checked in as one transaction #File additions, deletions, renames, and moves are treated on the same level as edits—they can be added in any combination to a check-in changeset #File changes can be reviewed before a check-in using a built-in or user-defined differ #Synchronization changes can be reviewed in the same manner by the recipients #Three-way visual merge #Project history is replicated on each machine. Historical version can be reviewed, compared, or restored #Integration with Microsoft SCC clients, including
Visual Studio Visual Studio is an integrated development environment (IDE) from Microsoft. It is used to develop computer programs including web site, websites, web apps, web services and mobile apps. Visual Studio uses Microsoft software development platfor ...


History

Code Co-op was one of the first distributed version control systems. It debuted at the 7th Workshop on System Configuration Management in May 1997. The development of Code Co-op started in 1996, when Reliable Software, the distributed software company that makes it, was established. Reliable Software needed a collaboration tool that would work between the
United States The United States of America (U.S.A. or USA), commonly known as the United States (U.S. or US) or America, is a country primarily located in North America. It consists of 50 states, a federal district, five major unincorporated territorie ...
and
Poland Poland, officially the Republic of Poland, is a country in Central Europe. It is divided into 16 administrative provinces called voivodeships, covering an area of . Poland has a population of over 38 million and is the fifth-most populous ...
. The only dependable and affordable means of communication between the two countries was e-mail, hence the idea of using e-mail for the exchange of diffs. Of course, with such slow transport, using a centralized repository was infeasible. Each user of Code Co-op had to have a full replica of the repository, including the history of changes. The problem was reduced to that of designing a distributed database that uses slow and unreliable transport for synchronization (later, faster LAN transport was also added). It also followed that the synchronization between multiple sites must use some kind of
peer-to-peer Peer-to-peer (P2P) computing or networking is a distributed application architecture that partitions tasks or workloads between peers. Peers are equally privileged, equipotent participants in the network. They are said to form a peer-to-peer n ...
protocol. In 2018, the C++ source code for Code Co-op was released under the
MIT License The MIT License is a permissive free software license originating at the Massachusetts Institute of Technology (MIT) in the late 1980s. As a permissive license, it puts only very limited restriction on reuse and has, therefore, high license comp ...
.


Theoretical foundations

Code Co-op is an example of a
distributed database A distributed database is a database in which data is stored across different physical locations. It may be stored in multiple computers located in the same physical location (e.g. a data centre); or maybe dispersed over a network of interconnect ...
. Local repositories are considered the
replicas A 1:1 replica is an exact copy of an object, made out of the same raw materials, whether a molecule, a work of art, or a commercial product. The term is also used for copies that closely resemble the original, without claiming to be identical. Al ...
of this virtual database. Each check-in corresponds to a distributed commit—a non-blocking version of a
two-phase commit In transaction processing, databases, and computer networking, the two-phase commit protocol (2PC) is a type of atomic commitment protocol (ACP). It is a distributed algorithm that coordinates all the processes that participate in a distributed a ...
.


References


External links

* * {{Version control software Distributed version control systems Formerly proprietary software Free software programmed in C++ Free version control software Software using the MIT license Version control systems