Emergent Coding is a
decentralized
Decentralization or decentralisation is the process by which the activities of an organization, particularly those related to planning and decision-making, are distributed or delegated away from a central, authoritative location or group and gi ...
software development
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 ...
paradigm employing a type of
software component
A software component is a modular unit of software that encapsulates specific functionality. The desired characteristics of a component are reusability and maintainability.
Value
Components allow software development to assemble software ...
that cannot be copied or reused with the objective of achieving both workable developer specialization, and a practical software components market.
Description
Emergent Coding is a
decentralized
Decentralization or decentralisation is the process by which the activities of an organization, particularly those related to planning and decision-making, are distributed or delegated away from a central, authoritative location or group and gi ...
software development
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 ...
paradigm employing a new type of software component that cannot be copied or reused.
[ The method ensures developers can safely list their software components for public sale without endangering prospects for repeat business,] a feature essential for both workable developer specialization, and realizing Douglas McIlroy's 1968 vision of a software components market.
The change is a reversal of integration responsibility such that instead of fetching a component in a traditional sense, a developer provides a project construction-site to the supplier with that supplier now integrating their component into the project. The reversal switches the view of components from a library
A library is a collection of Book, books, and possibly other Document, materials and Media (communication), media, that is accessible for use by its members and members of allied institutions. Libraries provide physical (hard copies) or electron ...
-of-routines to a catalogue-of-design-services.[
The reversal permits this new component type to properly scale as the construction-site can be readily partitioned to engage sub-contractors allowing components to be fielded as an assemblage of smaller ones which do likewise. Scaling down allows small components to absorb the role of the traditional ]compiler
In computing, a compiler is a computer program that Translator (computing), translates computer code written in one programming language (the ''source'' language) into another language (the ''target'' language). The name "compiler" is primaril ...
, removing its centralism
Centralisation or centralization (American English) is the process by which the activities of an organisation, particularly those regarding planning, decision-making, and framing strategies and policies, become concentrated within a particular ...
from software development while scaling up results in domain-specific
Domain specificity is a theoretical position in cognitive science (especially modern cognitive development) that argues that many aspects of cognition are supported by specialized, presumably evolutionarily specified, learning devices. The posit ...
components for expressing project requirements
In engineering, a requirement is a condition that must be satisfied for the output of a work effort to be acceptable. It is an explicit, objective, clear and often quantitative description of a condition to be satisfied by a material, design, pro ...
.[
]
History
Douglas McIlroy
Malcolm Douglas McIlroy (born 1932) is an American mathematician, engineer, and programmer. As of 2019 he is an Adjunct Professor of Computer Science at Dartmouth College.
McIlroy is best known for having originally proposed Unix pipelines and de ...
at a NATO
The North Atlantic Treaty Organization (NATO ; , OTAN), also called the North Atlantic Alliance, is an intergovernmental organization, intergovernmental Transnationalism, transnational military alliance of 32 Member states of NATO, member s ...
conference in 1968, observed: "The Software Industry is Not Industrialized" and proposed a software components market with component "distribution by communication link” whereby “even very small components might be profitably marketed". McIlroy imagined a " Sears-Roebuck" style catalogue "to have for isown were epurchasing components." McIlroy's proposal did not address how viable developer specialization might come about if we are to turn our " crofters" into " industrialists". Specifically, while it is easy for a developer to specialize, it is virtually impossible for them to build a viable business as a specialist.
In late 1994, Noel Lovisa proposed reversing the integration responsibility as a means of shielding supplier intellectual property
Intellectual property (IP) is a category of property that includes intangible creations of the human intellect. There are many types of intellectual property, and some countries recognize more than others. The best-known types are patents, co ...
, thereby preserving prospects for repeat business, and establishing a workable basis for developer specialization. Lovisa founded Code Valley Corp Pty Ltd in May 2000 to create and field a practical software components market based on the principal, releasing a white paper in 2016,[ and conducting trials of a centralized software components market that same year. In June 2018, Lovisa delivered a keynote address at ICSE 2018 in ]Gothenburg
Gothenburg ( ; ) is the List of urban areas in Sweden by population, second-largest city in Sweden, after the capital Stockholm, and the fifth-largest in the Nordic countries. Situated by the Kattegat on the west coast of Sweden, it is the gub ...
, Sweden
Sweden, formally the Kingdom of Sweden, is a Nordic countries, Nordic country located on the Scandinavian Peninsula in Northern Europe. It borders Norway to the west and north, and Finland to the east. At , Sweden is the largest Nordic count ...
which, being the 50th anniversary of the 1968 NATO Software Engineering Conference, was attended by McIlroy and other industry leaders. In September 2023, McIlroy extended an invitation to Lovisa to present Emergent Coding at Dartmouth College
Dartmouth College ( ) is a Private university, private Ivy League research university in Hanover, New Hampshire, United States. Established in 1769 by Eleazar Wheelock, Dartmouth is one of the nine colonial colleges chartered before the America ...
, New Hampshire.
In late 2023, Code Valley began trials of a decentralized and fully non-custodial software components market featuring a custom Integrated Development Environment
An integrated development environment (IDE) is a Application software, software application that provides comprehensive facilities for software development. An IDE normally consists of at least a source-code editor, build automation tools, an ...
(IDE), over 5000 software components occupying 4 levels of abstraction
Abstraction is a process where general rules and concepts are derived from the use and classifying of specific examples, literal (reality, real or Abstract and concrete, concrete) signifiers, first principles, or other methods.
"An abstraction" ...
(Behaviour, Systems, Data, Byte), a Distributed Fault Tracing System (DFT), a 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, forming a peer-to-peer network of Node ...
electronic cash
Electronic cash was, until 2007, the debit card system of the German Banking Industry Committee, the association that represents the top German financial interest groups. Usually paired with a transaction account or current account, cards with ...
payment system, and an interactive catalogue of component prices, data sheets, contract specifications, and reference designs.
The implementation, itself built with emergent coding, is expected to publicly launch in 2025.
Emergent Coding Software Development
Component Based Software development begins with drafting an expression containing a series of contract statements for engaging the desired component suppliers assisted by the contract specifications published in the component catalogue. As all components in the catalogue have a listed price, the total cost of the project can be reliably determined from the expression before committing to construction. When the expression is deemed in order and the costs acceptable, the project can be built. During the build process, the IDE parses the expression and engages the contractors by forwarding contracts and payments to each. These contractors receive a portion of their requirements via their contract terms directly with the balance determined via collaboration between contractors as authorized by the contract terms. Each component contractor concludes their contract by returning a fragment of code and data that when concatenated, forms the resultant project binary.[
Each contractor engaged, verifies payment and allocates a job against the contract, being sure to return the job number to the client so they may forward communication authorizations for the collaborations between contractors as detailed in the expression. These contractors receive a portion of their requirements via their contract terms directly with the balance determined via collaboration with peers as authorized by the contract terms. Once in possession of project requirements, each sub-contracts smaller components as directed by their special knowledge, which do likewise. Each component subcontractor returns a fragment of code and data that when concatenated, form single code and data fragments for receipt to the client concluding the contract.][
]Leaf
A leaf (: leaves) is a principal appendage of the plant stem, stem of a vascular plant, usually borne laterally above ground and specialized for photosynthesis. Leaves are collectively called foliage, as in "autumn foliage", while the leav ...
contractors in the project contracting tree
In botany, a tree is a perennial plant with an elongated stem, or trunk, usually supporting branches and leaves. In some usages, the definition of a tree may be narrower, e.g., including only woody plants with secondary growth, only ...
similarly verify payment and allocate a job against the contract, being sure to return the job number to the client so they may forward communication authorizations for the collaborations between contractors as detailed by their special knowledge. As before, these contractors receive a portion of their requirements via their contract terms directly with the balance determined via collaboration with peers as authorized by the contract terms, however, as a result of gaining sufficient understanding of their design-time context, they render their code and data fragments directly for receipt to the client concluding the contract.[
]
See also
* component-based software engineering
Component-based software engineering (CBSE), also called component-based development (CBD), is a style of software engineering that aims to construct a software system from software component, components that are loosely-Coupling (computer program ...
* software product line engineering
* Comparison of programming languages
Notes
References
{{Reflist
Prototype-based programming languages
Cross-platform software