:IF: Friends - the messenger you'll never want to move away from

@riddim

I’m waiting for you to come online to send you a message

3 Likes

strange … it’s only nadir with which it connects now …

… I need to check if I have an issue with concurrency when having multiple friends in the friend list …

3 Likes

I’m back online. I’ve tried adding you be searching for ‘southside’ and ‘Southside’ with no success. I’m ‘jaded_old_storage_guy’.

I have sent a friend request

ok, we might be in business. There was one there from Tom as well and I had to accept that one first before yours would show.

1 Like

If my suspicion is right that we have a concurrency issue you may have more success if you remove the other friends (since you can always send new request there shouldn’t be any harm done and the Scratchpads are created now anyway and will be reused on the next friendship re-establishment

1 Like

Yeah - cos this isn’t working


removing both riddims for now then…

and removed then re-added jaded_old_storage_guy

4 Likes

Just for the record - connection worked when they removed their other friends - so something is borked when having multiple friends in your list.. I will investigate what’s going on and where the issue is located when I have the time for this

4 Likes

Wen @riddim streaks? Like snapstreaks!

3 Likes

I will consider making this a plugin :sweat_smile:

I think it’s a good feature!

3 Likes

Would it be possible to create a new ETH wallet upon launching friends and telling the user something like:

Send 1 ANT and 0.005 ETH to your friends wallet in order to send messages and use all features of the app. This amount is enough for XYZ messages.

Little streamlining the process - exporting private keys and copy pasting them somewhere online is not great imho, I think it would be better if each app can handle this in the background.

And with the new paymaster stuff, we could just send 1 ANT without ETH, is that correct?

2 Likes

You only need to pay to setup your friends account.

Messages are sent p2p from your PC to the other PC. Messages are not stored on autonomi. Your friend needs to be online to message them

4 Likes

Hmhmm - yes we could generate a wallet and tell the user or we could consider creating invites (a private key loaded with a few cent in eth and ant) and sending that to someone who doesn’t know/want to deal with the whole erc20 stuff.

But both things would need dweb to support specifying a payment wallet - so I think not possible in this moment of time. Nonetheless a path worth investigating!

And as @neo said since the payments are only setup fees for the account/connections to friends a small amount would be enough to make the app run forever.

Once that is set up and it’s possible to use it via dweb - yes

4 Likes

@Southside saw your message on friends - the issue is most certainly that neither does he nor do you have configured a public name

it’s a UX problem. I pushed this release out and didn’t add the public ID field to the ‘create account’ page because I wanted to change the account creation flow next.

without explicitly adding a Puclic Identifier it’s not possible to search someone by his name.

96ad9f5922ea0416f6ff9e05a5c4bda1bddfc5f906338555efda7d91421ec29b8d9da4d8425a956d9d91cca848273560 <<< that’s your profile ID with which you can be added even without a public ID - maybe I should make it accessible for people not having a public identifier :thinking:


… ok wanted to go for better documentation/user flow but I guess the multi-friend-bug preventing connections is more annoying for now … and seems like people manage to creat accounts and to send friendship request with the docs that exist :slight_smile:


notes for me:

  • display of friendships request status (accepted/not yet accepted)
  • make profile ID accessible
  • informing user if account creation fails due to insufficient funds
7 Likes

oh lord somehow I ended up taking a detour xD

since for testing the multi user bug I decided to switch over to the alpha network and create multiple testing accounts (instead of deleting existing friends on mainnet/creating multiple additional accounts there) I thought I could implement and test the new account creation flow in this process … so creating an account now has a new face :smiley:

I’ll upload this (maybe with cuts to reduce the waiting time on some operations) to GitHub / codeberg too - that’s the complete flow for user creation including global name registration and friendship request → first message exchange (in realtime)

so now we still have the multi user bug but the account setup wizard is finished xD

ps: to update to the latest version of friends just close the window - go to the terminal and fire a new dweb open friends

7 Likes

I think this is the first app I’d be using from this network. It would be a nice way to build the rest of the network.

2 Likes

Revisiting the plan =D I’ll have some focus on documentation now to make sure users get as much guidance as possible (thank you for your detailed feedback @Tom1 )

Until 17th

  • friendship requests (:tada: with public profile preview)

  • simple global names for easier discovery (concept is running - needs some bug fixing and tidying.. )

  • account setup only on request (so when opening friends the first time it will not automatically create the account - you just may have clicked a link and didn’t even want to use friends… - but ask you if you want to create an account.)

  • guided account creation. Asking the user for account name, Avatar, public name etc while the account is being set up in the background.

  • Documentation about the Features and how to use Friends (a simple video that shows the setup process +updating the github README)

  • Developer-Documentation (how to run friends locally in dev mode and do live-debugging with main net-connection → might be helpful for others wanting to develop dweb apps too)

  • bug preventing connections when having too many friends (it’s not lethal but a big usability issue…)

Beyond 17th:

  • simplifying and documenting external stylesheets for easier theming of friends

  • implementing plugins (loaded from autonomi) as JavaScript Webcomponents.

  • optionally persisting chat history with friends via scratchpads

  • releasing a python version of smokesigns (name already reserved)

  • and creating a simple demo on how to use it to connect (from everywhere in the world) via WebRTC to e.g. a locally running Raspberry Pi with a camera and fetching a picture it takes with a pi-camera
    python terminal chat (friends compatible - only selecting friends and chatting with them as text only; no adding/removing of friends etc)

  • offline DMs to friends (friend specific offline Scratchpad - message encrypted via public key of a asymmetric public key read from friends profile)

  • more extensive profile pages

  • the whole Friends app as JS WebComponent

  • Friends bundled with dweb via Tauri as standalone app

  • multi session / multi user chats

6 Likes

updated the docs to include all new highlights, enhanced install instructions (thanks again @Tom1 ) and some Graphical descriptions of how global name resolution and friendship requests work with friends - I recommend viewing on codeberg:

because that renders the demo video properly :slight_smile:

ps: edited the initial message to be the detailed description with screenshots of the graphics etc. :slight_smile:

4 Likes

ooooookay - slowly but surely we’re approaching the deployment deadline.

I’ve added a specific Developer section to the Friends Readme explaining how to run friends locally in development mode, doing code changes while it interacts with the live network and how I optimized the App for Autonomi deployment (as static client-side app with only 5 (!) files in the deployed bundle … well .. and one png … but since that is deduplicated that doesn’t count :wink: )

These methods/optimizations will hopefully help other devs who want to create WebApps running on Autonomi.


After several busy weeks, lets now reflect on the most significant milestones we’ve achieved:

  • we’ve changed the concept to use WebRTC as communication (so people can use regular browser technology without the need of anything else except the dweb WebApp platform to run friends)

  • we’ve implemented peer discovery purely through autonomi Scratchpads without any central servers that could be taken down/blocked mediating anything :exploding_head:

  • we’ve made the WebRTC connection through Scratchpads a reusable library that can be used by other apps wanting to do status-signaling/live-data-exchange too

  • we’ve shown that and how external themes can be used to modify app appearance in dweb WebApps

  • we’ve implemented (and documented the first name resolution scheme :tada: within autonomi that is easy to understand and easy to transfer to other apps / could as well be used for a global name system (comparable to the current DNS on clearnet)

  • we’ve implemented (and documented a friendship request scheme :tada: which can easily be used by other apps too or adapted for e.g. an order inbox queue in a Autonomi Webshop software (maybe better using graphEntries there instead of Scratchpads for different customers not overwriting each others orders).

There is no doubt that there’s still enough left to be done :smiley: but I think we’ve seen here a few pretty powerful concepts and innovations on how to create unstoppable WebApps on Autonomi! I’m glad to be part of this and it’s fantastic to see what is emerging here!

12 Likes

Well done @riddim and thanks for all your work, looking forward to tomorrow :+1:t2:

2 Likes