Community Public File Directory

You could do it to confirm no bugs.

Just dont take the prize.. or do.. :smiley:

2 Likes

Busy writing code, maybe later

And on my old phone I had an app you could enter a puzzle and it’d solve it. If someone doesn’t get it in 1/2 hour there is something wrong

3 Likes

As long as it gets a couple new folk to try dweb and Autonomi I am happy :blush:

3 Likes

Nice website , , i’m thinking of making some sort of XOR address book to enrol friends and to write shortened addresses in, first few and last few (6 in total?) digits (are these always unique, anyone) to remember who’s who.

If i make an app in the future i’m thinking about how to market it locally where i live and this idea came to mind, i’m thinking it might be kinda like a personal yellow pages/paper app store that grows over time in a local community and dosni need eg SEO or social media (I’m WJH following you on X,but i just follow stuff now and then and don’t really engage much) , just walking about chatting :slightly_smiling_face:

8 Likes

Super cool @Josh! :clap:

Moooaaaar plz!

:grinning_cat_with_smiling_eyes:

8 Likes

I have moooaar planz but lesss time.
Coming soon.. err sometime :upside_down_face:

Ps. @moderators if one of you feel so inclined perhaps better to split Atlas into its own thread?

7 Likes

meeee toooo

b5afa72021a5523a901e0de6c8e60da4dadbbb0cac4334c9415b81c366e255c222fbfcda3af67f756b1fef83f5ffedee
6 Likes

Good to see this!

I think we should actually broaden the scope of this, as there are many reasons to have short names on Autonomi.

For example, in AntTP, I’ve introduced the concept of ā€˜bookmarks’, which are just short names pointing to Autonomi addresses (either immutable or mutable addresses). These can be used as aliases for anything pointers, registers, pubic archives, single files, etc. Essentially, anything that has an address that we may want to shorten.

In AntTP, I just specified 2 defaults, which are ā€˜imim’ and ā€˜traktion-blog’. Under the hood, the first is a pointer and the latter is a register, but both resolve to a public archive. Contextually, ā€˜imim’ is a public archive containing an application (typescript, css, html, etc) and ā€˜traktion-blog’ is a public archive containing markdown files (text) and media assets (pictures, videos, audio, etc). So, they have quite different contexts, but resolving them to names makes life easier.

Note that this isn’t really DNS - it’s just key/value for a name to an address, which is much finer grained than domain names to hosts. For example, with IMIM, two short names can be used to build up the URL.

I was pondering just creating a super simple CSV style file and dumping name/address pairs in it, then allowing AntTP to ingest, then resolve, these. The source file could be uploaded to Autonomi, so AntTP would just need an address to point to the file. Indeed, these could be considered ā€˜Traktion’s pet names’ and pointing to other files, or multiple files, could include different pet names for addresses.

Longer term, maintaining huge lists isn’t going to scale (at least from a file maintenance perspective) and we will hit similar problems to DNS (i.e. who is responsible for what names, who can you trust, what is the most truthful name set, etc). However, having the nuts/bolts to ingest and resolve a smaller set of names, could easily be extended to something more comprehensive.

4 Likes

@John @Traktion it would be good to try and standardise this. I have similar plans for dweb names (see dweb list-names and the Names demo app).

My approach is to use Scratchpads, similar to ScratchChat and Atlas - so you have private settings, public settings and can follow each other’s public settings, which can include names (aka bookmarks) etc.

I’m using JSON for that ATM, but it we can converge on a standard for that would be nice.

3 Likes

For key/value pairs, I thought JSON may be a bit bulky and you tend to have to parse the whole file. Fine/ideal for configs, especially stuff javascript/typescript needs to parse/use, but for bulk data with repeated keys, it can bloat (EDIT: although lists/arrays can be used to avoid some of that).

While CSV is as old as the hills, it is super simple, for plain text, with minimal formatting/syntax. Being able to just parse blocks/batches from a file and/or multiple files (or scratchpads, etc) could be nice and flexible.

For names, we probably need to decide whether we need UTF-8 (probably do, for better cross language support) and/or what non-alphanumeric characters we accept. Some have special meaning in some contexts, for example (e.g. dots in hostnames). Disallowing spaces makes parsing much easier too (no quoting text, etc).

Maybe it is useful storing some meta data hints about the type of data being linked too (to avoid having to actually resolve and check it - a pain with mutable types atm). That would suggest a key with a multi-dimensional value though, mind.

We should probably prepare for the long term too, where key lookups against mutable types may become the norm for resolution, etc.

Just some thoughts. Could move to another thread and thrash it out?

2 Likes

I’ll post some content tonight or tomorrow morning about the address books idea (Filofax revival sorta? ) , it’s (reasoning) all scoped out ,i just need to edit and we can kick the tyres some more and see if there is something there. Back soon!

4 Likes

fwiw, I think a layered approach would help.

  1. name → address resolution (and possibly meta data about native address type, e.g. immutable, mutable pointer/register/graph/scratchpad/etc)
  2. value at address → format conventions (many options here… including address book ideas, etc)
2 Likes

I plan some metadata for the name but just an address. So, a type tag (website, app, file etc), short description etc. So not key value unless value is a struct.

1 Like

