:IF: Colony - Search Autonomi Simply

I wanted to share my project here officially, the ORIGINAL place for all things Safe Network, err, Autonomi. Colony is a cross platform (Linux, Windows, and Mac) desktop application written completely in Rust, using the Slint UI GUI framework. The main goal of this project is to make Autonomi successful by delivering to this network what made the WWW successful: a search bar. An interface so intuitive and easy to use, anyone can use it. The difference here is that search is done locally on the client so no middleman looking over your shoulder and no corporations or governments manipulating the underlying data.

For users only downloading files, you don’t need to have ANT/ETH tokens. All you need to do is download the app on any desktop computer and you’re up and running. Simple.

Want to run Colony on a different computer? Or maybe you lost access to the machine you originally installed Colony on? No problem! Input your 12 word seed phrase to restore all of your data directly from Autonomi.

More than an app, Colony is working with other IF projects like Stashbag and SOMA to leverage the same metadata and search framework. The end goal is to create a simple standard to enable seamless interoperability of your data between Autonomi applications. No lock-in, no problems.

I’ll be giving a short pitch on the discord stage tomorrow, but the longer form video where I dig into all the details can be found here: Introducing Colony

As for status, the app skeleton is in place. Honestly its about a third of the way done at this point, with the installation, configuration, key generation, and key management logic in place. Here’s the obligatory screenshot:

Looking forward to hearing everyone’s thoughts and seeing all the other projects on IF. After all these years we’ve finally got the network, let’s go use it!

18 Likes

Love that you are collaborating with some other projects to create open standards. More of this!!! No lock-in is chef’s kiss. Best of luck!

7 Likes

Thanks! Good luck to you as well! I agree, community standards are going to be a major component to making Autonomi successful. After Colony, my goal is to leverage the learnings from the project to propose a first pass draft of a community metadata standard for Autonomi. Basically this whole exercise, on top of making a useful app, is to build a framework, or even a library, that any other project can use on Autonomi to automatically plug in to all the existing data. In other words, interoperability won’t be forced, it will happen naturally because it is the path of least resistance.

4 Likes

I think you just spoke to everyone here. This is the way. You have my support!

4 Likes

Posting today’s update in case it doesn’t show up in the IF page:

Status

  • Ending the mad dash marketing push week and starting to dig back into the code
  • Performing some analysis of the demo app and determining exactly what needs to be completed for MVP.
  • Created a a first pass functional requrements document and posted on github here: Requrements.md. These are mostly thoughts for myself, so may not make total sense, but wanted to share it anyway!

Shoutout to the community

If anyone has other critical features they think I should add to MVP, post a comment to the Colony topic on the Autonomi Forum or reach out to me on Discord in the general chat.

Thank you all who have voted for Colony so far! Let’s make Autonomi great!!

9 Likes

Today’s update:

Status

Its been a busy week, but I have some good news to share! Lets dig in:

New developer onboard!

Joining the Colony team is Maxx, a 10 year software engineer with an extensive JavaScript background. While my software development skills are akin to a toddler making macaroni art, Maxx is over here painting the Mona Lisa. His skills will be invaluable to making Colony not only functional, but a polished well tuned application

New development stack!

With 2 of us doing the work, we can divide and conquer. I spent much of the last month fighting Slint UI, drudging through type conversion hell. While it is OK, the JavaScript GUI world is leaps and bounds ahead. Based on a forum suggestion from loziniak, we dug into Tauri 2 which allows Maxx to focus on the frontend (which will be written using Svelte) and me to work solely on the Autonomi and crypto interactions in rust. Tauri 2 is fully cross platform, including for mobile, so one stack to rule them all. This is definitely the way to go.

But wait, isn’t this change going to slow things down? That’s what we’ve been working on this week!

Frontend Progress

Maxx basically rewrote the entire GUI demo that I had built in an afternoon and connected a couple buttons to some of my existing rust functions. So we’re up and running! No check-ins yet (still very messy), but we’re getting there.

Backend Progress

As for me, I’ve split out the core rust functions that I built in my demo, cleaned them up, and created a new repo on github called ColonyLib. As I’ve said in my pitches, I want to build up an Autonomi metadata standard. Colony is really just the vehicle to get us there. Colony will leverage ColonyLib to handle the master key creation, key derivation, pod creation, updates, and potentially RDF queries. This means any other Autonomi application can grab ColonyLib and know that whatever they write using their frontend application with be directly interoperable with Colony and its content discovery system.

Pods are being created!

Just this evening, I have successfully implemented a pointer/scratchpad combination in ColonyLib that I am calling a pod. The scratchpad is publicly readable (which is working!). The pointer points to the scratchpad and the counter field is updated for each update. The idea here is that when a user wants to refresh their pod cache (i.e. download all updates to pods) they just need to download the pointer, check if the count value is higher than their local cached copy, and then download the scratchpad vs downloading the scratchpad each time when often times, many of these will not change. The pointer can also be used to ‘hide’ data or move the pointer to something else. The concept here was for SOMA so that they could provide health information and when a user was done sharing that data with the provider, they could either point the pointer to itself or point it to some other data. Obviously, the provider could be caching that information, but I don’t think we can solve that in an ‘everything done client side’ world. Another problem for another day!

Thank you for your support!

Things are moving along nicely and we’re getting ready for the next phase. But we can’t do it without all of you! Thank you for all your support keeping Colony in the running. I am deeply honored. It makes the late nights and little sleep all worth it.

With your help, we can get this project finished and enable the world to Search Autonomi Simply!

7 Likes