Giter Site home page Giter Site logo

IPLD implementation of Cmacc - about cmacc-org HOT 8 OPEN

HazardJ avatar HazardJ commented on August 19, 2024
IPLD implementation of Cmacc -

from cmacc-org.

Comments (8)

HazardJ avatar HazardJ commented on August 19, 2024

Providing some context:
IPLD is linking for IPFS - see https://github.com/ipfs/specs/tree/master/ipld
IPFS is ... the permanent web. An IPFS implementation of Cmacc would enable resilient, rapid, hubless sites, databases (IPDB) and the like. https://ipfs.io/
Cmacc is our shorthand for the CommonAccord linking and inheritance model. See, e.g. http://www.commonaccord.org/index.php?action=doc&file=S/About/Tech/Spec/0.md

from cmacc-org.

PrivacyCDN avatar PrivacyCDN commented on August 19, 2024

thanks!

(message trimmed by HazardJ)

from cmacc-org.

HazardJ avatar HazardJ commented on August 19, 2024

In chat conversation with Willem, I suggested:

Cmacc can be described as three levels of expansion (2 currently implemented, 1 speculative):

  1. {variablename} in a value (k/v), expanded by matching "variablename" with a key name in a dictionary.
  2. [filename] in a dictionary, expanded by matching the name of another dictionary, from a list of dictionaries.
  3. [[folder]] in the list of dictionaries, expanded by matching another list of dictionaries.

All this can be understood as files in folders. It can also be done in any other format, including databases. It may be helpful to consider files in folders as the canonical form since they are i) widely used and understood, even by casual users, ii) the format of git and software collaboration.

.3. is currently not implemented, the sole dictionary is /Doc/ . (Though with the [?http://...] convention one can include other dictionaries ad hoc.)

.2. [file] has an "include as" notion - if the key is not blank, then the keys in the linked dictionary will be treated as prefixed by the key. ( 1.=[Z/ol/4] ). The {variables} in values in the linked dictionary will also be i) treated as prefixed, ii) if no match is found, treated by removing the prefix. Where there is recursive prefixing, the right-most prefix is removed first. (This deprefixing works exactly in Primavera's implementation. It is a consequence of her use of objects, rather than as a result of my specification. A very satisfying confirmation of the logic of the model.)

from cmacc-org.

jbenet avatar jbenet commented on August 19, 2024

Can you list a bunch of example paths here?

from cmacc-org.

HazardJ avatar HazardJ commented on August 19, 2024

Thanks. Let me know if this is helpful.

A pretty good collection of the variety of key-paths and file-paths is in the file at http://www.commonaccord.org/index.php?action=source&file=Dx/Acme/02-NDA-With-Quake/0.md.

A sample of those:

Conf.Engage.Access.Sec={Conf.Engage.Access.Alt3.Sec}

Misc.Assign.1.sec={Misc.Assign.1.Alt1.sec}

These are matched via keys in files included as:

=[Wx/com/cooleygo/US/NDA/Form/0.md]

The ".AltN." examples are one of the few where I don't use a period to indicate a transition. Alt=[Z/Alt/4](deep in the NDA doc) could have been included as Alt.=[Z/Alt/4], but ".Alt.N." seems not to read as nicely as ".AltN.".

from cmacc-org.

chriscool avatar chriscool commented on August 19, 2024

My opinion is that, as it looks like you are happy with Cmacc, it is probably better to just be able to convert to/from an IPLD format for now. You could then decide and maybe change over time for which purposes you want to use IPLD/IPFS and for which purposes you want to use Cmacc.

from cmacc-org.

HazardJ avatar HazardJ commented on August 19, 2024

Christian,
Thanks. Yes, that makes sense to me. @wilmveel and Axel are integrating IPFS support in the version that they are doing that uses a "." notation for delimiters. So we have a variety of approaches that I expect will converge. (http://github.com/wilmveel/common-accord)
Jim

from cmacc-org.

HazardJ avatar HazardJ commented on August 19, 2024

I did a really rough (lawyerly?) use of IPFS at http://source.commonaccord.org/index.php?action=source&file=ipfs/QmbnngTXmT6XuVJzS2sbuuynQiy83ELU3bLXuKA8Yoczc7
I'm just using ipfs add and ipfs get on each file, but guess that this could be done with ipfs mount. I got tangled up on the install of go on OSX. Hope to get this solved so I can experiment further.

from cmacc-org.

Related Issues (14)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.