Not to blow my own horn here, but the key concept behind Colony is to address this exact issue: Autonomi metadata. The same semantics used for files can be used to describe Autonomi sites or in the case of Friends, people. Its all done in RDF so you can search for things with SPARQL queries once you read in all of your RDF data. For example, one entry may look like this in TriG syntax:

<ant://c859818c623ce4fc0899c2ab43061b19caa0b0598eec35ef309dbe50c8af8d59> <http://schema.org/description> "Beg Blag and Steal" ;
	a <http://schema.org/MediaObject> ;
	<http://schema.org/contentSize> "4MB" ;
	<http://schema.org/name> "BegBlag.mp3" .

The best part is the information is additive because each ā€˜pod’ containing this metadata is in its own named graph, so say I read in this metadata from someone else, but I want to tack on my own bit of information or overwrite something, I can do that:

<ant://c859818c623ce4fc0899c2ab43061b19caa0b0598eec35ef309dbe50c8af8d59> 
    <http://schema.org/description> "Beg Blag and Steal - live" ;
    <http://schema.org/comment> "This song is awesome!" .

For search, the information is ordered by what is ā€˜closest’ to you, so if you are directly downloading this metadata file, this information will be displayed vs this entry in a metadata file that you got from a reference of a reference.

The way I envision DNS on Autonomi is entries would be made in these pod metadata files and people would choose to download them. Anyone can make and maintain their own index and attach their own information. Eventually, a handful of indexes will become the ā€˜gold standard’ ones that people trust most. So unlike the WWW, there won’t be a central registry (that is unenforceable here), DNS will be federated.

4 Likes

I :heart: RDF as many here know, and SPARQL. I imemented a Solid pod as a web client on an early Safe Network so am very interested in using this.

How can we go forward? A spec, Rust lib, ???

I know Rust has support for RDF, but have only used it in JavaScript (nodejs).

We’d need libs for both those at least to start for dweb settings and web apps.

2 Likes

I’ve implemented all of it in colonylib :grinning_face: It creates a layer of abstraction for a ā€˜pod’ which is a pointer to a scratchpad and an RDF vocabulary for collecting multiple scratchpads into a pod (for pods bigger than 4MB), referencing other pods, and a depth attribute for each pod to enable search ordering. Each pod is a named graph using the pointer address as the URI.

I use the rust oxigraph library for the RDF database and SPARQL queries. It seemed to be the most feature rich RDF library in rust.

For the vocabulary, I’ve just been using schema.org, seems to be the most widely used one these days.

We can setup a call if you would like me to walk through what I’ve got. It would be an honor to help get this integrated into dweb

4 Likes

Thanks. I work best with text but can start by looking at the library initially.

I’m not sure it makes sense to use whole Colony structure - all or nothing! Avoiding indirection might be important for example, or just cherry picking APIs to read and write the format of different types and collections. Solid was very good for that, and I hoped that using RDF would lead to apps being able to read and write each other’s data, giving users real freedom from lock-in, and the ability to process data created by any app because it’s all RDF with semantics built in.

I’m not sure Schema.org is the best for that (having been built for Google’s vision of the web), but am out of touch with what Tim has been doing with his start up and the teams of researchers who were active then They’ve been very busy but I’ve not kept in touch.

I also built an app to track and query lists of RDF servers, so have quite a bit of data about RDF resources and vocabularies squirreled away.

Based on a few years ago, my first choice would be to start with Solid, and then define application/use cases that are stored using that. Doing that makes it easy to port Solid apps, which I demonstrated back in 2018… eons ago in this business, but I wouldn’t be surprised if it’s still the best supported approach. Of course, Solid builds on SPARQL. I hope RDF Star and SPARQL Star have come along too though as RDF did have some holes in it’s ability to model real world data that they were created to address.

I’m not ready to start looking at this yet, but let’s open a topic or a discussion (pref on Codeberg rather than GitHub where I’m winding down at last. Early days, but I’ve been very impressed with Codeberg so far.)

Are you wedded to GH or willing to try Codeberg out? It’s free but I actually like to pay to be a member and support them (and get a say). It feels much better, although they don’t seem in a hurry to take my money :rofl:

I no longer contribute to the dev forum here because Autonomi have said they intend to shut it down, and Codeberg seems a good independent option.

1 Like

So, walk us through how someone would generate a map and/or lookup a name using this format? I’m thinking we need to resolve from a name to where something like this exists is a precursor?

I’ve not used SPARQL before, but I can see how it could be used to store metadata from your examples.

BTW, should the schema exist on Autonomi as ant:// instead of http:// too?

2 Likes

@happybeing @traktion posted some thoughts XOR Address Books and Directory: A Conceptual Proposal

3 Likes

Sounds great! DM me if you have any questions or comments.

A lot of colonylib deals with all the nuts and bolts with the intent being you could drop this into an application and get up and running quickly. The actual pod concept can be described in about a page including diagrams. As long as other implementations follow the structure, everything will be compatible. I’ll write up a first pass spec for review, should be able to get the done by next week.

I’m not tied to any vocabulary in particular, this one just seemed to be the most complete and the most widely adopted. Whatever we agree upon as a group is good by me.

I’ll mirror the colony stuff to codeberg and figure out how to open a discussion. I mostly just use GH because I’ve had an account there for many years and the IF challenge required a github repo for entry. Same reason I’m on Discord, because IF forced me to :rofl:

3 Likes