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!
thatās a great idea, I hadnāt thought of that! Iāll put that on the list of enhancements.
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:
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
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!
Colony v1.0.0 RELEASED!
After months of work, the first release of Colony is here!
Features
Secure Key Management - BIP39 seed phrase generation and secure key storage
File Upload/Download - Upload and download files easily
Metadata Search - Client-side search using simple text search
Pod Management - Create and manage metadata for organizing and sharing content
Decentralized Sharing - Share files and metadata without a central database
Cross-Platform - Native applications for Linux, Windows, and macOS*
Dweb Built-in - Dweb binary built-in for automatically opening Autonomi web apps
Local First - For download only users, no crypto is required, install and go
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.
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!
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.
But wait, thereās more!
Wallet Management - Manage multiple wallets for upload payments
Configuration - download directory, change password, themes
Status Tracking - track your upload and download progress
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:
Download Streaming - track progress and estimate remaining time
Search Interface - show more information per searched item with thumbnail support
Object Info - show more information about individual objects before downloading
Metadata Helpers - leverage
ia_downloader
mechanism for metadata enhancementWallet Balance - simple to do, just didnāt get to it yet
Error Handling - better Autonomi error handling
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:
colonylib - core functionality crate that others are using successfully such as Mutant for content discovery
colonyd - a daemon exposing the colonylib API as REST endpoints
colony - a parallel Colony CLI implementation that interacts with colonyd, for advanced users and scripting
ia_downloader - Internet Archive bulk downloader and metadata composition tool
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.
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
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?
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!
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:
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.
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?
Great work
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?
IMPORTANT INFO (edit: resolved)
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.
!!! UNTIL THIS IS CLARIFIED: NOBODY DOWNLOAD THIS!!! (Edit: Now clarified / resolved)
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.
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!
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.
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
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?
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