:IF: Colony - Search Autonomi Simply

can I set gas limits for the uploads? will there be a queue and retry to upload when gas costs fall below the set threshold? - that would be pretty awesome!

8 Likes

that’s a great idea, I hadn’t thought of that! I’ll put that on the list of enhancements.

7 Likes

Last day for backing update!:

Frontend update:

Maxx is still busiy hacking away at the frontend. He has the persistent store implemented so that we can keep track of application state. Its starting to look like a real app! Here is some eye candy walking through initialization, uploading files, adding those files to pods, and uploading the pods to the network:
colony_walkthrough

Note that the Upload All button for writing the pod scratchpads to the network isn’t that fast, but its no fun staring at a spinning wheel for a minute :smile:

Backend update:

Maxx has come up with some additional functions I’m going to add to the backend API to make it easier to build applications with colonylib: listing all created pods, listing files in a pod, and the ability to upload a single pod instead of all updates at once. The functionality for all of these already exists, just need to expose them in the public API.

REST API!!

I started working on a rust program I’m calling colony-daemon. This is a lightweight server that exposes the colonylib API as REST endpoints. While the Colony GUI is the frontend for end users, the colony-daemon is envisioned as the frontend for non-rust colonylib application developers. It will handle:

  • disk operations for local search cache and pod data
  • key management for generating and storing all scratchpad/pointer keys for pods
  • on disk RDF database and SPARQL query system

This is focused on metadata operations, it isn’t meant as a general purpose do-all Autonomi REST frontend. Couple this with @happybeing 's dweb to get the full stack!

That said, it isn’t quite done, I’m still fighting some errors. I’ll post an announcement when its ready for general use. For now, you can see the work in progress here!

13 Likes

Colony v1.0.0 RELEASED!

After months of work, the first release of Colony is here!

:sparkles: Features

  • :locked_with_key: Secure Key Management - BIP39 seed phrase generation and secure key storage
  • :file_folder: File Upload/Download - Upload and download files easily
  • :magnifying_glass_tilted_left: Metadata Search - Client-side search using simple text search
  • :file_folder: Pod Management - Create and manage metadata for organizing and sharing content
  • :link: Decentralized Sharing - Share files and metadata without a central database
  • :desktop_computer: Cross-Platform - Native applications for Linux, Windows, and macOS*
  • :globe_with_meridians: Dweb Built-in - Dweb binary built-in for automatically opening Autonomi web apps
  • :laptop: Local First - For download only users, no crypto is required, install and go

:package: Installation

Precompiled binaries are available for various flavors of Linux as well as Windows on the github releases page here. For our Mac friends we are unable to build binaries that will run on your computer due to Apple’s ridicul… wonderful ā€œsafetyā€ features. The application does work well on a Mac, you just need to compile the program yourself. See the README for build instructions. One day I may shell out the $99 for the privilege of having some Apple certificates. Maybe.

:rocket: Getting Started

All of the information needed to get setup can be found in the GIF annotated User Manual in the repo’s README. Check it out!

:globe_with_meridians: Dweb baked in

I added the latest dweb binaries as a side car in the Colony app. It automatically starts up when you login to the app. When you click on the download icon for a web app, it calls dweb open for you and pulls up the page in your web browser. Simple. Just make sure you don’t have dweb already running in the background.

Your active wallet is used to initialize dweb. Note that if you switch active wallets, dweb will restart using that new wallet. So if you have web apps open when you switch wallets, that could be a problem, just an FYI.

:tada: But wait, there’s more!

  • :credit_card: Wallet Management - Manage multiple wallets for upload payments
  • :gear: Configuration - download directory, change password, themes
  • :bar_chart: Status Tracking - track your upload and download progress

:wrench: What’s left?

We had to stop work to get this stable release out so the last week we’ve been crushing known bugs and getting to a stable point. The major enhancments we’re still working on:

  • :inbox_tray: Download Streaming - track progress and estimate remaining time
  • :magnifying_glass_tilted_left: Search Interface - show more information per searched item with thumbnail support
  • :information_source: Object Info - show more information about individual objects before downloading
  • :label: Metadata Helpers - leverage ia_downloader mechanism for metadata enhancement
  • :money_bag: Wallet Balance - simple to do, just didn’t get to it yet
  • :warning: Error Handling - better Autonomi error handling

