Jump to content

英文维基 | 中文维基 | 日文维基 | 草榴社区

User:Nlovisa/sandbox

From Wikipedia, the free encyclopedia
Nlovisa/sandbox
Emergent Coding official logo
Emergent Coding Studio IDE
ParadigmComponents based, Distributed Decentralized Development, Software Components Market
Designed byNoel Lovisa
DeveloperCode Valley
First appeared2000; 24 years ago (2000)
Stable release
G29 / TBD
Typing disciplineNA
ScopeNA
OSMac OS, Linux
LicenseEmergent Coding License
Filename extensions.ap, .elf
Websitewww.codevalley.com

Emergent Coding is a decentralized software development paradigm employing a type of software component[1] that can not be copied or reused with the objective of achieving both workable developer specialization, and a practical software components market.[2]

Description

[edit]

Emergent Coding is a decentralized software development paradigm employing a new type of software component that can not be copied or reused.[1] 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.[2]

The essential 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-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 sophisticated 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, removing its centralism from software development while scaling up results in domain-specific components for expressing project requirements.

Proper scaling when combined with practical specialization also permit deeper levels of automation whereby a developer can deploy a software agent to deliver the component design service automatically on their behalf. Agents make it practical to automatically build a single feature into many thousands of projects simultaneously rather than the traditional developer building many thousands of features into a single project manually, and at best serially.

Finally, as each component contributes design know-how to the project, the cost and complexity of fielding projects rises linearly with project size.

History

[edit]

Douglas McIlroy at a NATO conference in 1968, observed “The Software Industry is Not Industrialized[2] 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 [his] own were [he] purchasing 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, thereby preserving prospects for repeat business, and establishing a workable basis for developer specialization. Lovisa founded Code Valley Corp Pty Ltd[3] in May 2000 to create and field a practical software components market based on the principal, releasing a white paper in 2016,[1] 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, Sweden[4][5] which, being the 50th anniversary of the 1968 NATO Software Engineering Conference,[2] was attended by McIlroy and other well-respected developers. In September 2023, McIlroy extended an invitation to Lovisa to present Emergent Coding at Dartmouth College, New Hampshire.[6]

In late 2023, Code Valley began trials of a decentralized and fully non-custodial software components market featuring a custom Integrated Development Environment (IDE), over 5000 software components occupying 4 levels of abstraction (Behaviour, Systems, Data, Byte), a Distributed Fault Tracing System (DFT), a peer-to-peer electronic cash 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 2024.

Implementations

[edit]
Studio IDE

One implementation of a software components market consists of five (5) parts: An integrated development environment, a global pool of component agents, a components catalogue, electronic cash payments, and distributed fault tracing.

An integrated development environment is used to express the desired project features, source the features by contracting the corresponding agents, manage the project construction process, and return the resulting project binary. Using the tool, developers can construct software applications (including agent applications) and when required, conduct fault tracing on a previous built project. The implementation integrates the components catalogue and includes an electronic cash wallet.

A component agent is an application hosted by a developer for the purposes of providing a for-fee software design service. Each agent is capable of designing a feature into a project binary when contracted and can support multiple jobs at one time. The agent application is closely bound with the components catalogue and integrates both an electronic cash wallet and a management console. When ready for commercial operation, the developer will register its service with the components catalogue to signal the service is available, and where and how the service may be contracted.

The components catalogue lists components by individual classification with many classifications arranged over several levels of abstraction. Within each classification are listed suppliers that share a common design-time contracting specification, and when contracted, will design the same feature into a project. Suppliers are distinguished by name, price, performance, reputation, resource usage, and so on. The catalogue is implemented on a Kademlia store, hosted by all nodes of the system so as to scale as new components are fielded.

The market uses a cryptocurrency to provide decentralized electronic cash payments for each component purchased regardless of supplier origin. All agents as well as each integrated developer environment have an electronic cash wallet to send and receive electronic cash payments directly with peers.

Distributed fault tracing conducts fault tracing in historically built software with the system designed to locate suppliers in breech of contract without any project contributors exposing their intellectual property. Traces are initiated by using the integrated development environment to raise a fault ticket with the supplier responsible as identified by combining fault and build-log information. The supplier will do like wise, potentially raising a fault-ticket with one of its suppliers as identified by combining fault and job-log information, and so on.

Component Based Software Development

[edit]
Emergent Coding Integrated Development Environment (IDE)

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.[1]

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 collaborations 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.[1]

Leaf contractors in the project contracting tree 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 collaborations 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.[1]

See also

[edit]

Notes

[edit]

References

[edit]
  1. ^ a b c d e f "Emergent Coding Whitepaper, available on website". Code Valley. Retrieved 6 August 2024.
  2. ^ a b c d McIlroy, Douglas (11 October 1968). "MASS PRODUCED SOFTWARE COMPONENTS". Software Engineering, Report on a conference sponsored by the NATO Science Committee, Garmisch, Germany. Retrieved 6 August 2024.
  3. ^ "Australian Business Register".
  4. ^ "Live from ICSE: Industry Forum - Noel Lovisa". Retrieved 19 September 2024.
  5. ^ "ICSE 2018". 40th International Conference on Software Engineering, May 27 - 3 June 2018, Gothenburg, Sweden.
  6. ^ "Emergent coding – a radical model of software development". 15 September 2023. Retrieved 19 September 2024.