Skip to content

Latest commit

 

History

History
104 lines (72 loc) · 4.71 KB

UIP-0108.md

File metadata and controls

104 lines (72 loc) · 4.71 KB
uip title description author status type category created
0108
`%yard`: A Developer Commons
A standard desk distributing developer tools not justified in `%base`.
~lagrev-nocfep
Draft
Standards Track
Kernel
2023-07-24

Abstract

Urbit needs a standard distribution which contains common tools and services for developers. %base is reserved for Arvo and its immediate agents, and there is a justified resistance to growing it unnecessarily. However, we should support common userspace tools—libraries, marks, and agents—as official parts of the Urbit ecosystem.

The proposed desk, %yard, will serve as a developer commons to collect the elements that programmers and app developers on Urbit need as basic tools. The components of such a desk will be drawn mainly from existing well-vetted apps and libraries.

Status

After the core architecture meeting on ~2023.7.31, the decision was made to field %yard as a standalone desk first until it matures.

That is now available at urbit/yard.

Motivation

Urbit needs a standard distribution which contains common tools and services. The two standard desks for interoperability do not seem to be good candidates for this based on their current intent:

  • %base is reserved for Arvo and its immediate agents, and there is a justified resistance to growing it unnecessarily.
  • %garden/%landscapecontain support for Tlon-oriented services, such as the notifications system and S3 storage.

However, we should continue to support some common userspace tools—libraries, marks, and agents—as official parts of the Urbit ecosystem.

This proposal suggests creating a new desk, %yard, to collect the elements that developers on Urbit need as basic common tools.

Some rules of thumb for inclusion in %yard:

  • Tools should not replicate (core, standard distribution) functionality unnecessarily, although a case can be made for unification or mirroring.
  • Since inclusion in such a desk implies a commitment to maintenance, we prefer to include tools that already fall within the Urbit Foundation's purview.
  • No kelvin decrement should be necessary, and Zuse and the rest of the standard library will not be affected. (It is worth noting that %yard will provide a way of gently introducing userspace tools en route to %base, however.)

Specification

The initial version of %yard is available at #6691.

We propose the following inclusions in the initial distribution:

  • /app
    • global-store.hoon (requires some finish but is close to ready)
    • docs.hoon? (What would be the ramification of distributing %docs this way?) but yes to docs/dev-desk material
  • /gen
    • ../base/dbug.hoon
    • John JSON reparser tools
  • /lib
    • copies of necessary %base libraries like agentio and skeleton
    • ../landscape/docket.hoon
    • etch.hoon (modified to not need Uqbar Ziggurat tools)
    • etui.hoon (~paldev TUI library)
    • regex.hoon (ready)
    • rudder.hoon (ready)
    • schooner.hoon (modified for more MIME types)
  • /mar
    • copies of most %base marks (linked)
    • copies of many %landscape marks (linked; particularly so Treaty/Docket works out of the box)
    • csv.hoon, tsv.hoon
    • graphic stuff: tiff, jpg, jpeg, gif, webp
    • audio stuff: wav, mp3, ogg, flac
    • movie stuff: avi, mp4, mov, ogv, webm
    • font stuff: otf, ttf, woff
  • /sur
    • ../landscape/docket.hoon
  • /ted
    • naive-csv.hoon from %base
  • /tests
    • appropriate tests for many or all of these

%yard is not subject to kelvin versioning, but a kelvin burn may be affected in two cases:

  • Some non-core functionality of Urbit which is currently in %base can be moved to %yard; this includes useful but not system-critical marks and libraries.
  • %yard can support jets, which may entail runtime changes and kelvin decrements.

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119 and RFC 8174.

Rationale

TBD

Backwards Compatibility

Although %yard is a new addition, it may subsume some non-core functionality which is currently in %base. This includes useful but not system-critical marks and libraries.

Backwards compatibility is only affected inasmuch as developers are using these originating from %base if they are retired.

Reference Implementation

The initial version of %yard is available at #6691.

Security Considerations

Needs discussion.

Copyright

Copyright and related rights waived via CC0.