:bullseye: We made it!

It has been a long journey with lots of sleepless nights and non-stop work, but we got this thing out by the deadline. In addition, I submit to the IF judges a whole suite of cross platform tools that lay the foundation and enhances the capabilities of the Colony GUI app:

  • :books: colonylib - core functionality crate that others are using successfully such as Mutant for content discovery
  • :wrench: colonyd - a daemon exposing the colonylib API as REST endpoints
  • :laptop: colony - a parallel Colony CLI implementation that interacts with colonyd, for advanced users and scripting
  • :inbox_tray: ia_downloader - Internet Archive bulk downloader and metadata composition tool
  • :outbox_tray: colony_uploader - bulk data Autonomi uploader leveraging the colonyd REST API, with metrics tracking

There is more to do, but I’m very proud of what we’ve accomplished so far. So give it a try, let us know what works, what doesn’t, and what could be better. Thank you everyone for your support so far, for today, finally, we can Search Autonomi Simply.

19 Likes

Unfortunately, I am experiencing this error when trying to install the .deb file on my Ubuntu VM:

error processing archive colony-app_1.0.0_amd64.deb (–install):
package architecture (amd64) does not match system (arm64)
Errors were encountered while processing:
colony-app_1.0.0_amd64.deb

Is there anything I can do about this?

Well done @zettawatt looking forward to trying this out :clap:t2:

5 Likes

Sorry about that, I had a horrible time trying to cross compile ARM64 binaries. I gave up. In the README there are instructions for how to build from source.

Out of curiousity, what kind of system are you running?

1 Like

its Ubuntu VM via Parallels for Mac. But no worries, I just found out that Parallels can do Windows as well and I’m already testing on Windows VM! :+1:

How should uploading work btw? I tried a few times to upload an MP4 video, I got a notification that upload started but my wallet was not deducted of any ANT or ETH and I don’t see any progress.

Edit: I just found the status tab:

2 Likes

Interesting. I haven’t seen any issues with uploads yet, unless it was a large file (hundreds of MB or more), then the chunk errors that the Autonomi libs fire off caused it to report a failure like that (better error handling is on my list). Small files like that I haven’t had any issues yet. Did you download the genesis pod and try to download some stuff yet?

Maybe you can get help from David or the team with that, from previous experiences I think they might have knowledge about arm64 compile.

1 Like

I haven’t downloaded anything yet, now I am trying to download both two items I found on the network when clicking Browse:


One of them (what is pod) is mine because I have no idea yet what is Pod. After 7 minutes I see no progress, not sure if something is happening in the background.

So basically, before uploading something, I should download the User Configuration Pod first?

1 Like

bmf-wallet-pulp-fiction-wallet

nice one @zettawatt this is bad ass :slight_smile:
downloaded the app image click click boom worked first time :slight_smile:

9 Likes

Great work :slight_smile:

I’ve installed on windows, and successfully set it up with a wallet and sent some tokens to it (edit: see post below - this didn’t work well)

I tried to add the genesis pod & syncing, but either it doesn’t synchronise, or something doesn’t work as I can’t search for anything when it’s apparently stopped synchronising.

It’s good to see this working for others even if it’s not working for me (with a terrible internet connection, which may be part of the issue).

What I love is that these pioneering user experiences will only improve in time as new iterations are produced, and others build on the work done by the early projects. Exciting times for this network!

Maybe for ease of use the genesis pod could come pre-installed & ready to go (but user removable) so that there’s 1 fewer steps between installing and using the app?

3 Likes

:police_car_light: IMPORTANT INFO (edit: resolved) :police_car_light:

Edit: clarified, and the problem is resolved - see post from Zettawatt below. Just don’t use the default private key given in the setup process if there is one when you install.

I just messaged Zettawatt about a serious issue I think I’ve found.

I didn’t want to write hear until hearing back from him, but I’ve since replicated the issue on another computer, and it’s serious enough for me to have to write something ahead of hearing back.

:police_car_light: !!! UNTIL THIS IS CLARIFIED: NOBODY DOWNLOAD THIS!!! (Edit: Now clarified / resolved) :police_car_light:

Unfortunately I need to go out for a few hours, but needed to say something before leaving to warn people to avoid this until the issue is fixed.

Hopefully @zettawatt will clarify the situation soon and get a fix out so people can safely use colony.

I’ll happily delete this warning if I’ve just done something stupid, but it seems like a dangerous issue so I had to mention it after I confirmed it on a 2nd machine.

7 Likes

and what is that issue you are experiencing?

DO NOT USE THE DEFAULT WALLET KEY FROM THE INSTALL! IF YOU PUT TOKENS IN THAT WALLET YOU WILL LOSE THEM! ALWAYS REPLACE WITH A METAMASK OR OTHER WALLET KEY!

The default used during the initialization process is hard coded to the local Autonomi network test key. I used this during testing on the local test nets and I should have replaced it with a randomly generated one at release. I will fix this tonight and make a new release.

If you always replace that default key with a key from your MeteMask or other wallet, there are no problems, but the default key is a known bad key, bots will be watching it!

4 Likes

The search mechanism is instant because it is all local to your computer. So you created a pod called ā€˜what is pod’ which is good. Next step you need to add a pod reference to the ā€˜genesis pod’. Then when you hit ā€˜Sync’ it will go fetch that pod and grab all the metadata. To get setup, follow the steps in the User Manual

There is no central server or storage location on Autonomi (by design there really can’t be) so you by default there is nothing to find. A ā€˜pod’ is just a container for metadata. So when you upload files, you add metadata about that file into your pod. Then you share your pod address with others. Then when they share their pods, people will find your stuff too. It basically builds a graph of the network through a friend-of-a-friend-of-a-friend topology.

Until the network gets going, the genesis pod is one that I created with all the initial stuff I could find on the network. As people share their pods, I’ll add those references to the genesis pod as well. The more linkages and references people have to each other, the more entangled and robust the graph becomes.

3 Likes

If you launch the app from the PowerShell, it should dump a bunch of logs to the terminal. If you can send me the log when you do a ā€˜Sync’ I can walk through and see where it got hung up. I’ve seen it take a while on that initial sync, depending on the quality of your network connection.

This is a good idea. I’ve thought about doing this, and it would work great for first time users, but for someone that has stuff on the network with that seed phrase and doing that first ā€˜Sync’ operation, you’d get a collision. The sync should blow away that local edit, which is probably what they want, but then you get a ā€˜oh I made a bunch of edits locally and now they’re all gone when I did the first sync’. It’s a tricky situation. An enhancment I have scoped out, but haven’t implemented, is that if you have added pods locally (pointers and scratchpads) that don’t exist on the network, but those objects use the same key as something found on the network during a sync, I want Colony to put the conflicting data into a different newly generated key to prevent a conflict. The problem is there are a lot of other corner cases that fall out of this and I haven’t had a chance to walk through all the scenarios yet. Simply put, syncing multiple clients is a nightmare :laughing:

2 Likes

Great, now I get it and I can see bunch of content in Search!! Wow.. Just the first time UX for me - I had no idea I have to put reference and sync, etc. This should be somehow better explained when the app is launched for the first time imho. Now it seems doing something but how much time should I expect to upload 36MB file? I do have a fast fibre link, at least 1gbps upload and this looks like a lot, is it normal?

2 Likes

Great! Glad its working!

Agreed, the whole pod concept is kind of hard to visualize at first. I had a hard time figuring out how best to show this in the GUI and explain it in the user manual. I’m still thinking on how best to present this.

It shouldn’t take that long for a file of that size. under the hood its calling the standard Autonomi API data_put_public, I’m not doing any magic here. If this fails or gives up, you can launch the app from a terminal and see what the logs are saying during the upload. Maybe you’re getting errors I hadn’t encountered on my side. Whatever you can send would be greatly appreciated :slight_smile: