Hi, I'm Anders and I live in the northern part of Denmark.
%1WF6tVUtGov+/HpbtongvH7Rjqfb0vCBsl6dCDi1RxQ=.sha256
%hON03Sx1Z2M2ToYhIDALr4m7GbAraNnuTi9NQdrnDUI=.sha256
%97ydMRbOvjJXbPSqtik9nzxpUDVVsaq2CeeSwmfgW+Y=.sha256
%wAWOCo9LgcP1BWTNrd0zRGm9rvAePL9+HKGq3rs1GXw=.sha256
%Tc+A8GLhZiuoZCDus0xTf0/0CpVdaIr3VTY8dQqpQZI=.sha256
%SfJ4SN/OmlGiIz8TALVh/d+a5dMKSQ15i1EMqchNBHI=.sha256
%LSNGAZaQaOyClGjRLC206LQ6GlTByw41U/kE/smwAX4=.sha256
%6tbMydbpKy3YrYeWIlZDEBxCdgoaVQ5Jfkid1lRj/bA=.sha256
%N3ZxdqdzQCLn773toudRbR5qdibKFBRoqGCwvlgVr94=.sha256
%WeSmIGc8QyeOvhfm3VVq3chFoL9o4LPiVEHXNiNq1qg=.sha256
%PZhxGrK4uPZzKYcBOoX7xetr2TXvNEb2OvZ646ng1qk=.sha256
%YNA9cJhIXKMDpXYArU1JyM4L19l94e4ZZ2eH7Ir1GxI=.sha256
%bMYC966xWTKcagqz37wQJsomz4nB8KELEUFGzo8BMMw=.sha256
@Aljoscha good input. Thanks
So do I have to wrap these in an bipf buffer (of tatically known length, nonetheless)
Yes. One could have just directly concatenated the bytes of the values, it would save a few bytes, but since we would like to use bipf for content anyway I wanted to keep this uniform.
Or do I still have to check that they contain the only valid - i.e., completely pointless - byte pattern?
Yes. I would like that the values makes sense on their own. This format is not designed to be as minimal as possible. #tinyssb is a good example of pursuing that.
sequence: number for this message in the feed
Which data type is this? How is it encoded? "number" is not a bipf type.
Thanks that is good input, I have clarified that now.
timestamp: integer representing the UNIX epoch timestamp of message creation
This is a bipf int (32 bit) I assume?
That was a bug in the spec. Its encoding as a double. Fixed now. Thanks
Please specify what an implementation must do with unknown tags.
Good input.
Any change that allows other starting bytes would be a breaking change, i.e., a whole new format
Or a minor update to support a new hash
The content is a free form field. When unencrypted, it SHOULD be a bipf-encoded object.
Please specify what implementation must do when it is not a bipf-encoded object.
Good input.
%aZ8DYKj3t93y5Ai0Guw2jNxy/67HSLVQ9EH+Ge7HXrQ=.sha256
%voBbCGifUkKz2dwpD7DBDtQB24cNT5JnmuBaNBH0lrY=.sha256
@Aljoscha thanks for taking a look :)
Just because it hasn't been mentioned yet in this thread: what happens if I start appending to another person's log
I didn't mention that explicitly, but from the code linked you can see that all other things are checked except the signature of the other messages.
You can still easily (and quickly, compared to signature validation) verify that all messages have the same author
Do you mean checking the author field? Or that the signature was created by the said author without checking that the signature is actually correct?
Btw. this optimization is not documented in the spec. There is also the posibility to randomly selecting 1 message in each round and verifying that in full. Then verifying the messages after that one using the same method until you reach the end. It's probably best that each client doesn't follow the same rules. In any case these are just optimizations, you can still verify each message in full (which is what the benchmark does btw.).
Status: In review
By whom? For how long? Under which criteria? Don't tease the poor reader like that.
Like a good stew until it's finished :P Currently I don't expect this to change much so the spec will probably be finalized once we merge that DB2 PR.
The verification section is only local to each message. It should at the very least link to the specification for log verification (valid hash chain, single-author, etc). Which exists, right? =P
It links to bamboo so? :-)
%XeStFwUGR3n32QyhlE8bj9XyvavbUCpNJHaENgkXx+o=.sha256
An update on this.
The feed format now has an offical name: buttwoo :)
For bulk validation I decided to go with the solution Dominic mentioned by just validating the signature of the last message.
It supports subfeeds
There is a PR adding support for it to DB2 and EBT. Both are quite far and just need some box2 work before they can be merged.
I optimized BFE and URI2 recently and that gave a good boost.
Validate + add 15k messages to database
buttwoo large: 2.3s
buttwoo small: 2.15s
classic large: 3.5s
classic small: 2.1s
%7xP9GVSwcgVBKfKxD/h45TpM1do51KAL0dmZNtgp1yI=.sha256
%Bx+m+fhlVBP0IRfq17ceE1cOQGEjis+UYwwp20FMOYQ=.sha256
%ePZcJiKqS9S2sB1c2KfDVizv0HFwiP0NQzS3AtYvH0Y=.sha256
%oo9ARJDdpJwHlPMSVSp+5XIhzRXEjDrNVs5obZTgj5k=.sha256
%XmByq4fETKobUPVaITjcsFv6z18LhYpjgb7FBxrvWDM=.sha256
%qa2jhzrilppqfyLMBjUgBJ9L8/WLUeyL87lw8FQThUM=.sha256
%CrlBWpqirZ4qL690V7b+AqEEGJgi68Rwo0Y8/v2wxkc=.sha256
%JN2eBF4hCTSICg7dSJPIo2uAq2tQg5fFGUdl5srhoyE=.sha256
%1JGRIuGzdrtoqDQ6TcTmKDyO2P50stJlbfWTiX6siPs=.sha256
nice! I've been playing mtg over just normal webcam for a few years. Gonna try it this weekend. Thanks for the recommend @punkmonk.
%D4eNAzTkBUWdAEF7S/Ca6XIROIZrpORnzIblaH+8hGM=.sha256
%rW61Kl54bXpj3dIYXo4Ij/r/MxH82jDTJlVVe/lpCsM=.sha256
%590kDU73SY/Y5LP4vjXAAvvoKl806hnzYkSA4GohYl0=.sha256
%uVhrf3jXcC1kW96qSIAmDXLZOrYykGqS+RL5JKR6gmY=.sha256
%LjiDKdXHk/2QRktP3zSmXwPqj1Gvu9fFzY8YGVEXUXI=.sha256
%2UiedGjbay79IrS5X6hY0Cu9XXuSvQVqZWK6UlCvTK4=.sha256
%xYyU1ROhzzO9cTKnZev0ww4VWXzjTOfDh7tPan0W6nY=.sha256
%+Me2V9PJlkX2qi7nut5ytgAuLkh38VKFyD1vjZ6G/1s=.sha256
An update on this is in order :)
After a bit of back and forth we settled on a name for a new concept in ssb-crut. Using nextStepData
you can now pass in data to the transformation (what you do with each message of a tangle) that will not be part of the final state. We use this for adding types that makes it easier to reason about the different steps. The whole specification for fusion identity is now roughly 100 lines of code. This takes care of everything from schema validation to checking the logic of who is a member.
I also merged in the latest spec change so that things should be a lot clearer. We decided to focus on the basics for v1, so attestation and redirection is for future versions to spec. That being said, there is code for the current draft of those features in the JS module as well.
The last remaining bit is to come up with a proper way to encrypt things. That one is waiting for a larger db2 refactor to fall into place as part of the private groups work.
%TxGhISwJftMHJFLNbOqsVkLzc6Eh/8b/rjFo73f41yA=.sha256
%Cp6ht3T1D/ZKjMoUDUCBBQ/BIvqwVMcJxZ+Z2XpQ464=.sha256
%+kq5QTz947Afn9HaVPZQDT8Yg530ovWeA+4SELnpfOA=.sha256
%bazf+cLrC1Wbyk6a/YeMBNx6eMy6MOqeRiiCTewcPdQ=.sha256
%adyuZsZsdo+LpEl4Wox6GVKYqICOIyeqlv38TyUYE+0=.sha256
%OpcTD8p+GBAx/qPgsJIxWgbB2IxhAweFgchiMALnWmM=.sha256
%Y8hGXY05tAZPv06SgmKKdhFoH9ZP4V7D/i/pseuB5KA=.sha256
%eaH4P36qGllpoNzZ2qS4jlwZQ22/TbLcMmWppz3DfJo=.sha256
%OGHXv4C3DUG68c3yhzQpSH/t4ahjGiHTPNz9lbvY7VM=.sha256
%0i5ZkVYo11JJH8DLxSt+yKE7FJUV56iIrGvSbNkD9xE=.sha256
%QkZPDvY8Dp+rY39PIh3Ogp9Z/bCWO9TpWhIaoTHh9QQ=.sha256
%VmqQRbrZWNnQd8PUZY257UYyETwkoa79+HnDzosP0IU=.sha256
%QuxRMRkHh6fAdcV+AGtwJ/wPqxnTPduIazD3bdv4Iws=.sha256
%yxY7vW1xPUMG0aJRSPqU03qm7jW/R5s7wf1a8ti2MJg=.sha256
%hjAGA5/z8QGnXSdtFcev9VTQD0hqzhfuPZlREjJP8Bc=.sha256
%WIhL9Zg+ivfLuhkKD+EkEwpqAXHzM2oDp01LKZhvL9E=.sha256
%xf77j1wtKTQ3thtb3HDMxk5gzbr6QTR9RpqzdSbEuUw=.sha256
%+jWPKkGD2ikD7U0Fr+pV5GjDkuRd90fNdTPyZK+i5pA=.sha256
%bSiw8JQsK9m5/jqNtUFDgMCUBsfnjmyBKvmYwOGQWjQ=.sha256
%3iVPHdruSlYNEq2NrF4YTfpTLcv1mfMggmXUND+wxdc=.sha256
%dPKzsp5TzZZT+IbL24WFuw6rbNZAmuGg1vcDHUsJtjM=.sha256
%hglVrs/MNeQjizK9vxZypybQdK2wmUBW3fyjl/eUQUY=.sha256
%IcO3QHD0uFnXOra9Rm5l6THSmOnYABvWVHjcBA4zonQ=.sha256
%yGdN43BTnb/kRIKn+PuYAnXOpg5p6DGYdU9YDfli/Xo=.sha256
%0vuUDOioFBDAiKfU85GzpZJ5tR92EUkD23VN6zoYGFg=.sha256
%fRXx0dJPGR7ok9E97Q/ymowuPmExtWIsc8cRAKwykV4=.sha256
%tGKcsi2iBWwK1/blY01AMvdJq1o8bwULt0aJXnf3tf0=.sha256
%Q1v3o5zA/Bl+xGuOyvTRIfuL538GSQGbsmS/GQWSHSk=.sha256
%Yvy9l7y02N1PYyhUnxb2fVRhggVSvExTrA3RnYmKWm0=.sha256
%IZLc7HxutSy2Z74/0cInwFSQJrg3GLpd0FzhjauZPMQ=.sha256
%NXv9E5icjV+sQjTskMvwrxDgneJXaD5JCO6Q6bkzjTo=.sha256
%W+C2CicfasxC9XoSFBWh42Zb3CddqmB04jLDZ973UMU=.sha256
%d3d+2Fsx6MlWZAzN/pF75+e+mMWF0NNUHAXJKXczGfo=.sha256
%6v2N0tuK9g73gbBJvCP+FWOAvryasls32wnIeZX6Cxo=.sha256
%LvXvRS9qaSVpne6DfAOTnb3qdBtBBw1050Zk33juA5s=.sha256
%HsS6EiJwc3hf0XnQkt6cN1MN6YzyTUAN29Wgi3Sp26Y=.sha256
@gwil btw I build this module that could be interesting to you for set replication: https://github.com/arj03/ecmh-js
%SSVCqOvugIbnBOcV473zhPlrYj4K7uuX8ZlAZLIyHxc=.sha256
Append only has some nice properties. It's a lot easier to sync systems, because you only need 1 number for each feed, the latest sequence, this makes things like EBT really efficient. You could do something like a set sync instead, Aljoscha has worked on that. In any case, deleting data in a distributed system is a hard problem. If you do separate the content from the log as bamboo and buttwoo does, then you still get the nice properties of an append only system, without having to store the content potentially.
%rTV8bqq2HdvWgpbAoIPntMtKcHs5Uxl/Bh7jGTyIIB4=.sha256
%i5xQy5mdqJseY3IfHFD8Mz0Pfdjb6gerRaGDghuHMqs=.sha256
%l36I+87EvFOgcn9E6C4yooUb+evoEAFUivsjyv8azFY=.sha256
I enjoyed reading this blog post (from my rss reader :)) today, glad you posted here about it. I've had a similar experience where I have a vps and I thought, why not self-host a rss reader. So I installed miniflux on it and moved my rss subcriptions over from feedly. I'm only logged in on this laptop and this is a much better setup than before when I had it on my phone. I would check regularly if there was any news and once a day (max) is really plenty fine. The great thing about rss is that I don't check any of those sites as I know they will show up in my rss reader. I wish more news sites would support rss. In general would be nice with more slow media.
%xPi9/FDMqCkngaFedPF5FiptJQQHfekvmbMrhHfjnBU=.sha256
%JnHKeC/k3ploTxCOvFmrWsqreCbZkbp+i5ak74Pte3o=.sha256
%3TVpvaGX6VcZ55D0X0h/wuEycQGVTsnNCkBUl3DagUk=.sha256
%Nbs78fZWgLJ2wT5lV3ar2lOevWSE1YRz3KGUoYO9Lxw=.sha256
The version of ca-certificate was too old so could not torrent anymore :-)
%LArvZeLvLuo6gAG9Tb9jsOHbEw/t7eb88CGUzbfoRAo=.sha256
And now for the reboot, wish me luck 🤞
%TVgXUVLAkrnjfzmoY90e0bSCK0TQI2RUUosHYbYZHs0=.sha256
I have an old machine in the basement that I use to watch movies on. Today I had to upgrade it for the first time in 4 years. Guess why?
%wyUSbHAqgqJvrQdWWrtluyJAFh/xAS4l9J2bh+6Z8C0=.sha256
%jgUcPggbWIBS9izSOpoqsgqcG2kHo5Uml9duRJN0EhM=.sha256
%mOGWNbXLwzRxmz0a61EFzxX/vesluCwIy28OaxCpwsg=.sha256
%VQoQSGQnppkYYKllURJh+NuZf8jPlcryoyxNS3I9UCU=.sha256
%QSx30XxKLqb0rxiGK5VMnU/K6ypBZROb1k2SXEiHJM8=.sha256
%wNu6gLWfBztQjDRw9rKsNnUcmtVy4RTNsP31DuTDIVY=.sha256
%TwIk0s2tTLIdEHbAgHTUG/voqPzOv31+vrqW847DoN8=.sha256
Hi Philipp. Happy to answer any technical questions you might have related to this. Sounds like a good match :)
%1NX9dcusfzlOMGu7ZFxz47bIx48+WHVIhEutOu0qiKs=.sha256
%Sjw6wleqN5zTc1tWWIh8pOZo5hO/gEgtQ7pNxRcMGqA=.sha256
%IUlzZ+shidJ9egsFFCsHHu9XveOh4wQeMAfV8XWXdCw=.sha256
%C7EaYjZB1p70JnGPjO87X7fjyGisHFN0fr0YeeYhr8k=.sha256
%ZKhwf7cVSnHBbsmh0k7rEz9wmqfYiPOvDarX6oKHVhA=.sha256
%9+HkMVA/3+iSW0cNFi1Gqh03ZVMEz6mW4s73bO4nRnM=.sha256
%6jUJocMw8ij5nso4kOxJXM9dRjBlMFUIYln1GRQvMHQ=.sha256
%oWfhMacK6La5AocGLEusUJwJOyQTG1NzyyNTh+8MygQ=.sha256
%B8U5bMXSNWLQLsscQc1ZBwVCVA6BQ3xZsKUF0aWdWq0=.sha256
%Ql3EfwJUonkv/6du2LaJ0YlboSqs6Nr14HEbcNEk9Vw=.sha256
%bkjvXmBd9JEUFZfkdEC4E34nG2PmdcDa58aUJ8vvWxI=.sha256
%yzR2fE3Nh/wRuRPNRBqEhbpgE0s5O/rA83sViZcIFOY=.sha256
%C6lPHD4AjjCK1riZo4hXKKOV6svpqFfxAjW1ZoLWvgw=.sha256
%/3Ynq8KgQn/d6vSNcl1oWaIbXccJXoXKM15nxu5sR8w=.sha256
%ogdlfR5yatwmDavg8Nwgsxs9xjGXQcppi3GHeATkhLM=.sha256
%Hs0Y/UPhtJ3Du2h5fgwbCcvSsRyIrL0fEn7o+GMzY78=.sha256
%jDzYE9ot8BprR9Sfa9dO6UBIMgFA6+LG1CXiZIGgDRU=.sha256
%KR8f9T3qMYMbhMFiuZ2wKfyNQqp287qCnqsZ/0MjgBU=.sha256
%tZ5CAhc1GM/dfYFgd8t/9NcQiQ9OoOoevHZCSlIUszk=.sha256
%N7YY24sPJnKbIsbtg1Qthbl4tNnhDcljnVf6DL1LTBs=.sha256
%uBOeaapn0szH4KcyCRKON7R5p87njJG4lpYhoJTSOFI=.sha256
%PrC5PhKiJohBTc38MSBOQEkfOPnfO9Mp8h6B9fvcm+4=.sha256
%44jHO+4/H4sL5Kykecimn+lfbuKUwpwFyM0KCD/8res=.sha256
Similar to ssb-junkyard?
%SStz8j4xdct3QDPnMxTVhWOCYq5rtpZosVztByXo568=.sha256
%YK+uIRAJz0YeyH4zIb90mTadhxJvEJ8y49ULqUGAxHQ=.sha256
Sounds sensible
%LDe9r/sKukQpbuGFIqKF6jOsMR+ayL3b3b2XIo+7jAc=.sha256
%3KQ7Jd94pOlPBbMkSJKb7kZTm14T5Vx5Ec7K8aqG8dI=.sha256
%I7CzqVP9SB+WovP+73ihgRRhxLLxjaFNqUww1PwnIKk=.sha256
%aCIESwyVGnvEkzks0SNXIBvjaWK3Qk4O7nZgZ7ktw28=.sha256
Sounds good
%YYU0/Kpht5Rp/lI1J4PXaNGX+JjREjQTnqyz8WBGsSI=.sha256
To answer my own question. In both cases, random sampling and bulk signatures, some of the individual signatures that you don't verify could be invalid. And they are part of the chain so you accepted some messages that another peer might not. There is a difference though, in the bulk signature case there is always a chain of signatures that correctly signs the whole chain.
%iIWYJzFK7fYvxdHbBnNig++USD0T5g71Ybd5A+PRr1I=.sha256
%PM68wm2oNpNIPBE3Ck9rFfXUEaWSUg6jDJ2NxV3fJuM=.sha256
hi @Dominic. Thanks for taking a look :)
I'm looking at the code - does it store the top level values as bipf arrays?
The layering makes it a bit easier to work with. The top layer (butt2 msg + content) is so we can easily send it over something like ebt. The bytes of butt2 msg is used to get the key and the bytes of encodedValue is used for signatures.
The important question: how does batch signing work?
You sign the concatenated bytes of the previous N hashes. That works as a signature of those messages. You chunk them into reasonable sizes in order for a debouncing validation to be able to queue up enough messages to use this optimization.
I think you could make a much simpler approach: since hashes preserve the uniqueness of the hashed data, it means signing the hash is as good as signing the data, and signing the hash of the hash (or the hash of data containing the hash) is also good enough. So therefore, every ssb message signs not just the message content but the whole chain of preceding messages. If you changed one bit in the first message the hashes of all subsequent messages would change.
If I understand you correctly, then why didn't we just check the signature of the latest message in classic ssb as well?
%GCDKbWCZngplJtfuo+wVW0alHyPHlzPUUJQyscdOrik=.sha256
%E7vhgyuRmnrxpKL0CHeG6fdWswKGKpKkd3D6eKLMU2s=.sha256
Thanks @Matt Lorentz, I was implementing most of the functionality and the implementation currently is 320 lines. You don't have bipf in go, so would have to implement it, but that is only 200 lines. See this PR where the code is tidied a bit. I know what cryptix did some refactors to support bendy butt which should make adding a new format a lot easier. We did similar things in db2 and ebt and it has really helped a lot.
I'd be happy to answer any questions you or @boreq might have. I think this format should be a really good fit for go and you should be able to get some really nice performance numbers, much better than JS probably.
%dQS8CK4HCuKDvkeqai4CEuKYd6W3CBlaMB2/ey84/ZQ=.sha256
Thanks for the suggestions @andrestaltz📱. I had to similar things in mind. For the layering something like onion, but that is already used by tor, so not a good option. And for something similar to butt2 I was thinking of shortening it to B2. Then SSB with butt2 would be S2 B2. Probably a bit too cute :) Buttwoo (with an extra o) has a nice ring to it when you say it out loud.
%NRsPDa49gFrWkue/K9F0xbT1l5HcWJi2C0HF7nGaZEc=.sha256
@moid the code is up now at https://github.com/arj03/ssb-butt2. Still some things missing, but getting there.
@Mix Android there are no lipmaa links 👺
And signing the msg keys for batch validation should be fine
I tested the size reduction and it appears that butt2 is roughly 80% the size of classic over the wire.
%F/HOGS7v2fLNbTYPHrfFijlldMNDHLq5STysgf51m1E=.sha256
%p0wGytob/TeFwiCUrykOQjanh6cgsJAlExuqaXSlMi0=.sha256
%xyw5/gBfRuWvs+kow5yIDIYN8K9aHbylSWIwyjI29zo=.sha256
%OuCPmTXh8y2N9CK/bK7PO6AwuNKIN75D2hFjeR/RS5Y=.sha256
@moid each message signs itself just like current SSB feed format. What is different here is that you can optionally include signatures that spans a range. So lets say you get the first 100 messages from a feed and the author chose to also include signatures for every 25 messages. Then you can check the signatures on message with sequence 25 that covers seq 1-24 and then the signature on the message 25 itself. Similarly for sequence 50 you check sequence 26-49 and then the direct signature on message 50. That way you end up checking 8 signatures instead of 100. This is only for the signature part, you do all the normal checks on the other messages including checking backlinks etc.
We have this kind of debounced validation in db2 already so we should be able to leverage this for the above.
Some numbers from the prototype:
checking 1 feed of 7797 messages
db query: 934.799ms
validate classic js: 1.497s
validate classic rust (chunk size 100): 643.784ms
validate classic rust (chunk size all): 367.473ms
extract data: 57.453ms
single message validation: 713.28ms
next two are validation in bulk:
verify simple & hash: 61.372ms
verify signature: 61.289ms
encode butt2 to bipf for db: 78.488ms
encode classic to bipf for db: 211.728ms
I'm currrently tidying up the prototype and splitting out the code into a proper module that will hopefully be public within the next week.
%+t0QJ81Bdu3mJ/x/QH+gk/CCDgjDFWUyFXm/I0wdEMo=.sha256
Yep, the insurance industry has always had golden days in a low trust environment. It's been this way for thousand of years :)
%Sfa97Ae2dgq8dYthTGC02+KIf1CphPWFeywdyUvT/R4=.sha256
%CH/lCNTFFau5csuPkFhv924tAHW+f7DFqWDCQ4m3yTU=.sha256
%3nTuA1VYlpn8N0pHQcIQN6zvHdqommjPYG3h4Ket8ok=.sha256
%XUbzIEc0clkMfzSQuzLm5CJufVPhtr7lN1g8tuMVzdU=.sha256
%Pnas64BJ60qbHF34BvsHiXYvMRj7CyKq8nsOlDCsWqA=.sha256
SSB Butt2 feed format
First of all about the name, all the creative energy went into designing the format so I went with the default thing of just calling it butt2 :) Happy to entertain suggestions.
I have been working on a new format for some time now and have a working prototype to make sure that it performs as expected. The reason for a new format are many, but what really made this something we can actually roll out to existing clients was the work we did in the NGI pointer grant on meta feeds.
Instead of copy pasting the whole spec I'll just highlight some of the key points:
Butt2 is a new binary feed format for SSB. The goal is to be simple, easy to integrate into existing implementations, be backwards compatible with existing applications and lastly to be performant.
A benchmark of a prototype shows the time it takes to validate and convert for storing in a database to be reduced in half for single message validation. While bulk validation with a signature for every 25 messages takes roughly 1/7 the time of existing format. To put these numbers into perspective, on an Intel i7-10510U it takes 3 minutes and 20 seconds to validate and convert 1 million messages, while butt2 takes 28 seconds.
I have a pretty good idea of what is needed for this to work in ssb-db2, but would love to hear from other implementations.
%rDiSamyEcjsJ+++dPTn+RU7mBLxa9ZkRoZdnx4AnnYY=.sha256
%UhcEXsqg+lm4VfVczv+L6vhlg1LIEjs5vIBjxBi4QMw=.sha256
%UQN0vcvFH5rrrzw4uGUmgGmGKIq2dbUVyUnLfOeJusI=.sha256
%BbIVOhtK7JVoAI6W7kKkDCJ+10GfTl7uYJp8iUaeZoQ=.sha256
%cT7oV9PFONX2DxVLtXZKrCiq03LZco0jX3pgtBiYtL8=.sha256
%Ti3Cvr9JfSa0eVLoeKS4CSZlzcv0ekVwZt2jqTlNofU=.sha256
@andrestaltz cft and I both have been working on new feed formats (with different constraints) and later exchanged ideas over email. So to answer your question: no.
%i3U86EVgJ7/BNcqSizgL/Am9VJJPzYqtC6wGFiAd9QE=.sha256
%m8c1t2QRKJA9gegeQUNW7rrwerFLNdt9kHjKWuBBWJw=.sha256
%cO4FsqzJkx4TiUI4fvzLzdOX6QtHouQGhSqMZ92HAZI=.sha256
%WGWJMRKle1R/l4plAZv8mE4E3FoNaNKsqnUJ7s+3Bxk=.sha256
%4jmL5y89AORuisBL9KZ2QewshDj3X7sag90pDtHoq3M=.sha256
%fHidGhvc6/IzKXZn2NABBm3+hUTLlv9gb7CRCnTgL+0=.sha256
%94Uwi7P4sc9IUa6OYSURIh9cdY83QzRfzkki7+ZRwhQ=.sha256
%P13HYEzE5OFnmKJ7hZQfilyw77oLmZyOTWogCNpzb6Q=.sha256
%IgN4UOrT0iSDmBR+YzWNjAfq30VdKpMV6DQOV5rPzRc=.sha256
Exciting, are shirts on their way?
%uN9mhsdH8mJ3CQSywLt9R+KUEEiaYEQAYaRyBm6fbhU=.sha256
%3sec7Dg5kNNp465xiaa0MPSZdpNkk9/S1ceuCtHvpaY=.sha256
%fWRA30mX0ZFW1raIof+k3jlAcbGBYWh3MbXCh/4Tes4=.sha256
%1zikcSf3MTMn1bitkmSW7Ex6ZcVdP0kotQzR3zjoyaU=.sha256
%56dHAUVadAxRgfvmyG6lpo1Mu3tkQdC8asM7n2J6PKo=.sha256
%sKIaLxkCnzfTE1v539vk4iicT9fIooAeBfQJFgjY+ug=.sha256
%AzTNgFKQt1Xatfsfc28YB64h6zQ2DumKbSQB4mW4mcA=.sha256
%nlGMRHX+OENUXR22FZ9iDSqaNrKrFTG7a7f1RWdUDTA=.sha256
%ELmJ3uizgdC3r1wScx68KhYJr4FhHn1MIubgYAOT8x0=.sha256
%VgdBZh3uPb7FK8q9VokyPOqOVbtFoIpXB6ZTjLTt3Ms=.sha256
Improve semantic delivery of old events to clients to ensure that when old nodes come online clients don’t see lots of old messages.
:-)
%e3YHsWFiR1IbQMxCvoAIkdno5b1wP0Nw1LHedJ9SCVE=.sha256
%xzDdL8y2bU64DFXo1nGdUygtufkoBpspc7aunl2Mwjc=.sha256
%BS3637lGrmIL5OWNL/hE+nFoc2ZbagKSC0ZjaUWzlXo=.sha256
%w4ZVecBkXT89YguVKVY4aZQkTxpV2r42TRkGv50yqqI=.sha256
%h7zavmBl1PmUm9rszSm3YbGWToQ18e3LvU5+qpzOjwk=.sha256
%1XDw4ZbN6X+CUAB7KeZ8ChLO89M6kMuZVPGmMGpblt8=.sha256
%OGwu64hze/AMkngkztP23v+n56pipx9WhCOepB297eI=.sha256
%r83VmwW4bk0FW+SRMBckel5vqzX/hDocq3MdeP+7DTY=.sha256
%r9JVSdGkwKVX6dquGj3xa2PYDEIP4op/+8g7CWTSFGA=.sha256
%5j9Dzo0J6fm3Xa3M+UlQKHSBfOEa34kKkzEwAjh/1zA=.sha256
%1odnM8fvFRRePLj22IOwY+txYojcd6x77XZzlfHG9OQ=.sha256
%fdfCGNaWwgtiS1NJHQpyx5yXPzewR4xM7foLcbSof8Q=.sha256
%Tm/0kHYecwW4hpwYHL68umaqxpzdiRV1zqK3AfpsIGM=.sha256
%n+PLoTiaVjI0WzZuL8YkBqD818CEiQi3psFl3McOO+o=.sha256
%qBi/z9nJhaGtMMexCBK9/TPEma3R1uFz1Twj6Oe8tsM=.sha256
%GNobC5CDQWe1427z9ydRSQunQsQsF/SyzsBNdlhyqdQ=.sha256
@Powersource (phone) no protection ;-)
%C2ZWJFXNEthtzOMrDWAe8oiMR3A1ZWy5kjPloexFaqU=.sha256
%ykFTYE3i8T8QdzivH79qx+xuM02A40j4fFe3cO0fFx4=.sha256
You should try Rome). Especially Flowers From Exile, sooo good. Also Riverside, Porcupine Tree, Steven Wilson is quite nice.
%nB5+YHDeJmIK8otWeaDGHJB8Lbs7xTL5bX2lYHIgFnE=.sha256
%J92heXN76qEJcdGO8Fj3gJ4u9MCNXLU+bGZYXtpRdow=.sha256
Should also be a tad faster indexing :)
%3gGIJvs4xgGjepNwH0qmJF4bk/9kJvdfMhX9O2LPY3A=.sha256
%ADr6kU28j6JfDiuQblRlaiaI9CUGFLifcg9v6yMcGwU=.sha256
%nTRHDuTY2uRD4rHfCkRCt7v/zSL71aE79ohFzeuoHYU=.sha256
%rtGU/U4h7lI+Ihm8MKSBtwXHRU8vahxwajbmmIrYQMM=.sha256
%h6uog8j8bfq38dyzEQLAWKiAWKCW4DSYZoeqMKTZcbA=.sha256
%fXTg+LJfKFI3BREP1FYQdLYLagUynzi1PrA1I/pCfKI=.sha256
%HmX52UwM5AtpDGJloIzAXXRoJWUhd/rbOYzQ6LFjwQ4=.sha256
%adF+eTVTVVs25tVe8mUfk4wrEmfK4TMRZjsCbzWVs5U=.sha256
%6t80YIfp/dLrLgFRPtByizPBDscXTJfRB4vCxLpBVVA=.sha256
%ThT0dF54ilkMdBNya4PirtR6rutcXaJNiE/4/iDWl0c=.sha256
%cEXIpeCq7vuPDGKbge1Wihr6KRMJuPt/NFSg8DzFwxk=.sha256
%1P9LfQx9+OzG31JngRF2NxyyeKOdIp5ZZV96PmryjaU=.sha256
%PKZsPT+mAQSDe7rl7pE4eHK85Udwtx4/qvytl15Tslw=.sha256
%Jjc4zJRZfrBukyfTK7N1FgFjYydzYtYAkcGd2YydowE=.sha256
%jmIzd4A/IL1v+UaHO9KnwReXM3SVQY2YaafQIlK9IDk=.sha256
%l4fAZXIkPWv1vndZPLq0iaqbb2Hbmt2qI3YcjHqk5lw=.sha256
%5VQ06/3gvFlygjiiiowX8hAbEBEftIkQBQ4pjW+OvDM=.sha256
I'm trying to run this on a Raspberry Pi Zero2 W that should support 64bit and armv8. I tried flashing the image, but on startup I only see the colorful rainbow boot screen. It doesn't seem to want to boot.
%875LME1RvkwwczRwmqr4bKCOsBkR4r7gEUCITd8PsSU=.sha256
%EIzMlad2dZEgzQP6++Tz6TIJ1zXAOJ4+XA7JHhEBsCg=.sha256
%cclj5e+0KBkP9rWwdu1ydAhpFsUurRe7NRhrIhL/994=.sha256
%y0g91nHm/W0TG+Y+BCGwpk5jdNVAy2tIX28byBlifbM=.sha256
%ZMqVUSFR3uFhmjx4j0elrxedDLqXrBJwY7/dTmOByZ0=.sha256
I'd like to test :)
%7h1z3oEL64Xn4CAR/75wkhGQUlSF/ITyBdTmMtC/qlA=.sha256
%RkioO/QOdbDe5lCy8QQqPS/Id46R13Y/Mf+W9pwjQgI=.sha256
%JXvXSIaGMAqncPZK/AQObEASkIAROzDfXd2yqz5uBBA=.sha256
%Vr5NL74NQTEe65FysHyFt/2ftOiKWCidmr6/IIk6N6c=.sha256
%KEM6V0zRGs4nlW/F261ti0WLxW11AaQRq8nPi1FERzk=.sha256
%v6do5tbM+0Us/iM6Uub3wKMxiFIsPzjyhL+dQ3bt3qk=.sha256
%1Q76XzbW1zfFeJ+2vu+zim14OWl2JyHhX2rJNSw68uU=.sha256
@Mix Android db2 has transaction support. The messages needs to fit into 1 block (so 65k), but otherwise it is atomic.
%bqHQYjn1NPCH6Hxnkj61n3tACdO480pPyNHcHh/27rk=.sha256
%rnOhLF+AJ9yJJIYyY1gfUMqftKE7RnO6mwiUV/radZc=.sha256
%MrU+rIxVZJ43+aaVHqYe1u6SpWJhIu1WizEfiTXkA/o=.sha256
%90Fs9RasQdVCeEdL9XxPR/jEtjq4Iz9JPu2Q0Iq2HUc=.sha256
%iemaiov5vrpfevZwzjnkyXoGsnVzv+dlnEj09+7wnLI=.sha256
%4us29Kyvz7NaKQ+Omc9I2CU6reg/RilyYAbW0ljOyr0=.sha256
%+f7rdlREC36sqmecWjAU/R+6vaOgKFAmXPzOzAcZolY=.sha256
%wX1o+iHpo6iJuSFiRpigDbAewRztRlLkBd/BbzXH6/8=.sha256
%I3IPpX0Pd6bJr8kpWgSLrQgOJM1YXloWKyqsmz+1N5U=.sha256
%FsRXUg4snD9NBlxX7NSijeOi/GdPWkYp1gLD3Ux8TgI=.sha256
%tZQHdXDgJteMxVf5fTJ2btI/Vgjx9kDt/zXL//Nv6GQ=.sha256
%hcpYlLwQRmWZAvQj0TsH/UMgmUNCO8kxw7LGr5CPl6s=.sha256
%iTvPdxcNQ93JnjdFrJW4HkRUiY0rlytNWr/zvePaNFw=.sha256
A quote from The Dawn of Everything that I have been thinking about lately:
What makes the Roman Law conception of property - the basis of almost all legal systems today - unique is that the responsibility to care and share is reduced to a minimum, or even eliminated entirely. In Roman Law there are three basic rights relating to possession: usus (the right to use), fructus (the right to enjoy the products of a property, for instance the fruit of a tree), and abusus (the right to damage or destroy). If one has only the first two rights this is referred to as usufruct, and is not considered true possession under the law. The defining feature of true legal property, then, is that one has the option of not taking care of it, or even destroying it at will.
%30xX/TQzCyo6Y30DVa7p0+wvQ2DdK1QZAlh8nkFNrto=.sha256
%3+PxGpAVyXt68Wr9fhRlFZENbvSuKId4PyKRgcw8dcM=.sha256
%6y2bOTpghACNMDuLK9Jie3nxsJ0pZXdcVSuMvw1x3q4=.sha256
%w0QoyUvUhk2yoxsuACNik0qTWzyTWjYui6zHtEM16co=.sha256
%rW9/i2ZRjwVXowNKf0ikrQ3DR9hpc6f2ygV5Qv/atYM=.sha256
%qj5jxesJNmY/kj0tMixPsG/XJKUSzXYdTwTIHoPe7TY=.sha256
%ru1sM7JNEZCjKyvohCVJtqpp+tjRbuW2bp4DGkDh6yU=.sha256
%WlGK90CRuZ8WBI3PzTwmXY/nuCnaKrzEv1i91jTdR7E=.sha256
%hvVKB7WyTDUBGhM4zZBHHR56dsMMkmY09KyLPlyNo00=.sha256
%7Qk4W7rA8TfQi7lyANc8VmbqbU5f26tGv2yhaL316y8=.sha256
%bkPX4QWfoj07TdrYOPPBOXvikvOdNCepu/lZRU/e/2A=.sha256
%e8lWh+wgJpLJ+eq6DXF04mY+M4+2ixBNq9pnl7a/4Bg=.sha256
%hJ8phKiQ7EAPhigURdiPiwN/dw0f14dkBCh7xX6gyYQ=.sha256
We live in a world of deep fried consumerism.
Totally.
I think this comes back to setting expectations. The MIT license does this pretty well in that it's pretty hands off what people can do with it and doesn't set a lot of expectations. There is definitely the cultural expectations as you say and those can be hard to counter.
%h+eFc4wafoyrwej8rK23Nu80Fa1/zBB/puy4GMBWDtg=.sha256
%OFseyOd3ExvTmmBoXW/z16rJNkSP1Hj+e1O+cqnUMbw=.sha256
Yes to this. I also think there should be some kind of compensation and accountability built into this. If you compare this to a democracy then the people elected are fairly compensated for their time. And maintaining a commons, be that recreational areas a the city or a software project needs to have a track record in the community they serve for this to work.
%QmGqsU/c7Mj96dVGwfibiEWiKDfse/SPfm62FZyArPs=.sha256
%rHAnyWsY3EvCyfimmYF7ijEoLPyW8+JvOlz7Epgf3pI=.sha256
%klEEnXF/ySXpU61arpOJSSRn/B5XxPAYIOvMAvSqBS0=.sha256
%pddyZB50ikmtU2vs9K+XzyvGP8FfPaby5o4tJ1mxjXY=.sha256
%HbT3YVLT2mUX5rgvnxdmSwAea93u2hwmrmaT+9G04kc=.sha256
%u8tIjQaPW7e/UTxq00tdg/5JRJmOyWfd41j9Z1oPBHY=.sha256
%zzZg83NWNez/ab4x8IiCpRh6kpCj03n5p171+XVxc/o=.sha256
%piWx4h2U66Kqk1uRLsiRnNqbHCKldoi5WXyOPQktyEo=.sha256
%G9JFvR7BDsMCYBmJcj6tbM+L/TT3wzdvx84ojpjvF7w=.sha256
%7NJoHBqkS9pE6jlWy10ZWQiCnv9wHaiX309z4ylmns4=.sha256
%OSR70ASfnVYGvRHNKFWGLahUkynPY+5rRgowHmRolNU=.sha256
%K6BQbp8F5mW9r6QHZMEjKTss/JhBcqCruTR0jKKJuco=.sha256
soooooooooooooo looking forward to seeing this
%ICbRkC3FatxMdhHy3EffiiXhNe1hoFMDmxafLDg0yGA=.sha256
%VdsYORVK0/WYKs1YeBvc9Kx/cCE9kQ5thJeJvyisjp8=.sha256
%+N6rdT1+rvcXRc8DdLIR4gRId9l05BIOwQWxMuvkLb4=.sha256
%jyeopHE/XARtot78yhH/lnj/+OA4faaXw4TA3UGyqNA=.sha256
%gUScT1qtHzWwx6YkG2N4NQu/bCmw3ZVzobve1IVkM2w=.sha256
Right, a very good subfeed candidate would be "profile" abouts. That would mean you could really quickly onboard someone as 500 feeds * ~5 about messages can be done in roughly 1-2 seconds. After that you could start getting what other data you might be interested in.
%QsXH5IptMjeEEAuEEyVrlrlIyBcvm0YkAxguqknZ5+A=.sha256
For 2022 I want to support fellow butts:
- @mixmix on bringing ahau to ssb-db2. In general interested in seeing ssb-crut used more and helping fixing bugs
- supporting @andrestaltz with database compaction in ssb-db2
- provide support for @zelfs ButtCast adventures
- finish a v1 of fusion identities. Will need to get back to that one again together with @Mix Android
I'm quite interested in #peachcloud as well. I shut down my vps recently, so would love to have a pi running at home with rooms 2.0, maybe as a continuation on groupies.
%jVOCRCjEwKP2NuIbtBI/DMINTddfbUz3TwSoKpN62/U=.sha256
@Frank I did also micro-benchmark async append only log (the lowest level of ssb-db2) here. Note those are from a while ago, before we decided that flume compat was not super interesting.
%w91BPbeK6zp/VdID3D2hjpikhN3ejFaKiWb9QGWCeIA=.sha256
%qA1m2HF2aprwvnqoqjTvjobYFpYddhXN22IamvwbNrY=.sha256
%0Ktj8jOiqQvMq0p+y9VKHhCu3ddHqHQQ8xZuKsTEo5I=.sha256
@Mix Android there are a few things wrong with about messages. One of them being that they don't indicate what they reference, so you have to have the referenced message in order to know what kind of about it is. Secondly lets say crut becomes a hugely popular way to build applications, then you are going to have a ton of about like messages. They could be from a number of different type of applications. Depending on the application, you might even have more of these "change" messages that normal messages. In any case it would be better to use specific app/update type of messages and put those in the subfeed related to app, than to put a lot of unrelated messages into the same feed.
%AdLDaghGWSGcCzR9v08AyhT7GlHgZ3/BnvOafx/Opnc=.sha256
%CLk6rimX4N8TY5Jp3TOoKT2shxfnPczBYEYqIFHn/T8=.sha256
%A1hyYTppV9VdwCoBCrMdVCOlEN3XlKsLuN42ZDu4J7U=.sha256
%C80MizNlablM/Y22v3Rh1qMqCVDROLXoyHL6IqtUzsE=.sha256
%qtpN96GyQEom74snlyMtIhXv2Oq8q+ocsky2tAQ7LEw=.sha256
%KokEjwSEX81L5MqUs4sCn4WR2DP0pFuEsdjPZn5dUSI=.sha256
%s45qJ4GH6+1EKpO6UQVe626LxqsU70cX3MvvKD/86HI=.sha256
%JEvKJP5xfRaslNICrAGAEcFWxUjH4KxAO89aiFE/uwI=.sha256
%sNY94GhLfHGqzMOjBXKvMHL6E1Rg65CtUJ016Qh2MvE=.sha256
%nCaG2XbEvKJjIxh+uvoSs+i4woNtAD3Ty/61yCrGZXs=.sha256
%K3coUOBZD6sz/tyImNc+FMcrWvO7/GeMY3yFTApmBAA=.sha256
%ogX5J+Y76QDOyxxayIw2wYjn4kaGt2x6tSSQ5llnfpE=.sha256
%V83jDstzMcDZJYXqLfowJ15XsjgmhuSR4/1XYX5wPMI=.sha256
%5M4rHG7YUGNCCgn219wG56geS1QH9dvOga4Zy/u2Oq0=.sha256
%1g2rXnKQNoZoxJi+S5mhgKYnnUuA96rqjSwYyJmDcUg=.sha256
%QqDOcjyZosh5rMs36CYR8KL/PGhqQepBKNIO1NdNMjM=.sha256
%mdHnTq+Ki7+xqF2nthH3ELqZVgLnglcSgNKFgtbzkDs=.sha256
%H8ubZ+HqSLUQpkO5YULVHr+OXK7GnIMxnCpMYAELYGg=.sha256
%lLNLvEddhLSR1a76ZljYqcWYSnDJa8mEy+I51eZmmEI=.sha256
%AO0XLkPCPtAwUeWhWQh21JwE5bCNNacTwGovk9FhlRc=.sha256
%AEzId4apr+Rq8mwlr5C3IW+yRcLw7MVQmnoFwlWHOCM=.sha256
%tuYVNbarbWzYSyjH5UljZ1pGM4LD+8Xlf5ZgPr1W7To=.sha256
%K+IhqSe9nBoIs3QcTN3MrPs5x0xdHjYSm9Su2OhtGuc=.sha256
yeah it seems like we will finally get some decent cards in a normal set again :)
%OztSNw5xa60zxTQ3DiiECEOE9yoSp0UgJ8h1Ol7qMio=.sha256
%1x8/BSoJg3UUEp5YyPe5qBAmeMpNl9+e7TQQo6xbsag=.sha256
%OvXZHptzbF/OuTtQKMJA8R9McHA3XoQid5T2GUSClmQ=.sha256
%p0ewfVqpu1ob37bBgsAPthR6324qJf8UacpSQIzmuFY=.sha256
%uPTei6YP2Yjzsh7yub/uN8A2LpDsfTKyAVW5Y7ZsYXI=.sha256
%AWcYcB88yRZmtWoSGQLFTKh0XYuFj1s3o605KpXDV2k=.sha256
%Ndgg5uhQj5oHO9PTuIKffwtTg2PTsUgdsg/dojOfmz8=.sha256
%1uPjVTNoDJZjnyMJfQNZpgFmW1nchry1r3rCrUddIko=.sha256
%czgrLMPrcRO7c9Nj/xevZDPGeEdIhlO3tyMXPZcZZ8Y=.sha256
%fkZP9RznEWpOF0kP9kRMNXBWkXvsWTUXN5jfqPNtREg=.sha256
%cYENGcWx0YXlJktJeoSvtBOqORSLvsAHOJii99QZNs8=.sha256
%HKw+ZKAu+V285UP4hQFzKBZqZbkLb24bylxIO2xQAdU=.sha256
%0hNpChupAE5jf6oOvmbFfotCDAl922ptzD/SKHKEISQ=.sha256
%ifPz1hh7XY7sweK1y9RfDPNNQu5oRkcepEb+8DtxST4=.sha256
%vbgyJxM60+OF2MFf9d4CuQwEIz8CjtiTSHtq9penUPs=.sha256
%ak2FK1FhTDBpaMVjhyNGdMRAx01nEor+0JhmAjWpxCk=.sha256
%4B/KSPUjvkom6dww/bhuDV7mNvA9uG2CU7oEduLyL+A=.sha256
%MVgThPBY+vBqBodpKVFReSPEqt5LLJH84VO7Aw/tXKQ=.sha256
%7dTNMj5XPfoupIcI+Gg82W7vOyJvhVn6aUF2tV4Ywr0=.sha256
%Px/8CBfcwlDh0VDVwmL8Js4UgvTxfh0+C6lOObX/He0=.sha256
%F9EWLwKjc+VREVYOkBRgl2G0wg9RH4TJWvH5mnb4ZqI=.sha256
%II9vagMEBb7jFS3fN95KxsxUTQe2RoDUpxV0pO7s/s0=.sha256
%CCpClfi3NAHXxc5jJzKfDZ/zO5xqi5+eUw8+d6je4GQ=.sha256
%cJQwCnGmHB8M5kj69F0uhmrYjJCn9wbFfjl20lj11U8=.sha256
%HkQEnegD+PzYA10F3El6/3Gk6hsDkM32yvVS2MPrWQ0=.sha256
%IhKHtVjRtVtofx/oXRCDJ5w6bIolJp8hNeqm1smW/3M=.sha256
check localStorage :-)
%f128qQ2fBKWL1ZbQJEX+M9wWSFj9rMvE+NIvI+0klTQ=.sha256
yeah sorry. I had to shutdown my vps.
%ZLnT2j05GdzsmoG08/fpVSdYTDQaSccQKgVeiRxUW/c=.sha256
This could be 2 types here right? One that would auto-follow similar to peer invites and another that allowed bypassing the firewall, maybe just for one session?
%uNt/u36HSa4KYVGCkr3CuZr+QfcjSLBaq9WZN9Y4ln8=.sha256
%8N89DeSqdNFhqum3Pvhz48H0v4jO1OrjTxOVlxLh7MA=.sha256
I imagine the overhead of this is much lower than SHS seeing as this is kernel space. It seem that it is possible to get the public key from wireguard for an open connection. This would allow one to use noauth instead of SHS and rely on wireguard for the encryption. This should also play quite nicely with network identity. Wireguard doesn't seem to do automatic NAT hole punching so tor hidden services still has its uses. In any case this is pretty cool. Thanks for sharing.
%HUa+D5EJpVXWYZXd/aNz8Xni610TLfNcEH/OdYdv1yQ=.sha256
%ndmqIMjstDkL4K5eSrDyu1fNGZ2BjIpceGqXuMhUB1k=.sha256
%QYh0F+R2XwPzJoWgS1+u+5poq3NkG84N0hmY+uMGZPU=.sha256
%exO9XdDTdjXgT/w8iOCDvJ4M7xwGQB3oom9jiOmgjz4=.sha256
%+EPSeK5WU8G3rfpURBgjoEsjc3oxv3T6PGALFjwL5as=.sha256
%JTJcmMrcz1aXJbeigA60+jXV1fimTpV/Cyah8hjGn+E=.sha256
%UhBJWDnKxG2qk6G7XPCXF4Ij/9fPoYIb0a0+KyJbKZw=.sha256
As for the offline aspect that mostly becomes a problem if you need to coordinate on something (typical example is coins and double spending). That is only one class of problems, it might be a lot more interesting to think about things without scarcity, think CI for software or anything related to simulations.
%LRoRwYwFf+IHbKrhX07wHNV8NGEH+IDwzSQRbvhz7GQ=.sha256
%gnfkeD5Z+/WXEE0H/gIiT2hPwWeh0tt/+VM8bLacqdg=.sha256
I love that idea @Rick Carlino Maybe instead of Solidity you would just run wasm. And it doesn't have to be limited to compute, could just as well be storage. In society we use trust as that lowers the cost of transactions (besides making things nicer overall). I think there is a huge potential in exploring that idea as a most crypto bro solutions go the other direction of minimal trust resulting in insane overhead.
%cvawfXiHvx6TIZaqVKbs284VCF4JbaIn+hQTtW3d/2g=.sha256
%+gztQkkrs+H2DfnhhpKAffQP4KdIFopKcP/HNRtPnWE=.sha256
%NkZYQM9L2UKpHJdN7WjMtE1o+rhIzdYNqJIbdO7ZwxE=.sha256
%DBzWhFloI5pjxt/RiSmq6nH+XdaXXY1nY7ZfjWRPKcE=.sha256
Amazing! Posting from manyverse desktop :)
%t6h1EfUBU5BG1fp4+0gsIZwiMGECnCr3CwCnUYY7WTA=.sha256
%x6xz2cV5BzRuQ2Ogg+El1nEt/EfgNvAJJzkztZqpROM=.sha256
%URmjBh38I7/WvnZieGuJQ//0eXnfrhakAHpPCETvYTg=.sha256
%b1J7PGFi7g7yJkaB+3LK+8+PUebP/A2rn8kgvsKKPO4=.sha256
Content warning: hardcore fusion dance
create fusion identity
✔ no err for create()
✔ 2 messages created
✔ correct type
✔ 2 recipients
✔ secret is encrypted
invite + consent
✔ no err for create()
✔ no err for invite()
✔ no err for read()
✔ 1 state
✔ 1 invited
✔ 1 member
✔ 0 consented
@ESsX+BEc ─> @gPDLMiFF
1 fusion
2 fusion/entrust
3 fusion
✔ no err for invitations()
✔ 1 open invitation
✔ no err for consent()
✔ no err for invitations()
✔ no open invitations
✔ 1 invited
✔ 1 member
✔ 1 consented
@gPDLMiFF ─> @ESsX+BEc
1 fusion
@ESsX+BEc ─> @gPDLMiFF
4 fusion/entrust
✔ 1 invited
✔ 2 members
✔ 1 consented
%d8NdkUFzUpH/292ZHB59EH3iPcTF40Fp+PL34tzBfBg=.sha256
%ctYk+fSSeGwu93wswRsN8qj1n65LxYrg+K3gd1Wz9ps=.sha256
%9e8Gooalf/ifbJ18uPFpDEv/7Cy/bmMFEuXMfpmmXRA=.sha256
%6apIN6OoreHbJtEtfr47jwLAuGrszXYQEfcwm08nquk=.sha256
%YySFka0cZN2RJLLRb+zaKVCHsI2PY9wKAaDivwI/jKM=.sha256
%7rKluKmnr7/Lprrnn7TAIWUlPi9jRMCs9rAS74pq5Y8=.sha256
%Go+fCuUbBvPHnyTzeQU2H+W06aPp0XzMRFKyTfLA2+8=.sha256
%46RMg10z0tjAb56UUfYLzi+g8GWCHVIN2psXPKih2iE=.sha256
%rdKfnBHdK9YvQUctYCmHGkCPfGsR7f1pfNwxQi1Oljk=.sha256
%njlfa27+mKQvTwbCTTMlCtKdolboYyhB26zshLlE5z0=.sha256
@Michael Lyle snapshots are a great idea. One of the things that previously has been hampering anyone working on this is the classic feed format has a limit of 8k. You could of course do them as blobs. One place where this would be quite natural is in crut. There is a ton of previous work on this topic in distributed version control systems.
%QwgcuoL8rzNUhm2Ol5DDetVK4VgN8DyhOx09dFg8sEU=.sha256
%0pKyL95CRqeTSfaYgo9ItQEr5CCsin22X22lH6LJzOQ=.sha256
Hello @Michael Lyle
One thing we have been working on during the ssb pointer grant was meta feeds which is a way to structure your feed into a hierarchy and attach metadata to different parts. This means you can do selective sync and things like ephemeral (sub)feeds. It also open up for the ability of different feed formats tailored at different use cases.
%LAlb0OVWlH+AJLDPi7CKvrM83RRWuu7DbTnJO1jKirE=.sha256
%zRJ34IT4qVDsRZwYsrdYcqIQexyeIXQkkFFzxezIREY=.sha256
Aww you are too kind. I also have enjoyed working with you, your attention to detail in reviewing PRs is really phenomenal.
All good bugs have a name, I propose we name this one the Tu´bug.
Happy holidays 🎅
%payz0QJPachwsj5ZxEPbXcYA79jBJdWHI/hf9xBHOII=.sha256
%4U2Ol1CLtW7VVGw21u0VTBM0uxA5wa+wRDYwWC6OVbY=.sha256
%vdlSCFXbtJvzQSybRb0kr3Lw6K8W4LwFJP0/alJDmnE=.sha256
%vrwiHEDUBpZmgub3sn2oI11JpX/7KQAWgzu+QnCOaLY=.sha256
Gløgg & klejner at the office
You can find a recipe for the buns (klejner) if you want to make them at home. The ones in the picture were from the local bakery but the gløgg was homemade by a colleague.
%QoTXRwDJoZX0LEKXxGEUeqsWGIT3tNVmv6xHucXRmvQ=.sha256
%B4dq/FnJdxxXvb3Cz3sUhWG8642UEhpDt02Ln7+t7g0=.sha256
%pj7378b7HnUw9zTRAjPk/hefnQhF8cjIlOo2IZ0Br2g=.sha256
Yeah housing prices is one that really gets me as well. It's not like people have a choice if they want a place to live in or not, and now it has become an investment opportunity for the rich. It didn't get any better when I read about some of the earlier examples where this has played out in EU.
%uRwqnvKlX6J+r+rIeQ2NfDMZyoyPYrFHbvg9i/Olv5c=.sha256
%D/wr3u2+3smvjLRdqM2RbZO8RkxowdBg5uS4j4yoLXU=.sha256
%ytYSAxI3qE6Hx9GXypbRY6n7wi+u4DaLh01wupdwp3Y=.sha256
%XBQH/P7HjcpayHVtVfFXJXlXpk4XdTOA7r90R0NPwjA=.sha256
%s2iaSNpJdktedjNQ7A2RYKcq/8zhiU4dx9GgbU53MnE=.sha256
%dBWDVcZPRUJTYwQWZx/YHNbIHIJhUSHRfOvENNyI9x4=.sha256
%du2KZSekty95BW2gx5mtvBZcLdCmshihl1kl3kFv8TE=.sha256
%HidfePKAbR/RB+0OyqxdprRXAJNDUHMcGwRcWqpJl4A=.sha256
%uI/WVztP7xuGxVPHQNLvKWu74yAr6VcGAf9/CvNYN58=.sha256
I noticed this PR sitting idle that gets people to join by using a room instead of a pub. This points to https://github.com/ssbc/ssb-server/wiki/%23ssbrooms that might need a bit of updating now we have rooms2. I'm not a member of https://gitlab.com/ssbc/scuttlebutt.nz so I can't help merge these request.
%nQ1Tt83or6flLjl6K7f8NyyXwVWElz99qHQRm+1c7pA=.sha256
And if you have any questions, just shoot :)
%nAb2gKkSUslWj1TSG8T1Dm99DgKRunxoDrEDa/w/9x4=.sha256
@SoapDog (Macbook Air) note that the latest version of ssb-browser-core should be much closer to a vanilla sbot with db2. The only diff should be the singleton.
%+ODx33oeijwLFfXiz2ry59tLJItGMr2tFc4M5Z9i//Q=.sha256
%LUoSeNaqLEZrH7uPIcZFz0WxTk0luvOQxAgHE+2nU0U=.sha256
@Mix Android yes fusion identities is up next. I was just cleaning up a PR to jitdb to fix a bug in bipf, but that should be more or less ready. There is this PR: https://gitlab.com/ahau/lib/ssb-crut/-/merge_requests/16 I'd like to have reviewed. That would be good to have in before starting fusion as the plan is to do them using crut.
%JhboqG4FdbLpYipiZEsELqvHg0R8OgQY6qAqzLWP/Vo=.sha256
%jNn7eLqx1z4sDa0SsyxwT3GSJE680yQjAV87NKj0c+k=.sha256
Wikipedia & top of github.com/ssbc updated with links to dev.scuttlebutt.nz :)
%GdPTILcbypJrFcreTRr7fB90pt++joViU0e+UPzIuRA=.sha256
%cxiu+PpWFeV2oW2XbazJzKjBO2Olm++3avssdoHbR7g=.sha256
%74aZ3um5jnSqd37fdaXI+kou831kXSy4YNuL+MJSRJg=.sha256
Yes, I'd like that. You have more information so can factor that in into things like blocking etc.
%kzNFaAsrQlguUi6JP0ljyWCa7MQEyn7WwgwS8wbsMGk=.sha256
%+/guA0NMfJQH7Sey+hmx9J6G3pH65ORwdu3XvzN4T3Y=.sha256
@andrestaltz📱 I don't know that much about these native bindings, I see you are making some progress in the issue you are linking. Maybe you can check what the overhead is for transferring data between Zig and node first. That way you have a baseline.
%tEMqljFdWgWO4ggPqglkrbBwZ4DoB0ZVSNsvD2JVuoM=.sha256
{ "type": "about", "about": "%onCMGZNPer0lK7SdxCxVA74eda5OEh+DHuFsn1s503c=.sha256", "attendee": { "link": "@6CAxOI3f+LUOVrbAl0IemqiS7ATpQvr9Mdw9LC4+Uv0=.ed25519" } }
%bd0ykZxtvh3pkHDbc3bSy9mZyJnRCbhAkXNiujQvl7U=.sha256
%t70ndkQd1KCnuVoM/44dUL9Yb/lEFYmr8E1WFBtLoKM=.sha256
@mix.desktop It is, the only pain point was that SimpleSet doesn't seem to work with objects?
%f0RuKMFDpyUPlTfUpvjpPkHJ2KKsvpl46vujuvPZOKQ=.sha256
Ok crut is pretty sweet. I migrated the per group configuration and is now able to define rooms per private group:
%aq5WFeSRj1GH2gA7arEZ2w+8YW8uRQkPF/WRc7Ox92o=.sha256
@farewellutopia-dev I wonder what the requirements are. Is this a replacement just for < 5 MB blobs? I guess we want to know better who was sending what, instead of doing just flooding. But maybe that is separate from moving the bits around? Hyper has been integrated with the SSB eco system before, so that is one candidate. We don't need to use the whole peer discovery part, we already have that.
Anyway, keen to hear what you think the minimal requirements are?
%46gvq0u6BO+adl0tZnGImfHeuQNl0rzzKXqIJpKs+Jk=.sha256
%b1418/Z04CswtYaCI1GkeW4auO+Z/g3WiWFUFgf+sEg=.sha256
%1SpkLijfVBpoeVBUUh6GZgv03DbFQFLRqnpQZhmB7ts=.sha256
%33+Lwit0eGbQBBK0H0JIVyS/UQ/Rdh3fdQfJjnyGB3U=.sha256
%OPwJNVPNwqCOEsasns6Pf62OrD5twxTFsdNsG3amxkk=.sha256
%Aywy7bwct3cFVhIywtoe+XvQrnkk1K0IGtfFE20y6eA=.sha256
%3862NbV0jkLISzwtBhpQzPNHuy/+DZb3/s2fQVq3ODI=.sha256
One of the good things about the blobs protocol being so special is that it can be replaced with something else. The only thing the current messages do is reference a hash. Where you get that hash from doesn't really matter. So the more we can experiment with this the better. I'm also not super fond of the current blob protocol.
%CN+pCAE70aQm45uzkj/lAIcJ06ua0kcjCUucbDVMGo0=.sha256
%UG9v2bl8BZGaH9uBukjKX0Pb6cgH6EhArcjL6AyWVgw=.sha256
Seems like the last two bugfixes made a big difference so here we go.
Groupies
Groupies is a tech demo showcasing private groups for SSB running directly in the browser using ssb-browser-core with no installation required. The demo is a primitive chat application that uses meta feeds to split each group into their own feed for each node. This means that you will only store data for the groups you are a part of. Furthermore the classic follow/block paradigm is used for replication within a certain hop distance. Data is transferred between nodes via a rooms server. This is just meant as a tech demo, I don't plan to keep developing this. Use cabal if you want a offline-first chat application.
What I'm almost most happy about is that this uses ssb-browser-core 13 where I removed most of the stuff that made browser-core different from the normal ssb stack. It's also pretty snappy, give it a try :-)
%RmGJSCreHskedVKghNHhKmhFyt4VeAfwV+ABgH08PSE=.sha256
@Luandro Pàtwy in due time, need to make sure it works properly first :)
@Mix Android indeed
%Kat+oFBvUdLi8DSWHo5OFBUFYoHnmTxl0QrwN/jyzQY=.sha256
%uv7VjUkce12JkpdGLg644+vLCgHmThLov/GD2qXBtJk=.sha256
%UBcLIV5E9esgrg6C9W2Uo8PlwP8oiR1C3xkZxEaaoss=.sha256
%ZoBvKkCBEaFJHWEhdBvDE6HUqQq+eWKXpJ7xAhIbwvE=.sha256
%RVvjKTSva0veKBHFYDoNVl3TbTWacrbXmspH3HICz6I=.sha256
%h8hQ9hIz6aS3p5DqBvpRfiJC5RlR/IvaQ8gC5h1GBVg=.sha256
%wqq3W5Z1ayQWtJJw6btPOyM9xMQmA3SLxVYxgKmHSOM=.sha256
%ZUvI2rgrMGgVnb4KpZiciqimgqMk49YNdLjOoeKACw8=.sha256
%gvwXA6yL32i3IapgTq/rIRJl+kW6LANvLrVx3W4qD4o=.sha256
This is really exciting. Are there plans to support rooms as well on peachcloud?
%Z82gENU/290VVt/HOWqRKXciswwNYlVyqeeiYDHbm2I=.sha256
%e7hdp7GwBB6jN+XpJIwonlfKDya3e8rSd7kqpn4yOv4=.sha256
%6nXJu093I7H7pcQSrFmpTOLN2d+mnJ8LA1Kc5C7kUb4=.sha256
%DAXFheocQyvxuZNzgBEjtVNAYybfY7c9d858xdupKE0=.sha256
%wJ1h3Y4wePrkeRDy+PvqoqwiSxnQjjN3QKF08uGSC9Q=.sha256
%f9jOKvpf1byq64oMN0SYJU4d3Va7SVt4mmY82Y2aFUI=.sha256
%+WURiNQrrDFn9hxMUoj3HOk0b9BQiU37iuMH/L7Hfd0=.sha256
%HGadJ0dxzApzeZXCMFlmezkYvgYsUmVfafeh9Whrf9w=.sha256
%7Zyt80BBx/qCbfZU2wsSJCy4av+8jd+KB2RfZPe8xwY=.sha256
Yes see fusion identity. I plan on working on that after I get private groups into a decent shape.
%i+fuT+y1mC93cARx4cU1yOeGAp5gHJoLU2meG02ywBw=.sha256
%yepYZ+fwuC87I+klWjIDsqMlYGSbULOvsptkfvrKPgE=.sha256
%QZBwliNlSuIpxu8LpaT8N/tL1FznrDU4kDCzpsxfU2g=.sha256
%hHrFTDK/kFZaXHCUJwOaS6PgZpE5M6JTqJbeiZPd1Os=.sha256
%L9qGUlcSRkMBuazflvsAsU8zKk30skqlkJ/4tW30EOQ=.sha256
%maXCBjI+D0RexcKs/po9wc7oTXIt6u2kV3Ytsq4Sxpg=.sha256
%RygSz8O/sF+/P1fx40gKqL5rlTUJ+emLWwfpAjc2i9s=.sha256
%zmGXIKzeQs+g/gLWAvwzWhLIYKO3t81gFpsSdtmMV2U=.sha256
I'm thinking of reading it, although from the cover there seems some overlap with Against the grain by James C. Scott that I already read.
%2LfdlXOQB8kGM7yAY2GCZ0/Pfq/VVC7MhFskdLwL2Oc=.sha256
%nj4Bb9w5sEpGqIF4DBoULTEBIVxCLa+4qFN1F7GAl/M=.sha256
%rfT8pUaOPzrz8M81YwleYXDqm9f2AERHRE3YFRAcFrg=.sha256
%M7GIIUm4/TWXP5yPMTEbQEMO5sHAh7nWVSOH4Y/wL/k=.sha256
%fnRi5PQ/uk+YnUUMJKXgYxwQdZlzQBvPgZiCp6diqk0=.sha256
%YEwPIk9F91tsEgWMuJAM5Rye2XkREWSOxcJztA9RD8s=.sha256
SSB DB2 2.7
I have just cut a new release of SSB DB2 after merging in support for box2 using ssb-db2-box2. This means we can now do private groups and encrypt bendy butt (meta feeds) messages. @mixmix has begun looking at what needs done in order to run ssb-tribes on top of db2 here. And I recently got it working in the browser as well. I took special care in db2 to make this as performant as possible by doing the minimum amount of work needed. This should scale pretty well even for a lot of groups.
%6Vc7+ITGsecej14cF35B0/KANxqZjSSruVBXqMd6K9M=.sha256
%JEVvK86R4c7h+r9Zy45ZamOme433ySMKVwuze9ipjyg=.sha256
%m1qB5TYHtrZH2trcjUleIN86aGnqOVWM7KEUwqENYSY=.sha256
%Roz8oadvzPeEEtQr8JvuUUrPvJ8m++2JFt7nVrSjKaw=.sha256
%JrT7s9qcX4MUnC3qYHrlBBqcdN4EBzv9evoKizRYGD8=.sha256
%dAndyFkn8L+lG3FTvGYWfqJ9xh77bJH3wFj5enASjaE=.sha256
%j+KPkQ+K6dK2ZTrUqG/OyZKKR3XVGmCnYK3ALz8KkcQ=.sha256
%/dNWk8e7cHZGZbfxZcTWTzWno1g0/N+5Xn4/YuWgdys=.sha256
%aMefjsUsNJ2Sul/T3yIk1y/35DhLkyqX4q1qPPNAVBg=.sha256
%Nd2ZfISjVYgzP9L9g/4lQzOT+P5jmz9OxQj50Ki9x38=.sha256
%VDtyZuAaeujePUKRnYl9ckorlMc9qRLOACFwBhMteoE=.sha256
Hold up… wonder how that will work with pubs… hmm, to discuss
One way this could work is to have 2 keys for a group. One for the replication peers and one for the participants. This way a pub or backup node could be in the replication peers (and see the metafeed message), but not in the participants (and decrypt the feed contents).
%W/Rko6El3sX11niBOjjANOIgUhTZpOUTtKgcd2SUCjc=.sha256
%r2c/1QIIU9tFOn22FKL8k9hxKkjoiRLERkEPXvoQq4s=.sha256
%dT+WGGsAFdjPX3EXZTBB6v+LtuQ1gxpjerSgTCpUdJM=.sha256
%SGYsINGPBpPnUCQCsL+9RfqOOtw3tKS2owFnhdfob+w=.sha256
%wzBSWUamCKGJlSZwNz/6WEs7M2+9PZ1UgFtMN2B4kOA=.sha256
%mUdt/6wQGu+y2fwnjzhIg1aNiGttcTHxXPFc96CfcfQ=.sha256
%gjL0FkuoN20+tTLisafgM17SXZ8D2y9LqLd3Gfq2vdc=.sha256
%V+NoZZJN5mKaCzRdQAEvXakvZR6w53sAarZt0W/8Se0=.sha256
%byYeqSBLuEtp2js8UxIyhwz6YEOtAPhbOQW5ENABTeM=.sha256
%8S0blKoBp8KNXD8qxCsWmUD1+vIxlhucvGwwixieItY=.sha256
Absolutely, as for your specific question I'm a firm believer in consensus for small groups. I don't have specific material. I would say that, especially in the beginning, time spent there is really well spent. Also aligning interests is super important and consensus is one of the tools for that.
RE: design by committee. Can you be a bit more specific here? On the top of my head you might like Design of Design, The: Essays from a Computer Scientist by Fred Brooks.
%penfW5F8jujq8dCXp6LKC//IXs+j4gEtjMefI1fqLwI=.sha256
%BCXsVG1IG+AftIHxX0HS74Wi0shTJlY6uhccKoWOnAU=.sha256
%Y/6QZsmKc0VlXckQsfh8k485p757KF45GysF9kgXd/8=.sha256
%W1a3g4D/ojzBiBD7VB7zZdBkGefwVOOHrDVQL1eL9po=.sha256
Thought it would be good with an update on this. On a local machine with basically no latency, partial replication is roughly the same speed as full replication except it replicates only around 30% the number of messages. This is with indexes, so there 2x overhead in the number of messages. If this was a new feed format instead where contacts would be neatly put in their own feed under the metafeed, this would be roughly ½ the number of messages.
Why is this not faster? First of all this is a raw throughput test. So while full replication is just as fast, it consumes a lot more cpu and bandwidth. Partial replication on the other hand, for each feed, first needs to discover the metafeed. Download that, find the index feeds and replicate those. When we tested this in manyverse the app was quite use-able while doing an initial sync. Secondly this is on a local device, it would be very interesting to test this on wifi between a phone and a desktop computer or to use netem.
Overall I think this mostly works (90-95% there). It is very dependant on how many machines in the network start using metafeeds, which is why manyverse on the desktop will be a big deal.
%ZqpLVgZvW2lIrVr7qe8Wbki0w56t9gn+hotoOHVX4Ac=.sha256
From a local exhibition on modern day work
%WqyBiPYOS2mUzIsj9WVbue1vkc85Vb1zos/ltbP0KIA=.sha256
%84tfKsgykHFQfh9U5vCCSOGvqrn9V4uqgdV8wNKbJgQ=.sha256
%fnsyrT7OKhnC89YmWDcridpFeYGIzOOIIngKu6EdGI8=.sha256
%thqawje30tAEmuxMIV5bPKdw0nXdpeNOy6bPJH/HfO8=.sha256
%XErlbOI/+K4Cc7Vt67DwAZqJIE9GN/3MNQQ9gAuAzn8=.sha256
%Y05YtKhuPc2knl217X1Gqkw8mHQ9bF2ymaFRaavku08=.sha256
%hitnQ01+hhQEjFuL/LC4F+AvPWOAa4QGyBDq9qzsKEE=.sha256
%GzDOuKNNOQbrqvuyk47D0jPSrTibvl9P2HyjqvKWRU8=.sha256
%fhmYMdKiwMtl0kQlix+3opzlFugHutRLD2vA5Z9bVX8=.sha256
Still deep in the netsim testing of the partial replication changes, it does look like there is light at the end of the tunnels, so we should have some numbers to share soon.
In other news, today I merged and released the ebt changes for partial replication as 8.0.0. Go is also getting similar ebt changes soon.
I updated the main site so that it now includes are the specs, videos and audits & research. Worth noting is Eileens dev UX report and @keks and Justins audit report on partial replication including a formal analysis of the fusion identity protocol using the Tamarin prover tool.
%RrhCXCDbgG9VUL2jjI7DBSbtQpf216jpYYEIz1+cFXM=.sha256
%1bwjLONRRLEUkRceHBGxhxLfXgYgzgX6+ouLXYcxeqo=.sha256
%fLPXuxxl48x/ugVO6oFDOLnlImUZG4Gj2JOCdATaWJw=.sha256
%qPsNU52fWtIhzazDSn0hEZRi+6RSrFICg5nwxBnAfDY=.sha256
Yeah so in order to keep the same shape of things, encrypted messages are decrypted and returned as bipf so they can be read in-place as any other message. This is all handled in ssb-db2/indexes/private.js.
%+e0XEGpiVkoQF1cMSlj9C+uF4DeShaCKvDKn7aTklvg=.sha256
MAD SCIENCE!
%ra10FOwEPCjwju70sneOe2EdZZtFCq1QJAT0lt5gGfs=.sha256
I wonder if this compresses so well is because of some of the same words being the multiple times (set
, previous
, ids). Basically a lot of this tangle stuff. So what I would try to do is to do the same for your full log.
Another question I have is how does this interact with db2?
The log is stored encrypted. In the case of this brotli, you would have to know that the feed is compressed, so you have to decompress first of all to validate. Then whenever you get it from the database you decompress as well. Because the compression time is so large, I don't think it makes sense to store it decompressed.
One thing you can do with meta feeds is that you can attach metadata to it, so you could say that this feed is compressed with brotli and the other end, if it supports it, could then chose to replicate and handle that feed accordingly.
%SgJdsQ4Ejnz4ExMa4VC1fIyDS+UOgwHUHradvFdxPFE=.sha256
yum yum 🍕 🤩
%b1BRaOA5hWdoEXKF6deXaq3VUfTCyg01Vp7QVNMX8Jw=.sha256
%1FUE0Hh9q7UK7XL11RhJeAl9ZpfffzQRZGBhcdVlRHM=.sha256
%Nov28inZBAJT3fxhBW1TiFqod77feKFr6X2QMmeWdUs=.sha256
%ksW2rHX79ZWD92vIvnPwgT+EW6ggWRuYA4QEewCugcg=.sha256
%bOjzB9WgE53jALr2u3UFYYYQiJrFeqe1ApD3m1aNM7c=.sha256
%ZwTI0BuAUtT9vlp78XCQ0gyfLwFU+u2fGPTfV8LvUCg=.sha256
%JxNahcHFTHHi8bYSjJJzxtddxlwmu7glR3CzB8gKyrI=.sha256
%7H6SVj815YM3lmHcOnuVzRkOzVrsr4Xs00o2KT+GWtA=.sha256
%4wz8WntINAg6oPHFSK2DDnN5iafcyzASdbpn6dkXqsQ=.sha256
%y80lWPbzXPYmt5VN+urF2VqKLlVIVVCpJ431nqovrmc=.sha256
%+oXYFy7uo34X+WU2vf+fjG5HWL8JvHizM65fJZQ6Jyo=.sha256
You could argue that for a single person with multiple devices the difference is probably not that big, but consider a fusion identity for a larger group, say the ngi pointer team, then these things becomes important.
%iWG4NoEf94gQ/cn9Q/JjdlVtORs69WI1w6GWPJt8BHU=.sha256
@moid there definitely is overlap, I think the most important distinction is what guarantees they provide. Metafeeds, because you only have 1 writer, can have a simpler model to dictate what the truth is. Like if a feed is no longer used it can tombstone it. Fusion identities on the other hand are more complicated because you are dealing with multiple physical devices. We didn't want to end up with a leader, so instead we ended up with: if something happens the identity is gone and you have to create a new one. Because the identities are light (basically just a read/identity key), its not that big of a deal. The biggest problem is determining what the new fusion identity for that person is, this is where we have redirects and attestation.
%OwWPu7wRrFNPCuf+ofqWiq0wFudD6Aa591EEBR4wM4s=.sha256
%gKfGZwOWq//PtfG55hf3sRMz6237Yy0ylpvPd60GGKI=.sha256
Added transaction support to ssb-db2 and async-append- only-log. What databases doesn't have transactions these days? 😏
Wrestled a bit with ssb-ebt to shake out the (hopefully) last bugs. For the gory details on how promises might bite you in the 🍑
Updated 8k-demo to the latest dependencies and made it a bit more stable with > 10+ connections. Lets see. This bullet point doesn't end with a emoji, so 🌼
%8Tin+dtYx25/2cLn47Kt3nTW9BEQ8/9THGcAZEp1MP4=.sha256
The link to the repo ssb-migrate 😏
How do you keep of state of what has been applied? And does a migration need to be idempotent?
%Hg+jRSiEzDSTSW76zO8kmocrtPcvyq1xhyi//CfFc9s=.sha256
%BVfhLTqJyrmxLas8Rfuc0oSRayrqBDZ9ku+kRvvBqcI=.sha256
%XVYPH5FaUi0derT+eZAiITBZAN2n8hULXiB0EClmF7E=.sha256
{ "type": "about", "about": "%4OBBPxTjMDz9ilIwD1n/byA9BP7SM6CN1utlwgWgUk4=.sha256", "attendee": { "link": "@6CAxOI3f+LUOVrbAl0IemqiS7ATpQvr9Mdw9LC4+Uv0=.ed25519" } }
%lckSU7hCpfc9zNo0swS/NAZgrzpc7uklKEjGNjBIPQU=.sha256
%PS6MMMLroDZc9dQ9fuNjp5sikRcYzQZES/X0OHQy+ag=.sha256
%zCCk/0B8KFaG6wxk9TZ75ISaO6at4TDrGCS3uOF6xiU=.sha256
%GspVISRAOiETytfumyGtAfDZhHabJx8jEl0aDEtvzGU=.sha256
%M9y2zjKV4CY9nEXsQEy2edwttzKa0aKqyAllpWmEI8E=.sha256
The main question I have, that I’m not clear on, is how partial replication changes validation of the messages. One can still validate the signatures of the messages but not the other properties. For example how does one know a feed it forked?
When doing partial replication using indexes it is true that you can't know for sure whether the author left out messages. We had a design that could help with that, but its complex. What you know for sure is that the author wrote the index and the indexed messages.
I see indexes as mainly something we use for classic main feeds. Going forward we now have: a way to introduce more feed formats and to split data into multiple feeds for different use cases, like contacts and specific applications (git, etc.). And these feeds will have the normal linked properties, might even have more properties when using something like bamboo.
As for the forking aspect that is in general a very hard problem to solve. I don't think the addition of metafeeds changes that very much. It was a problem for classic feeds and is still a problem. What I think might help this is when we get fusion identities implemented. Fusion identities means your never really have to share keys. Leaving the forked feed mainly a problem of backup. And in that case I think a proper: "save my feed & latest sequence(s)" + restore from that and only allow posting once you have all that data should be safe.
%F5ZFBltZRw+UeCJAn4Gm3Ibu5u1eij5C01y9LXlqKIU=.sha256
%Ovp4phbJ2gi+gGKtYkidCMubWpo2xUdqZrJdQ85S+eg=.sha256
%kbjcRjKJB3uX1bOXLt0iOIdo2+NBLA+qWyXp4HvUJqs=.sha256
%cYdcXC52Xr+Jx05bDpDMqYedoH/1oNSoUXHlqBBcjEI=.sha256
%wGge+jB1oclG7K7BiAP8pg1WbGN4xXUcw85oAZfvSYU=.sha256
%I50nczubrkvd2xQY7RixhISd2myk1PCGcxT47x+A0FM=.sha256
%Cc1CL1wO6E0Qask2eo8EjfxCD62BAZS3reYwNhpk1L4=.sha256
%ALyciaW4oby3PjyzAN4L+zv4MKXmu8wI013D8xqbGJA=.sha256
%arDaqDpxAUvw8UaPeL9LUS00uFwbESogB+KDHkgqDTg=.sha256
%INA23Wiru+IbE0/QcpOQhc+laZXyAzDFhQn1PymLj7E=.sha256
Finale month of the #ngipointer grant. The pieces are starting to fall into place.
Bendy butt, Meta feeds and index feeds are more or less complete. This means we are focusing on getting partial replication between nodes working with these building blocks. I just finished a quite big refactor of EBT to allow it to replicate other things than classic messages including bendy butt (in binary) and indexes. Next up is using replication scheduler to do the orchestration of what feeds needs to replicated how. And finally putting that into netsim for proper performance numbers.
While it might be a bit silent here, we are busy getting the last pieces in before the deadline. I can't think of a better group of people to be working together on this. Its so great to see the amount of teamwork happening behind the scenes.
%hJBbK0IZnzrJKrZAQQ3geNpOhHqXCdujLdPEv/uKgzw=.sha256
Fixed the date ;)
%vhJRpcgY+Em7ek5r5inpQ7BhyDe5CxIuIjkw/ARdSvE=.sha256
{ "type": "about", "about": "%pGzYbO999H0KXz9deFzOoWFgJbmJ7B9CARoJTUM/fpE=.sha256", "startDateTime": { "epoch": 1631606400000, "tz": "europe/copenhagen", "silent": true, "_weekStart": 1, "_today": {} } }
%dgkzKwhpOFWcDSuDZf7McucFLDxchX+NjqfUFwyujZw=.sha256
{ "type": "about", "about": "%pGzYbO999H0KXz9deFzOoWFgJbmJ7B9CARoJTUM/fpE=.sha256", "attendee": { "link": "@6CAxOI3f+LUOVrbAl0IemqiS7ATpQvr9Mdw9LC4+Uv0=.ed25519" } }
%l02E9wOsnQYmMnzGGfxTeL5L11w1X04zpSfJeicAWM8=.sha256
%xSTYHjlQoJQswyNhp1HNdu5T4x86hB2BxfP9lnAKWIc=.sha256
%Lnn64TgAwzTvpeI2PWcDsV1LxNWtJecNn/6cdogNV9k=.sha256
%iyMWVL2uWfAXWgKtqG+nQxZghT7FRsj1i22HBtdSkWQ=.sha256
%aUFRS9ycAujRj7SDlGAS5EuAo0616V9BEbOk+cS+mhc=.sha256
%gw2QCyVDyBtFcPUeBcyVBk6eaIBiYd779RUVndF2hp8=.sha256
%Z7QN0sUl7+lThrRA4DmHbsT+7krsnp93JNK7BdgTCh4=.sha256
%Lj+/h9iDCwxszj7ojmDvkgQzidPt551z7cqsrkEM5a0=.sha256
%W8IeLqEKwRAl6a4703nu7fy7iGGykoam1NeGnQM82W0=.sha256
%5BJmq/WhbTqoV72mAVgPk3GgN2+U5dRGYZ7voiV9HmE=.sha256
%HvZ1ixFMBbh1pzPzmdpL2PxaiTQ1dVvm0bE4lNAwjsQ=.sha256
%lH3f9dm53edxTE0dPV+ur8j3BP0D+1+9AjNvfAN2KIA=.sha256
%hAzEoaJLbvlD0ts/cl17GxMhwG/7fRBQHcTmOQix2bg=.sha256
%76Cb0P9CQyfkmY6fdkFBHHUTF4f/uUiix636fTXr32M=.sha256
%GTm2JjaV6G0JQ2TY51CEH4toQDQy0Cc9Xn4WW7gwQsA=.sha256
%3tagGaQoSYKC2SuTZPB8+JbJjmKvtjC2L5z1a+lPtCk=.sha256
%zuWJKVLC/F6Fp6ld89UhQJTjUM8mvQ6jn/I3CCSK4YA=.sha256
@Timothy Bradley the fusion identity is not able to produce anything itself. When you send a PM to the identity, a reply will be from one of the feeds of the fusion identity. The question remains, what happens if you send a message to a fusion identity and later you get a message that is it now tombstoned. From a security perspective you should expect that all messages written to the fusion identity could be comprised, even earlier messages. Then again that is not that much different from another account being compromised. There is a bigger attack surface because you have more devices, on the other hand you actually have a mechanism for telling the world about that. And it doesn't have to be only a compromise, it could even be like this was my old identity, now I'm moving to this new identity.
%N0NWULSuWf0LCptTmZn8cGB+kRpHT36QGekFfNg8KmE=.sha256
Demoed the 8k demo an hour ago at #svendsolar
8K demo is an example SSB application running purely in the browser using ssb-browser-core. The aim of the application is to showcase some of the things we have been building during the ngi pointer grant.
8K demo works by allowing users to create their own applications and share these together with the data to other users connected to the same room. The name 8k comes from the message size limit, meaning applications can be no larger than 8192 bytes and demo refers to the golden demoscene days were packing a ton of stuff into a tiny file was an art in itself.
8K demo uses meta feeds to store information in different feeds. By doing so allowing for partial replication by selectively downloading the feeds of a peer you are interested in.
There are some sample applications here for inspiration of what can be build including a news app and mixtape built by @SoapDog
You can try it out here.
%dVeOP6GsMdpcv9F3aqhOHhExkB0JbcNyFgNkD3m4cOU=.sha256
%wcD4KHrB43NBVX1Pyecj8gdwRRbZ56hGnsqtvEpbfZk=.sha256
%b66OFjXaV8cKBAz920vseD1/XToOC+f0Zo6VWMRCpI4=.sha256
%LOkebmLvFyxhVC7Hv7xWhWVHVTU6uKFUqv+zNFVgoL0=.sha256
%2q4ywAXcyvt4mtwaba2Yq+cP7zaqR461pA4YCefWAdA=.sha256
%fwgPkHC5qDRNqMu2bTjMMRwlan+0byg91DiVKSmccgE=.sha256
%WN4bjjZrUuuM/YZW4pzkCeWURgy8Nd1MD3ip4VqqTH8=.sha256
%gkO8tlBvRzcgbb3YpuLYrGjdW6TbHXBvT6AzRlqjREQ=.sha256
%5rfg3jps7RMwqrKXKM5Rs8oeouB/mUY9qT97twXhGts=.sha256
%uMn8FZNWZbaRAtQb2XHEgX9KViPlEZh7RlBSJyEGwsE=.sha256
%71H9qWRybN14pYjsw8Yro975tUq7ryFPss63B15gMlg=.sha256
@Laatikainen ordered one buddy. Size M thx.
%rXQ36me/0GTp2kXCZzqKsyLTvjz1eEaZR8269s1MTDA=.sha256
@Timothy Bradley the main problem is that once a key is compromised its very hard to do anything sensible. fusion identity would allow you to first say that the old key and new key are 1 identity and then later tombstone that identity and redirect to a new fusion identity only containing the new key. The good thing about this setup is that you can specify what happened in the redirect.
%sKO4HKQYv8+YzSveMRw7F4+Rrl0NM04afSWTBE9Ilo0=.sha256
%Mzhh+egKZTD/zkIwXZddZnuHJu8xKZPxjkmOZqCjZSc=.sha256
Ugh, so patchwork tells me it has been 2 months since the last update. Summertime took a good chunk of that. Was good spending time with family in the 🌞 🏖️
Anyway so what has been up. The last weekly meeting was more or less exactly 2 months before the deadline so with that in mind we decided to reduce the scope of the partial replication a bit in order to get something working properly instead of a ton of half-working code. This means we will be focused on only doing indexes for you own main feed. Another one of the motivations is that manyverse on the desktop has been moving steadily forward and with that, the need to index other peers feeds decreases quite a bit. Adding a new feed format is a ton of work, its pretty crazy actually. I have come to appreciate what can be build using meta feeds, not only for partial replication. The remaining tasks that we are working on in JS land is in this repo. The major tasks left are:
- finalize meta-feeds module including validation
- finalize bendy butt support in db2
- feed replicator (to use the indexes)
- netsim simulations of different scenarios for performance and cross platform testing
- example applications
I'm really happy that we can start sharing more code between ahau and #ssb-ngi-pointer. I recently refactored some of the code from ssb-tribes out into a separate module called ssb-private-group-keys and ssb-bfe spec has been getting a lot of attention to make sure if it something we can use in both projects. This means box2 support in db2 got a lot closer to becoming reality.
Lastly I'm working on a example application that will be showcased at #svendsolar 🦀 using meta feeds to build fun stuff that is not directly tied to the ssb social app use case. More on that later. Currently in ⌨️ 😼 mode.
%GKsP91FqoH91WkQLeKxFbEpanOl4XRHeCVJkhuiYxBg=.sha256
Hey @Timothy Bradley what do you mean with insecure encryption? There will be a forward path for upgrading your main feed to another main feed. The main benefit being able to use another feed format.
%+a7R9uXIOzfRTb/YqP3dDl3cwcMDpT2/vUWoDu0bxRw=.sha256
%vU61Oy1TqXN66RBKL1rxlCNlfvJsmHrgUzfNR1KB4cY=.sha256
%aAJFeJPtRwzbQSBUL2uzGNuaq6IiDKw7OhDbb2j64iM=.sha256
%b3ikJgkI4GsD2GfQSrv50KsSKBP7iPPzHdEROkAuYbY=.sha256
%2LbP8hjk19Ciwp9YDuOrUEYjwY75Pwf9s2DwG/KCfX0=.sha256
%tO4DzX9pmuTzFVlbmL6k2SvDMrcFW2W6Ic/jABdy8IQ=.sha256
%MW2HTR48Y44JmFQHUR674JfOYlVscOjuWAvqCELCWms=.sha256
- Can mention a fusion identity and all members can use that as notification
😃
%Fv5WqFwsRnZObU/8n09zOZ5AXtE6SH1h0BAgEztKWKQ=.sha256
I think there are two things here:
Should we use URI's for never things and try to limit @, $ and & for the classic format. This thread I think is a good example of why what would be a good idea :) I would like that the libraries we use like ssb-ref hides away this complexity if we do go down that route.
How do we handle things that don't neatly fit into our message, feeds, blob world. Private groups, p.o. boxes and fusion identities come to mind. Right now a private group is a message type in TFK/BFE. What is a p.o. box even? It's not really an identity, it's more like a key pair. I was having a conversation today with keks where this came up and thinking about how we categorise them will help clarify and communicate what they are.
%P1fqeoDotZwLjARdkroGDVbiFDoUVW492Sk+50K9CEs=.sha256
%Dbms0n+s1ldNPe+Zk4PQ2WqaYZ/X2AbYM4tNbay/c70=.sha256
%QOIdetkiWQn/PK/OFAvlgvsL5snFOrY+8YCSJYUmyCU=.sha256
%6XwxjJ9sJ2/aTqcTkoMHqJvwpLbpdnmVQwPMC/oCZ7c=.sha256
%IVMg2k+0fBmCk20tZX3JNHDwnB+gt+IucmSeJginQQg=.sha256
%TY2DWCCQajXpmDSs4T2ETtDE4YZtNxdViyfzHnmv3hk=.sha256
%XV633gzXIHg4FVbKm4FwqskWXisXnD5BLjpDt+oys0M=.sha256
The one right below the sentence: The new meta feed can contain the following messages (described as bendy-butt bencode dictionaries)
%VHroDemFCL68OxGJVjq/+5Uizc1kKjq+4dDuF5CgpCI=.sha256
@Powersource (phone) I don't think that will become a problem, like for indexes we have a sub meta feed. See this spec for an example of how one can structure a meta feed.
%LeidUITUdOevgYuEeufATRtAz+0T+YfUz6nZoYPDzs0=.sha256
There was no secret meeting 👻 I have only ever communicated with Kyle over github. He took the initiative to check if we are complying with the different licenses.
I don't have any grand plans for browser core. Blob-files should be moved out of that repo anyway, so the licensing is not a big problem there. I think @Kyle Maas's Development Thoughts can better speak about ssb-browser-demo that he has spent a lot of time and energy on.
%zK77+cEIXI74TGlDsJwsdtwG6n7nquy4DEwSn2oegsc=.sha256
%hYsGL4Qyu/X/HW2yjpDiSIoS1hJKFZhEGvkN/u/Qd6M=.sha256
%0c8Z/RySC3/x8zMZmARZm9z3s5iJBgpvF5Pd3UsemqM=.sha256
%vMZdLhK8p4WgbbiPE+4GzZT+oCjNSvb5nPvUJziNBnA=.sha256
%aJlO0ioUz5mQWyXVCSZOAo7F4zUOWR6G+VleztICHSE=.sha256
%IoPDW3UjAe2K3XMM6aIrUYv1kHz49m9xTAV9f7S24c4=.sha256
%hffX7UiwA+b27SuUg3y+cN1FhI4u5GuFzwUTuzXL2WM=.sha256
@happy0 I recently uncovered a race condition in ssb-ebt that has been lurking there the whole time. Try delaying the conn start a bit and see if that helps. Also are the two nodes following each other? -1 should mean it does not want to replicate a feed.
%nRO42tTu2Cov2Fkyl3eCvcvlDOkEbzaE0geJfdFSW8o=.sha256
Thanks for starting this thread @mix.desktop
- what licenses do you publish with for SSB work?
I have mainly been using Beerware license and LGPL.
- why have you chosen what you’ve chosen?
The first FOSS software I did was only GPL. Over time I have seen that it matters more what relationship you have with users of you code than the actual license. Because of this I like Beerware because it at least tries to communicate that hey there is another person at the other end, not a corporation with minions churning out code. For the #ngipointer work everything has been LGPL because that seems like a good fit for libraries and is FOSS complient which was a requirement from the EU.
- what experiences have you had as a result of license choices?
Recently I have run into a few situations where AGPL requires me or @Kyle Maas's Development Thoughts to change license or remove packages: rusty validate in db2, ssb-blob-files, gatherings. I have never really taken that seriously but sooner or later one has to.
I think for the software we are building here where there is a high degree of autonomy of peers built into the very design of the protocol makes it less likely that an extractive company would come along and built something on top of this.
What I value the most is that people working on this will be compensated fairly for the work they do so we don't end up in a extractive open source consumerism model. I think that has more to do with consistently delivering high quality that people or organisations value enough to support. The work you have been doing as well as manyverse are good examples of this.
%FbPddezvIdL/dgPHoje0gm8pobkzl6mran8DOa1SjME=.sha256
@punkmonk correct to the last point. ssb-identities don't have any relationship between feeds (on purpose). Meta feeds is meant to be on a single computer to make it easy to split data for different purposes into multiple feeds. For that purpose you then don't need to use ssb-identities.
%ptFnl3fs+xILD9wtouOWPeq6cWq4UK7JtKrak4Tg1Gs=.sha256
%ZHJoeJQqzK3fFj4SdjufkFcEArE8LiVHQYDT316wkDA=.sha256
%devkMHSs8bwRmdy4iTaICIps7LvsTqKb0SzOe674PlA=.sha256
%ixGc/pfGrlFeLSB/JwyCmNiskUtDZ/Op0HnSeZipu/g=.sha256
%hCK4C2y8NtStB9vObt86kp2MVvkwaTkoOgJzraLfeH8=.sha256
%/CAmPOGbEvarBXdDIkUpRruxyhnQnpTxDSa60DZlhG4=.sha256
%uaiQ3SxpZ4+7hUyjLFOclwNUwlxF9d4yuKfGmwv+fHQ=.sha256
%1yaEYk1mYIzJHajUc6MiZ8i7q91SyYFtVCj8LbKbvv4=.sha256
Yeah I like what @cblgh wrote. add
should work fine for adding messages from any feed. That is the same way it works if you get a message over the network, like with EBT. The pub that you add the message to needs to have the latest messages, but that shouldn't be much of a problem considering the pubs would be highly connected and replicate messages often.
This because the old log still exists
is because:
sbot.db2migrate && sbot.db2migrate.doesOldLogExist()
meaning you migrated the old log but then you need to make the switch to only use db2, you do this by moving away your old log. Not sure what profile you are using, if you still want to use stuff like patchwork which uses db1, then you should be able to use the same add method in db1.
%DifP2zBPSx0yjUMW7LXAaONJVVdHwpgZhX6HZasiu+w=.sha256
%cskkcyUGWehPfn2Ll0yAHhWkCyQinD0cYPY2V0xiDF0=.sha256
{ "type": "about", "about": "%K8gVNXTd0+D3oOEZ2Fnbx2B/1RPKzwUDnT4jCVDSzNQ=.sha256", "attendee": { "link": "@6CAxOI3f+LUOVrbAl0IemqiS7ATpQvr9Mdw9LC4+Uv0=.ed25519" } }
%jd67yJ+tWvGc0FGKX1KrVep8wfvjkJOAZ/ztcIMAU5A=.sha256
%VhEztWk6phPIdHoEkJELXKHPhcpxbnKgE2uEGz0H4Fs=.sha256
%k43rbXtu6wQ5lPmdTvT4bR2f61OYYdQbj28uw5Spno4=.sha256
Ran into this article by bunnie about Building a Curve25519 Hardware Accelerator. Seems to be used in Precursor. He is testing this against the curve25519 dalek #rust crate. Seems like that would make running SSB on that device a lot faster. Really interesting stuff and worth reading if you want to know more about ed25519. I learned a lot.
%LoQOVM8p8EFBXmjv57gt8+TJOk5k/rurwxEh4/xuw3U=.sha256
%V4doc294uh1sHkzDGykSFXWEJQ0mtWwIbfyzCcfPZfA=.sha256
%D9B5l3oPC1iNQreK2eJMfBJ3zkearRmpnsc64LBQLIc=.sha256
%x6AgvHVr9N39s88SDOrpM5N4CeoIKJvzb5NgWfDZKgI=.sha256
%BXcFJxygaGFbs0xTG17py0kqmVpeH7QJoX4PN6Sj5/E=.sha256
%67yGMN3l369iW+is5HIsbk5pRu+/13jaQnRm+p6iC2w=.sha256
%dX7hvYSspjHP4U/g2JycqkZ2NHs5juE1p+5JziEltHY=.sha256
%PvSkY4QOQxJNZIWYRrvVwQaxFkPu7dQQpNszvxQRccQ=.sha256
@Luandro Pàtwy @Hiure it seems there was a bit of activity in the repo and things are working better now?
Also here is a webpack config that I have used to compile browser core so we could test it with rusty wasm validation.
%p62pSp6cCLrF5hxmfQoUWUG/MVrFTOYs1xxt3ajEWC4=.sha256
@Hiure try having a look at https://github.com/arj03/ssb-browser-example. I made a small example to get people started :)
%hlt/pMeBU8NKNbPGnM7ABhIe7nW06MVKXAXEpHiMDZ4=.sha256
{ "type": "about", "about": "%uP8kIlVIw2RYA+YzSc9F4fs7ySW71IFCF1dlXQCIi3M=.sha256", "attendee": { "link": "@6CAxOI3f+LUOVrbAl0IemqiS7ATpQvr9Mdw9LC4+Uv0=.ed25519" } }
%CKce8E1eIJJQDoEY/m8OoTRVDLEgQvdTHM0KuJ7z1Fo=.sha256
%dGfI2t+YGE0d6bhCkwdw7cdzuBtE7tEoL8fnsmtGsXM=.sha256
%i1r91eksfu4y+V+SnHsZm9aQ/L0P6+0VdynKxRh2voE=.sha256
%TDNeaK43LNvExcQWxk1oGfkftyICUWyBfcAYxnJcUsI=.sha256
%2AL2Er4BY/mC2SUoOKPmVVrw/JyscUa43x0H1uHgChQ=.sha256
%IKHYsGEaqvfjsoiAGeYNqmczF84OtYDhrfrFyDw6HDg=.sha256
%vP8qwZnCALLFvW2gWxYUybBNeyubVoSkOk+WdmD1mOE=.sha256
%ju7dXaX9hHI0BoSJSGVxm/RvAgUNhkrypXjv8vQByN4=.sha256
%MIOZ/gwIHjBDLPFR42ezkcCfHy4Pa5vhUNzLvaS2H8Q=.sha256
%krN9bcRLhEMLj3KxjWCdcGEkxULXo49qtaGlGw3P+hU=.sha256
Can I be the accountant then? ;-)
%2ZjRHlSq4agHbBYjmLdOaNVjzZQ+cLZXyA+Ar5phr2s=.sha256
%b10bxnq5+byC/U+oI0g9CDPXlJtPX1qxnIsWOjjkfxY=.sha256
%N4Zlhq6uO1jM0CSihNM7Ri05J6ZMUAeZo0IOrrEb85Y=.sha256
%TWw/hvhE3vSFpP+bBuJml/Sc8R4IMUFAgryVYOdfUPI=.sha256
%LmhdI7cxib39n05R9AtftPxn2lwHt0AhZU/nbY1CAAU=.sha256
%f/MW316oZ6taBQ4BBmq7Mv/Sl95lIqKup5NSWoPURzw=.sha256
%Cl+fi4DUyKhRIh+5hGhlKp0HwbIlFH/6cJImF+HpYyg=.sha256
%1N9t+2n2XfqVGivNXsoLkgQa9UszpOmVIWcG7MeRNqU=.sha256
%M6Oafji4biJl7eK2H3Mcz5yc4miSZ7bGynJ0mcgw0UY=.sha256
%yu1X84uPc5C3e9Hf7VWsxqM7p5geQZFMNKlAVNvOLRE=.sha256
%0wbkbbzUBHY3aytfRK443S0n3MJXqXlw1tCxQmpN3ZA=.sha256
%KJYikXYaWuSvv2xYkZBnabI/ingJu4qjQTm3QUpCwI4=.sha256
%KMJ4P6vZQAz0j0LLO3dJ5ft+/7BNU3MsSwLBQBEqTjA=.sha256
That is quite impressive. I love how little code this is overall.
%ZfNIPfpwv72BFWlc0A6WdWEtI3hY/hRtrqZlMtCozLI=.sha256
%81foyUtI0LL+ZilMMS8QN2q6HMhcuGFs9lEcMVkg+io=.sha256
%+PcNqPdRe9fmDoAraUz7h8Xogh+TO33VKm5TRm7upBc=.sha256
%x0sScIVmzrQI1uww4QqiKcQlJPaG0vIklAgrW4wgoL4=.sha256
%+EgpxT5wzaqjLZ++PoYCtQ1fbDnuf944pcaKu8OZnDY=.sha256
%57DlNRozaxwqBQklyC5n2/7Vzn8utO7reE/GkqQU/1g=.sha256
%sVP9WcJFLPqyXGYblfmUP7vyjTUlhM4wfACOx6XqGh8=.sha256
%NQKEt45NQFN5ghKeXAPiT6sa8S3WPmzCfK+Eej/8fSE=.sha256
%//1yq3IMr4whFZTTlrXDhjWTUpWx3oUDCzHsm4X2qRo=.sha256
%I5EUymWLdhTHxDLys0J6igvFhz2zRftt/T4N4TAeQ94=.sha256
%xBHQTtt+wvpWTAfHJWpBy1FRS4RvH1iztLRTrqeoPJM=.sha256
Trying to debug this I see that the API can be much better, especially if there was a small example project one could fork. The problem was that the code expects a getSSB
call to succeed before it will do the callback. This is best done with getSSBEventually
. In browser-demo these are all over the place so I never saw this problem before.
So thanks for trying things out and reporting back.
Sidenote:
When I try to npm i the project npm gets angry and spits out this nice error :-)
npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! npm ERR! path /home/arj/dev/ssb-chess-browser/node_modules/ssb-chess
Might be related to a really old version of core-js that is pulled in by depnest, not sure.
%o24/1JIEgUcD+I/dEd2UoLB4Tf1kAnc/KiHcKMq3bmA=.sha256
%J/dB+bnTAjbjd7jtFXAHjbBXdC3XKZEeLwkxlYzrhU4=.sha256
%m7bqW3ivCnWlxmFsaBkC3dHXzpi5EDWyhrehM1dGYaE=.sha256
%KsGV70xoQAq46jBEJxvuKijWqin5hHBPjdWlmO0EsJY=.sha256
Thanks for joining @moid @glyph and @cblgh, was lovely chatting with y'all.
%dUUBkabmOIVktnT6jYf1iiO5fZmrsCsQ7+yO6hA5GgA=.sha256
Moving forward with bendy butt (the meta feed feed format). Thanks to test vectors from @cryptix we have the happy path of encoding and decoding covered. Been working an a module to use that so that it looks something like this:
sbot.metafeeds.getOrCreate((err, mf) => {
// lets create a new chess feed
mf.getOrCreateFeed('chess', 'classic', (err, feed) => {
sbot.db.publishAs(feed, {
type: 'chess-move',
...
}, (err) => {
if (err) console.error(err)
}))
})
})
Still a long way before this can be used in production, at least we can persist these new messages in the database and get them out again. We have been talking about building small example applications to show how these things can be used to build things.
The work on bendy butt meant we had to come up with a spec for binary encoding SSB concepts. Lets a thousand butt formats bloom 🌷
As for replication, EBT has supported binary tranfers since version 8, and we have added some RPCs to be used together with meta feeds for partial replication.
Very much in flux all of this, thought I would share what I have been up to since the last update.
%U1ziguUraovsBVpFbFmWP7j95GScW6v45H09rCP+jRE=.sha256
%C70AE68oQN4FM2h6HfsnTkLMR2Bch7brPk7cDf19iHs=.sha256
%6eYT/Oi6Xd3jBvk/hDu1g6GZ/q4Tj2qffOBt2sRzZ1U=.sha256
%3cheEcxerOKn5tTwTMsxcZ2RMqYjkFpo3qZwPEjletY=.sha256
{ "type": "about", "about": "%UZdF8JLeGG7W2qmJlR/VY+0hjG3Z09foleBR0HkSurk=.sha256", "attendee": { "link": "@6CAxOI3f+LUOVrbAl0IemqiS7ATpQvr9Mdw9LC4+Uv0=.ed25519" } }
%k1GcIfqEjNIig3iKi6Cm30nazw3CbMmm/eonhWrkE6k=.sha256
{ "type": "about", "about": "%UZdF8JLeGG7W2qmJlR/VY+0hjG3Z09foleBR0HkSurk=.sha256", "description": "NGI pointer weekly office hours on mumble\n\n# Time\n\n13:00-15:00 UTC+2\n\n# Location\n\nWe’ll be meeting on Mumble (you’ll need to have a Mumble client installed)\n\nServer: muchmuch.coffee\nPort: 64738" }
%ohigAVENtjUf4NAGeW2g9gTMJz05ygq1k1O29C6bSSY=.sha256
{ "type": "about", "about": "%UZdF8JLeGG7W2qmJlR/VY+0hjG3Z09foleBR0HkSurk=.sha256", "image": { "link": "&8SxFfZOUvFUYSKQJu+ykhpzHHS4iCiN2tlp6KBg3DS4=.sha256", "name": "tinker.jpeg", "size": 12398, "type": "image/jpeg" }, "startDateTime": { "epoch": 1624532400000, "tz": "europe/copenhagen", "silent": true, "_weekStart": 1, "_today": {} }, "title": "ARJ Office hours", "description": "NGI pointer weekly office hours on mumble" }
%UZdF8JLeGG7W2qmJlR/VY+0hjG3Z09foleBR0HkSurk=.sha256
ARJ Office hours
Thu, 24 Jun 2021 11:00:00 GMT
3 attending
NGI pointer weekly office hours on mumble
Time
13:00-15:00 UTC+2
Location
We’ll be meeting on Mumble (you’ll need to have a Mumble client installed)
Server: muchmuch.coffee
Port: 64738
%Og1xeg0hardEp/SrH8TXUtNPBlzYa5QP4xK6t7IBssM=.sha256
%dF8MzmkIltOEQRUzWp/05QThuitD4ThKraHEz8XuJ9E=.sha256
%dN9WcTdQljfbkEjwvWM9+u+3oOXuWHd6eEHu0gSSD3I=.sha256
%2xqXbbVVFGB5TuJPJ2zea00vyBuPS4XirzJknkrHKTI=.sha256
{ "type": "chess_game_end", "status": "resigned", "root": "%UVD8bZhIyO2Fp+B+ImH/a58HMpcZn+Z2I7DTbT/jgHg=.sha256", "branch": "%Li7V4kXb9yXKhwIRX9ta6VU1+4/EKiRMmzQD6Oo9VX8=.sha256" }
%Li7V4kXb9yXKhwIRX9ta6VU1+4/EKiRMmzQD6Oo9VX8=.sha256
%AxOMMzMMU0d8cZrJ6e7r2Sd8Fu0ZRSrFUGjafm4xL4M=.sha256
%ze7T66G4mWSZzDCf0XH/ZOEbAkQ/Xgj4Q/iHClyqL0I=.sha256
Donated to this and tor
%iZHBuipQ8YnlDF8iceSYKpFrPopINmfvWtaJ/ldmhmw=.sha256
%r+tfkFVXBeL2Qzs9bYjzClpp4IBOBCh37piAxnQnghc=.sha256
%2F+AxzrZnJgMsu/bYrZ673vErABeO52owCN83+qVz50=.sha256
%agoWcFb0iqHjaQeTtdigT5Gc4nHpTcn9ldsZN6qRFNU=.sha256
%VNBD9j3RIfBvjdCtFSxEUXsFf/LNYH7SscYWkFxoULc=.sha256
One knows this is not a CS article when the conclusion is multiple pages long ;-)
Some tidbits and comments:
To the extent peer production has thrived, it has continued to rely on the corporate firm to supply (and capture) its economics. Rather than diminishing the stature of the firm, ...
Maybe not so surprising given firms has had at least a hundred years to perfect that skill.
Rather than continually adding restrictions, peer production licensing regimes might be rethought from the ground up to cultivate a deeper reciprocity.
Not sure if licensing is the issue here, but rather reciprocity between people. Neoliberalism overall has been very good at stockpiling wealth at the top of the pyramid at the expense of everyone else.
%y+tdGVqoMQKpQ2/Dj+C7Q5qWLF7LvUm9w8jth/tbt0g=.sha256
%Cy1IXEgwpZ+ZLj+W4r/ef5X6qd9k4ROSTg5syQsaGgI=.sha256
%/oFEyUCn057IRkyFDsDQN/DymrDiYWMxfz8PsIdvfp4=.sha256
%33QQubX2xMQqjXLM0rqi2BtIRfWPQUw9RMucUICM5M0=.sha256
%6geckrX+hy1dvKxyJNniHele6nf3XujKkhxGt703Ic0=.sha256
%lAJk8JpSef/mte4zQlKPwG/pw/WAxMQ6fPdXNZtFtq4=.sha256
%zoDRYFndohK9/OSonpWSrGWEB0FpBpnc6LIpbeij9zA=.sha256
%UnZimfx6vag685nBgHfCg0865hywstKEIXdSGmv+feg=.sha256
%mKwdBUXW79mV8PBTgiQhHoBHSf6u3uSpbr7B4v/hJnY=.sha256
%hQ+A4sohHTKV30cN/eUgIbiBujCCIkHGZ6CuawBGu7c=.sha256
%JLYQB62Qh0j6RqefDGn6a73rlEkobSE6znHc90r5QDU=.sha256
Thanks for hosting @cel
%IKQvnwtKUFB5plqo5TCASSuoewKTKT9IoopDGOFTQnQ=.sha256
%JQtwA6Zzdmy9npvhAYCMQClqUICmn1fEYS+dDcglBYM=.sha256
%e5Wqan0RS/ZHzojHpA5Zx7NpglZXpN0cv3vhL5KDG94=.sha256
%NY5w5Ww5TleQREM4HRy9g19TaKmMGKt1NbVQGaUHxVk=.sha256
%u1eL84EzaGs1NCVbiSq86g95cnfTsFrAXCOirQJJF7w=.sha256
%KVux1z1pvxAjkP/qhICV0ZFQUTKUGs9nNSsAd+H+0/Q=.sha256
%vYyGQdxVrk8vFchs3Gyibe+aK/SzwJU2S846pt5EhfM=.sha256
%5JfrChlqfOds4Os5wrMs1CISdstIFRanQHkvSPTQhfk=.sha256
{ "type": "about", "about": "%NX3k4yXTPio4kDo2GLf8LKMe7EWjlZbIUkHZft8QCbU=.sha256", "attendee": { "link": "@6CAxOI3f+LUOVrbAl0IemqiS7ATpQvr9Mdw9LC4+Uv0=.ed25519" } }
%P/reLg4CIrWTuAgWH+aZWGslOTdaD6kzJTfLLQ9O74Y=.sha256
%kQc/nDjwGwAZiWDHlWdGMT7laIZ63obpkyc5sGUQYa8=.sha256
%uawDHXBM225ssNNSj49IHfaSDE7CqmnFU56YeUY2gWU=.sha256
%tmCioxVTuGvRM6RWrv2cK4oIsjWbF1e7lnwekr5cACY=.sha256
%hLPTaQdZPCZP9bvKN/msQPheIjAIaKWwr2KKbumIzuk=.sha256
%x/2r1iX+fiftYn6/VqMENeF5qfefQJPMF/qyHwEzLZw=.sha256
%U9pJEaWErOiqMMhSDyClV/K15f16zg/m+r+0FdL9qZM=.sha256
%mtgQOhQuMAr36uSYrMeD+0MLTvAIqFLC5bGO06CaYDs=.sha256
%mv+DyQVNjjlUFqTIAZZ5ICoHFshQTdKxZKXRx9JjxhA=.sha256
%9b2b46LwnZh3Q3CznamCYQaSljqZrRP0sUmAB+oKKes=.sha256
%aZCf6qAo9gvmmRSEZ9RchOuDCG8e8oSE+gGiKXCsfOA=.sha256
This is really amazing! Great work
%6ltmEJL9Ire2THHX2U8ksKAkWgbvPYQv/JW9KjFSDW8=.sha256
%J4T1FiUtM2cmJ8m+6rL/gAJhoh8jAXFvMRztBo9N2CE=.sha256
%4ClXax2z7BFUgCk4fZJwI3BVQxmFckaxax12RImohwI=.sha256
Sure, why not :)
%8cibGWBYW8mqsX2HWCzlam6gOch/cUmKKaG036ounkk=.sha256
%ofY5iBKBKKuHJfnl1Z2E5DD1rcsMEZI6sos7n/g11Kk=.sha256
%sOJMdCaRy46efHk4/zUF259YF9L2cGxf3HJhBcWVoQY=.sha256
%yDrEew3LDCX195QP1QKn+aJ4KZleSzcYg6bcEQQYa7k=.sha256
%mqpZbqpSwDTG2zti1afH0ZT4xTKWhyvzoQIbzlp6zIQ=.sha256
%ngeqqbfgb9cw30D5RgZ7iGjiPb3KG0frPHW/DGo/Txc=.sha256
%rjVA5klxP0PNCS3Oh2KREKxjZAgN27VhL0APNnZ4tgk=.sha256
%8bnMCosdlKWHZq8MCvmKhJMXuW9lX+3W7BVR23GAZ2I=.sha256
%3j8bYud6cisUQ+IhJAbL1X3FnqfapH2u9vY36d6vt4A=.sha256
%+LE1yODC163LCDgsWyIbWCjUHc63geWLCwGy/W7IjCQ=.sha256
%zVLoRAWsU7QJspE9J9VPLGLqnYVFY5D/VYLb4PIO+M8=.sha256
%UJYSHJ5x6P0PYz9uC+aCDQv0dQqAXuKv+Hux31fvAm4=.sha256
%uZlStAbgzJGV/KxUTVbOlMAnpJv5kH0BBJc0M+tc9bU=.sha256
%cg7UhauPggfW5WyJ3d5va1Hc05624SbMbyDFKmVsFC0=.sha256
Thanks for the recommend. I skimmed this when it was posted in Martins patreon newsletter. I'm not very deep in crypto so a bit hard to make any kind of judgements on the paper. @keks might find this interesting.
%fXSQ4GKqiIZ5QCoV3so5AzqI0X944GqFu7D1Zgo9fI0=.sha256
%ng2DSGoT3dpyz+LEHEHZp8ZKnjZSsZGs4qBRZxyarvk=.sha256
%H86ucFTBqDDMU9+pPb3BK+7S9WHwd4koB26DiYNf3RA=.sha256
%WiPmYzio3xnWhLV5/kx0rCDNrHXZAM/qLQIG92JC3oc=.sha256
%XnCLHNsiEhGmZzmJagOdQC2rz+maMe1ElKgNkkLhBvM=.sha256
%qg5LEzfOc/T+yGkWC0muMshZIoC/f/CpQCsczpPcOdQ=.sha256
%tm3iR+YQt9WY4wXXrYNlTpYvOiMufZpHwcBvHvmemho=.sha256
%8nQSaRiIlcUZISmNO9U9lRf2Hxfgf7+FI3eRYbYIHN8=.sha256
%0SaNZVez5MFk8rX0F1gPIyKAitqKgPKVkgk6OrmXGF4=.sha256
%bjXiuuejRuRrm70Kfd3oqJEunAuBTNutbbf8E8mpr0U=.sha256
%x0Yq4mAqgJLwxqY2eENDll5v6oNM+uryEXpCMCKRjpU=.sha256
%t1lOcN7Xd/s8OgHiBySjztKQe25u3FosKNKKQ6XKs3g=.sha256
%O9Oi8Kw7aJ/IBsojFLX/TdczVe9vtZHsey3jHqcL+mc=.sha256
%iRB/RCD2fPhY6GP9+kuQQXMNjbYADSE9tq2Y5iLW/C0=.sha256
%+OgHmg7yWLscF7Gb3FeMcLNA/Hr98WiHC0EpS34MviQ=.sha256
%PaA1Eq/rdnRIFElBM80fi54kwE9Xri98Gea1Lb4+reY=.sha256
%PBvjTGtJcqFrh+ErEnvgUOO3DgTV2k74RCeDx2M2mM0=.sha256
%J4eJQPP7zn7w95I4A+yHyTbvxmXcClDcwzJgWNRyxXo=.sha256
%KHo0dl/scxwcmvfVwQanv28AQaTyXcqMDAl8ea7uMPk=.sha256
%yxHiQscgCpsOHR2lhULq5QTeyoJMRIZJsojiIbAAg0M=.sha256
%kjXFjVCsw31FlZTpBvE52eBxDls4HtvmU1CExqCNomw=.sha256
%NzMUSP4hveZ23XQuqjS9NoGq2b/cvto/DfwO/lNFeSM=.sha256
%Elpt1zazcFXXh6L4d+afLloQYVTK4geAbnch+Gvke4w=.sha256
%S1f5dTgC/9ENQo2fZ631D6YPe94J7reEsx9PV8olo3I=.sha256
%/UANy7FssXXbyMiYbfHNE/ly2lQbVvQ8QWTYk4oFBY4=.sha256
%nt8n+Lq3Wb/ZP4lefaF6CGeCyHsdTvvhLi+nURzN+SY=.sha256
%gQcus9/A/YhfQAjh9zczmCekBnnT0JhpgrbsGTPL9Xg=.sha256
{ "type": "chess_invite_accept", "root": "%UVD8bZhIyO2Fp+B+ImH/a58HMpcZn+Z2I7DTbT/jgHg=.sha256", "branch": "%UVD8bZhIyO2Fp+B+ImH/a58HMpcZn+Z2I7DTbT/jgHg=.sha256" }
%Zo1N9ci+J41jINOPUrel0sNIvJ2aofORxlRH74n3Vwk=.sha256
%sTr7/9Nnh7mv7maXoH7irB7V9p8+8O5lSZQVZ7C8Yo0=.sha256
%qBtqswzJ8AELiNY6IA8KeEej6UR/bef6lNojtNR0mnk=.sha256
%n/hR+IXgXcdjRbF5gIbvLVPYIQJaAF7hp+lU12FrGRE=.sha256
%bX0fbzJx0EPWNtvIi6LNjgTqdNnniEOzYC+RPGRnpHY=.sha256
%mlWhAYhPfKCYmgLXIHuBkOYlIDgyLHhemzXHFBvYdqA=.sha256
%eME2TK5v6PcMCT8iOXeVqbGBJoG6kgUNbvw5Wnp9Y/4=.sha256
%rpSqqfgW5udGic2vMl6J/bEPmnblNUKhENHujmA3vnI=.sha256
%lURW5icLsqaQ9SGgziuK2pDUug/HqsWej26sAu5Ko0s=.sha256
%r/9FW47lA+E1K2NFhgDjAtcgGGTHVmr2QlRcQiV0XYQ=.sha256
Welcome back @happy0 @Many Gordons! So glad seeing you active on SSB again. Feel bad about you feeling guilty. Would like to take you up on your offer of a game, but you know that I'm in the top 0.01% worst chess players in the world 😏
%ekIK+GCnetASarEJ32yV/WtUeydBiO55Vxx/IaqR5hI=.sha256
%JmFzryhShhRh5bOy6D/POxBgATS5ryQylPtEVFHtrk8=.sha256
%2hff++S3XI5Fc0ax3QMdUcydDTbQG1lanLERUIW5Dqo=.sha256
%IMXzGBcwgnaSxjD9w/XRVw+mVN1ajXzCZBgfg6+e8+Y=.sha256
%zF+UHNUownBRPulhTgXc4rTDJRvjhLWD7JuZCA+r0Ag=.sha256
Seems like we will soon get a new SSB flavored card
%XmXBjpGm4PQzTiz3lBRF3C8S7n217/Xzq+RjoZxim44=.sha256
Some updates on this. Had a call with our security audit team (@keks & justin) and we discussed using a special feed format for meta feeds. Meta feeds needs to be stable as it can outlive the main feed allowing feed rotation. By using a different feed format than ssb classic we open up the possibility of implementations with only binary feed formats. Also spec'ed a mini query language to be used for describing the contents of index feeds.
%30SoOhPu1s1o3I/SMn3QjocbIhx+DyBRINrULzRNJU4=.sha256
%qfw5+xd78LSc8Z5QJqj/2KJH3qA46kCja373mAK6ebs=.sha256
%oiroePcTH8r52zC7NjMHF8b3QOK2WiZpuzF6J1YNINg=.sha256
%9GTGCoq/UzpwVFWffBLERdhYXt8Clre38H5GFchCDDA=.sha256
Biggest diff in using browser core is probably that it uses db2, so all queries are different.
%F9A0CNd94NbdScE7YhVjRDPeh7/ekcnfocVeH1oQKt8=.sha256
%LTxSdmJvNnaK2Blz//QmsW228+OALQ8lTjablVtvvhE=.sha256
%UA3xHp/00XRJygadlSMwCnYueX274j5RTdjznE3TEjQ=.sha256
%L7TxELqKdX5ao6rTxIk/FJXYeajU1vUMjnlIDkR3Ciw=.sha256
%EJaGYjIis5edzjVGg5r+WvqKGpbGFtjDxmOBWSd1f9o=.sha256
%7lwouOjYUV6dDS4jr51VctrRedsGy/dqcx8y32qdtF8=.sha256
%+YIoNFVjRuZmV3dDUnonPmUh+QtTc6DUTKzxp5B815M=.sha256
%csRkUfjfrDLWaW4hZKBUg2HjVMUMuAsu7ULz5t6cSdE=.sha256
%Eyi1gjjd2Ll4hq0oAui3+bxQlOQD5Op44T7vTV1wVXc=.sha256
%8jnM/Vp9JB9rHb3XYn2NLLxTBk+LCDqTAzSs5DJVavs=.sha256
%kmISqhtlM2HHQeuVRbNkFbWA79dxyxvybS7hObTldGE=.sha256
%mBvhK5K/jfHjqGRbgWNG70DfC1pTKKN6evJA5t6psQg=.sha256
%IYx4fcikLCfZw+snjj4Ilv3isSasY6tYFTNn/j3+uIY=.sha256
%YeTuh6dXFyno+jchsCgus+ZyeojhNMQohKTdzGhZWRg=.sha256
%0/jc2zqyHy/zrPVUAOeBYSbGUe9+q9nnByNYHIGmhp0=.sha256
%ScTYOx+pNkHhtyu8Mn+wUWLSfAYrJO+tmevNs7OCC6Q=.sha256
%w7YHLjNhwk4NItbUemzm2Dn0u6JwHGuW2XYZSqVXBuM=.sha256
%M9tHeqSZthdl15da6854VTpq+Cy58rbAYz/DGH1Hhbg=.sha256
%hpsqAeOUEEAUkB8gcVxP01/srL1jO2oQLprRqSFs0qc=.sha256
If we were to think along those lines I think it is important to look at what people could steward that process. The obvious candidate for Go would be @cryptix but he will be working full time after the ngi grant. Maybe @cblgh has an interest after becoming go zen master with the ngi grant? Less clear about the rust situation. Maybe @piet? @glyph has been working on a rock solid validate implementation for the ngi grant.
%7k6zsuuH/KoEoL04XPhWfpTNO+jo7gNuKN8RiXzxhQc=.sha256
%jyiJZ5uNpnZPJi/fCw7KTuoOo0pEQzHmnS0Ym5umyTg=.sha256
%4DygkDuxIpCBxSrGBVyEqwuB9QUoD3Vy4YEvSalvqcA=.sha256
%nKpTRBeCCCSK0R6LSs+nGx1rIirEVCEn0mWJZpJgCvE=.sha256
%W5UKcxKXNDTxnU2QpEULcb72NPrwp2GPWtdsf5I0p4A=.sha256
%zHu3ngONLFcjboEUHCtX8HVixz9Kjq52Ia8I6UXxxok=.sha256
%LAwvE+iey+OU8oeC2VOVIRKyrdyhTKBevbAuvYXC/jw=.sha256
%+XWWol/ytK1tqaLl2wRf1/2R1IRqhhMFoQmniyc7sao=.sha256
%OsfgcEVmiQKB75rQEGdqZ4h+tDXeD9RJB2u/CWbMsXE=.sha256
%5qFWpx5fpTbG3kN3K1Jt+UJ4YLlm8aoAzo6zKLXd9WQ=.sha256
%MoGxA8uKmVyProezuia6LwVRaQMJcuQ/4BzFP7t3hKw=.sha256
%h139/e0DajFtIeYNtFCuzerPYs/Bt2FYKDtSN9V3vU0=.sha256
✌️ 🌞 🍕 😃 😄 😏 🌶️
%ZdP84k6zDyXPDZnM32DKgyNortsNzDyJcoxo3FTVJNQ=.sha256
I'm loving everything about this thread. Great work @SoapDog (Macbook Air), patchfox is really unique.
%ATdFyUfbfzItBksFvEl3gx2Da0qvjamaTnz4sGnt/Qg=.sha256
%aIcOaE4k2nc/wLo51ranyIVDjG4FVu4E3HIEfNxvIbU=.sha256
%Qb3tuzUgCwADyys+btWDem+GLkt8FKLEMiVhA9uBDOM=.sha256
%1bwaBnwhTPUmhElPeDF4fHg33OoFhuiBRhaNEh/fDc0=.sha256
%s+pjxisNMlOapZLnqteIy/ffPYsmWlNZDQbftY9cJ/Y=.sha256
%xQJY9QbUnJ0GuriBe6lOcG99Wxu3uMrEWWRYp0U9ekE=.sha256
%CIk31T0plD3b2cqT0uVBl9JWkpKoZSjTD9t3t/a0PNI=.sha256
%vEFXoLLyosnmQV3EfRbhdEv6CnbtDnkF8/EjRc21FQg=.sha256
- Started working on meta feeds in JS, just the messages, seed values etc. of the spec. Feels good to be coding again ⌨️ 😏
- Extracted the core of what @Mix Android and I have been working on over the last month for the fusion identity spec. Still some things to work out, but I feel it is getting into a good shape. Scoping this was quite important otherwise you can spec this thing forever.
- Supporting @cblgh on the network simulator and @glyph on rusty validation. I'm so happy working with them, not only are they excellent humans they also produce great code :)
%0FqETcEsRcUFgs/YeezUfRhN7U3/26qknV/dPJ6zLrg=.sha256
%9JmagRsl/QKBkCOq3OsOdiVJguz4iXSQsy5Kg4fr/2A=.sha256
%hDVm8Q1KmPyBuD//sLqIZyov6FCd4XAymXhDK2RbGCI=.sha256
%4CXxWmNM67q97c6hEU55cDJgp8m6wHiGvQvVVjiIb+o=.sha256
Yeah start a ssb-server2 project sounds like a good idea. I like the idea you posted about using ssb-cli for the cmd interface. Then ssb-server2 would just be a collection of secret-stack modules. Since both #ssb-browser and manyverse is using db2 we took care to upgrade the different modules like ssb-friends, ssb-conn etc. Happy to help if you need any help or have questions.
%iBFH9VoIGVhVDNdyvElbIvaJRf4Xu5yAfIYCjmbjEqg=.sha256
%B4M5SeOjnky2jWNQ9S77kl4LIKylwmDye7q2FY54oTs=.sha256
Wonderful. Glad those old posts can still be of use. I'm betting adding images will be a lot easier as you are in the browser directly.
%rfslRqT9ezu4AbBW2ON5S2rIR5t4qrIpe36ox6iwC8Q=.sha256
%fW/N3nrilyBDossF1Hg1XOibP9TAbqeVoHi5VKIVWP0=.sha256
%J9nnrcvMHQwRmWDeOplpn3RS+l5BRtwX7bXVT6X/3II=.sha256
Should new work start from 15.3.0 or branch off of main?
Depends on what you mean with new work?
%PKVqUrQm7cmrbo0EKueoYhCIt5AyVBteTEhTFWs+at4=.sha256
%LeKUm/vv10AMoDAb8Yx0+bNRqdB7xn2NYUh9FZfttsI=.sha256
%bKIgrMmed1hlWfW8cOFswcwwbdS52sHEruLsL6HKUcA=.sha256
%9UNoFXT0Fh4JvdskT/6yt+lXzhPOfqn9lwOQM1Rx71Q=.sha256
Patchbay OC also has some money. ping @mixmix @Mix Android. Maybe it would make sense to combine that somehow?
%C/YgVx5D2neJgat3xziWLyTHjR91P4g8G4YabY+N9e8=.sha256
%7jsvblAugLAKcLxDh3Mr/JOLDsiR3J6V7OUO/J0dTrE=.sha256
%n36/UKGUS/6YzYmf6WsNwuKYlfVEM8W4AHJjlaI9sBY=.sha256
%8qA03Vu0jcS3m25iBXc9SHovCPZgJNmyKAq/pzk9O2o=.sha256
%6abY5q9zC9kQKYnumXQBECIvI6eZJX5HLF5SK0pGCTw=.sha256
%Gae6d7H82mUiZ1Y08e9/uMJeC1TSxuLKTQxOrKnd5PQ=.sha256
@abekonge.often yes. In essence there is a big difference in initial trust in those models.
%FLlRmouC6PpGj86N4r5qb4E2QJCyRmt92+WJouR5ZX4=.sha256
%gwAJ4rzmM2SYZBR50Xr3344eU1MihADJe9uSSRSTG0I=.sha256
%ZDqefHu/zr1JgoMGujabBTja+ESLXmHzPMqp1dG9rpo=.sha256
%fHs0xANdWhsIO8Ef3KkeI+Ot6ldHanKZbDXCjTpX/SA=.sha256
%V3+Tj4/woYEYAnGjysFTfw8QHb/rF21z9Szq7Y1GZ6s=.sha256
%rM4nfORTsMha3/Xcwc1NpjjEbRZv1Ak2F4E8438HfGs=.sha256
@abekonge.often I like where you are going with this. I'm wondering if those two circles of connections and messages would be better build as two separate apps instead of trying to cram it into one.
%CmUScDlZw9UoUKpo+ewOnxPz1R9qqK/GWaLZW40A5yg=.sha256
%tZ98PdTDZ+O59IWJauf2RfXL75Qzrp9+JE5LO5wgmAw=.sha256
Went to a demonstration a weekend or so ago. The demonstration was against a new highway that will run over a island outside the town I live in. It started with talks in the park and then we biked to the fairy that sails to the small island.
Was wonderful that it was an event where people of all ages were welcome, so we went there the whole family. After harassing drivers all over town by blocking the crossing roads (300 bikes does take a while to get through) we ended up on the other side for more talks and music. All in all very civil, no cops :-)
It's interesting to be alive at such a turning point in history. This is at the core of the climate crisis dilemma, should we continue as normal and destroy ever more nature by turning it into concrete? One way or another we have to adapt.
%hO+N0gMy3Eu8EiOnw79L4YFs4enabQa+iVZGkWVQCng=.sha256
%495OuS+zOBlWObpqrV9nJxgE6eBRPjrMrj0KsZQh+T0=.sha256
@abekonge.often SSB and hops maps very well to a mesh setting. And as Luandro said if you are on the same network then you should automatically start replication, so you don't really need pubs and I really love the idea that the social graph would map very well with the physical.
Then again it really depends on what you want to do with it, if you just want to do SSB (like patchwork) app where messages are async passed around the network and eventually end up where they need to then that should be pretty much work out of the box. If you on the other hand want to do something like being able to do an audio call through the mesh network using SSB tech on the transport layer, then that might also be possible. Something like sending binary data over EBT (which does a spanning tree in a network). Could be a very fun project ;-)
%p2fWFmHdEymdTcWrljQF1tdyGfGDRl7ROzecihVarSU=.sha256
%3e5fp2dPWcRtK3j0TXEMnIsDh6EZa82AjMwdvbkNp+U=.sha256
@Luandro Pàtwy db2 is just a database so in theory it should support bamboo as well. We didn't want to tackle bamboo in the first part because you still need to support the old format unless you go total greenfield, which for some applications might be a good idea, but was not our goal. That messages are stored in bipf is just an internal representation to make queries faster. I like bamboo very much and would love to use that as a feed format, meta feeds has a way to encode metadata about feeds including their format type.
%5hItFCx9seRgLQaARDT3Y6KLIy82x/h4vz8AvsEvNqw=.sha256
Thanks for sharing. This is highly relevant to the fusion identity spec. cc @Mix Android
%s+E53/nqW4nyjJ4RoXMCT8J3qAuS+3Hw6Padey4RykE=.sha256
%tJP9c9/+oW308ZtffT72ILch+O8R1Zq/xRG7HxS/mkw=.sha256
%s4bPLFSG96EgXxv9i3lHXyY37DW80jXeM8RQwTDU2wc=.sha256
%FWwa58DECHcDMmKLW85x3yNRvvu4GIF4lXnFzSp9tXE=.sha256
%eoqQ+jif1Z4g+KKVN7w+0qlUss/CarXstkn4oCjc0Ic=.sha256
The secret of Scuttlebutt is in the soil
Another t-shirt design coming up? :)
%/T314GIY+MRHy/6MQiKawapyHgH8/7pBT3hevkPAKnw=.sha256
%K3xj2ujydYfvEj1AzoUnyrVBT5FZMsSVIdpz2WZewIY=.sha256
%yMTemm1YmnVpnFX1M9AN4RvjOE3kV6JquH6JcZNOnzQ=.sha256
%9uXb7vFT0ISf+LLAWZ964uh1Nim3gLsMaocR/013RLc=.sha256
@Luandro Pàtwy first to answer your question. SSB has always had the concept of OOO, meaning getting a message out of order. The message is valid in itself given that it is signed by the author. Interestingly if the messages themselves includes references to other messages that belong to the same subject (tangle), then you don't really need all the previous messages. This is what tangle sync is about. That is one form of partial replication. And if the messages are completely independent then getting them OOO style is completely fine.
Regarding message size I would probably look into bamboo and bamboo-rs that should work much better on lower powered devices. I believe @piet knows more about this.
I also remember that @cft had a fascinating talk on a related topic at the Basel meetup where one of his points if I remember correctly was that because the messages themselves include integrity, you don't really need it all the other layers of the stack to make sure that message are not corrupt, arrive in the right order etc. Can't find the slides now, but I'm sure he has something interesting to add here as well.
%roKx6Cvu26cVjF/kRp1XQ1aLCTiGVL/+xI083rBSkeY=.sha256
%ZqGMyoHIPNIqIX6yu6A0HQLmw07JLJoWONBbOdCgdFQ=.sha256
%I/3Aci5+d3ZMKGFSjH+Emmalgrd9vY8SjFNnS5iZHYo=.sha256
%uFjAzw8uI0BxFMD1wEfOy/drpyt5T7m2cCikBqylEuo=.sha256
%6oVWf38+N2sRoIiaYcBCXtYWLufqL84cJWGVimAR3JM=.sha256
@KawaiiPunk you don't really need to install it. It doesn't use your main ssb folder, everything is running inside the browser. The easy way is that you go to the one hosted on my pub. You can also run it yourself so you can verify that nothing has been tampared with by checking out the latest version from github, doing a npm run build
and then running a local http-server from dist/
%Po0s53Ltc6Rra0zZhgE/tHfVJqPo8cfGUfdUaCg1DME=.sha256
SSB browser 5.5.0
Saw it was a few months since the last posts on #ssb-browser so thought I would write about what has changed. ssb-browser-core has made it to 10.0 with the latest release. Browser demo had 5 releases with these bigger changes mostly from @Kyle Maas's Development Thoughts:
- DHT support
- Add pt-BR translations (thanks @Luandro Pàtwy)
- Threads (like a forum) view
- Add full text search
- Show follow/unfollow in Profile and Notifications
- Display blog posts
- Groups filter for Public
- Show thread participants blocking you when you reply
- Synchronization progress bars
- Add offline mode
It also has some under the hood changes with new where()
syntax in db2 and performance improvements in jitdb. Very happy to see @Timothy Bradley contributing some great PRs to some of the lower levels of the stack.
Wanted to put that version out there before we start working on proper partial replication.
%837ktGKsbmhsSAZFA0W9oTfonplhlfO0IrOj61jCZjc=.sha256
%HJGEXNZoYUPISjJc120HU/QYBCXXcn78f0L6P5t4eM8=.sha256
%TcfOElKrz9FZEzX5Rg1g0yf0UI4tD98RmHnw1YYludc=.sha256
%bUXQ0qcGcGbkFg1sPnBSndwUW20X5Sf18ijBU8POKpc=.sha256
%D1iydtOFqIU3qVGgqlEzC4H9l/TMyeuhz8PJ3okQMTg=.sha256
%BQI7+QelKhRcqmdfFcnq4SFTuPEu6O+SiFgYaTCIy9o=.sha256
%z49b1TKqu1KOI6l4Ow+TgLsOZbXY+HfLrjN42hDKk2c=.sha256
%j80X8HnDWT1DWLoEHuRANIPC980UcjveMPxtMkz9bC4=.sha256
%eYqNB4CbA0Cx8UOD1vqScvZ16zZlG6FH1Y5X8Kvhi5U=.sha256
%D5x+qj4QK93xKCN+S028x5pgAxkU2jmXt68BAde/0j4=.sha256
%FL9zGLyA1sdDb6fWC3UCrPU5fneXugBxtCokbqxJNpQ=.sha256
%iglx3L4x4XqgDvKkS97iPOBEO6nxadotQDpgxUIb5r8=.sha256
{ "type": "about", "about": "@6CAxOI3f+LUOVrbAl0IemqiS7ATpQvr9Mdw9LC4+Uv0=.ed25519", "publicWebHosting": true }
%holpNwJzcAlaYiIV2uqvD6hyTXKY66qz+iplkkWo00Y=.sha256
%Z8zhXeHQKZK3mKkk+6vDrC3i49bVTZK9d7o9aS0dCDE=.sha256
Made a PR for JITDB that improves the performance of prefix indexes by up to 10x for queries like getting the latest 10 messages of this: and(author(x), type('type')). That query is now 15ms on my laptop running against a full (1.5e6 msgs) database.
Had a call with Mix about fusing together feedless identities with the work done in Ahau on identities. Very excited about this. Seems like we'll be moving forward with defining a proper spec. Notes from the meeting in case anyone is interested.
%Hm6J0cENLtl2grKQF56sOaN//srPKsI+x5odhMMnOGg=.sha256
%z8+8fH+iEK8TTP+E7Xc2pmkjLcK0pw8LEtJadJRcico=.sha256
%9HtK1STqkU80jey2yvr10+67NA9JLvQ1NRahhyQYqSg=.sha256
%PTkyxZkVKLojTLvvLlVde596fCq2yx2KPL8dXOv2WjM=.sha256
%EA3okOSohLqRPzEVsGzIq1I88p9kVku4mSuBbCb/AXU=.sha256
%SEkem2D1vCkC3YTsMISBeL4P0mdS4zcc1AVEsGCLwqE=.sha256
%5MKaFRMitFHFau03tv/kinWbuzLxDvWy1AJFpmQ85s8=.sha256
%FDaFduuHmzALgdHWu8cvWwzPHPcDRW0dq8mlaE3Q9r8=.sha256
%3nqis5R7iNb8oLIZaEJwo5P+9p0YrW88MNPb9OaGPds=.sha256
%9B6wtjd2j/1fHhYdZK+VTGWQATwzAhfIgUowVNWnCQg=.sha256
%MB8/Qr/z8llnMAswksFGsperGdFAJDn5mXxylJE2JyM=.sha256
%7UAc8Gd73Ev9Oma5gfuNaDcOAMavXCT7w0rf+dO55w8=.sha256
%9ZGtkLhg6bJlwK1tXRV/0PaVq6WG3q+zHa008pGkc3o=.sha256
Thanks @Daan for doing this last release 🌅
%YGBqrwEk7SG/WSgYK+fznp480je/wr1nNCQl+jnhke4=.sha256
%1z54Qe+Y7ooxnxaVUSRWsa8kHdAdYA++21IIZQIrc2k=.sha256
%oFF/4h3VHswxKmRnI5HRuvZRqj+Zt+C7NHWKvME/HU0=.sha256
%VT8cjlIO112ijIdXekeM45u6mRoRjLlIBOFABcY4Y3c=.sha256
%B3PrukqGIrSA2LeEQJiZ93eMqzRW4k9wc8+oLHcARa8=.sha256
Yesterday was a good day 🌞
Don't remember if I watched David Graebers talk on From Managerial Feudalism to the Revolt of the Caring Classes before, but I read the book a year or two ago. Good stuff, can recommend the video even for people that already read the book as it gives a broader perspective.
Also finished reading The Power of Partnership which deals with partnership on multiple levels, from partnership with yourself to your partner, to children (if you have any) to your local community and national level. It contrasts that model with a domination model. The book is not too long, can recommend.
%GEPDwm+rfSd+IomrqMb6cc+6TIixOV/KrCBjERbnc1c=.sha256
%vlu7k8pI1y4Uj2xqV7pjKlYqHdv4XbbE84/kvmWFtTg=.sha256
%a8UMjhSEqBkEybblYwrVlgd55BGKLUlqacSzu4lVl5Y=.sha256
%vDfWVzl1rSwg5AO+6eMeBrcH1ZkFsbfXb55E/ABs410=.sha256
%hnoBTS8uEbosY2Hm5ZX+g+GBSP5OxeTk+Vi0ZvMAm0U=.sha256
%1B5gHVDXE1IlVE+BM/DLSQdxQN0nabu1bd/7Oyd7YSo=.sha256
%kh5jILOEI/jvXUgHSyX6nj/fcV1wOM3h71JCTYW97P8=.sha256
%ZjTQze3Wde4utpGiQtwGqnT1kq699bd9whjUPuypYZg=.sha256
%X+sZYBPxBZv+4THpyCGtEMiLnEA178UpbEiNFVGF5+o=.sha256
%muAH6yz6MWkhE23AhrTCPOAoxBF6rE1gcFGgj514p44=.sha256
@cel-desktop thanks for the write up about DID. I'm trying to understand how the system works, so bear with me ;-)
If I understand this correctly, the alsoKnownAs works the same way in as the solution I proposed in feedless identity in that it requires consensus, right? Also is the mechanism for revoking roughly the same?
A controller is expected to immediately revoke any verification method that is believed to be compromised.
%Q89rqGLB7V853JkpNbX/umbeZBZbrI1/ksov4ilTzZc=.sha256
%jk2CAUwGS3NXf1l8R33WWfYuA9fi7OwNGxlXGWuQrn0=.sha256
%uObMm2GvQoxD5iydggJEN7MBNRHnrR0hKaN2Hl2NMBI=.sha256
%6s+RFXv1Ps2Y638X2ZjncjNu/2CMi0kI8GqfMUqA8lQ=.sha256
@Timothy Bradley both meta feeds and feedless identity requires mutual consent in order to be linked.
%sbjC83hdbB6qHZFHzSJRxCeTQXM3JYf6KvOpny8swUE=.sha256
%TP+GmGAa3Hl0UX0OgvKiOShkzufVw6YFYwjnt3VoNqs=.sha256
%vwMi2ZtQuOAdUjerdPjbDY6/NhmUoXitkA3RC94+0VU=.sha256
@Mix Android I'll leave some comments here responded to your audio message before I forget.
- Tangle: it already is :) Might be a bit hard to see because the line is so long
- Authorization and private group membership:
One thing I like about the solution above is that they behave very much like ordinary identities in that you reference them by the id. The ID can be compromised, but again this is not really that different from an ordinary feed. I would argue that we have a stronger model here because we have tombstones. - virtual identity (cycling keys): I could maybe see the argument for being able to cycle keys, I'm just very afraid that going that down that road will lead to a lot of hard problems and edge cases. Like what happens if two people try to kick each other out? One thing that was important for me with this design was to keep it very simple to avoid these things. The question is if its too simple. I would argue that what we have here enables some very interesting use cases that people have been wanting for a very long time.
Very keen on having a call on this, but wanted to give you some more context first.
%xrF82rGdoZ8s6v40TRABzyfaz641x/6lD58GiPuiKbg=.sha256
%ql7L/PvDoWFmx2aQPxW3uHewwoHyf/VKME6SRP+ZWLY=.sha256
%G7lJtaqmaC3fIAZiIawu7kR2X8GYtSFBpWjVmTYUjCs=.sha256
@moid right, I didn't explain that very well I see. The syntax for indexes would be like this:
{ type: 'metafeed/operation', operation: 'add', feedformat: 'classic', id: '@index1', query: 'and(type(contact),author(@main))' }
So it would be specified in the meta feed what the index covers.
Tangles are a bit of a special case. If you want to exchange that between two peers then I think a better option would be to use set replication. I did a small talk for our advisor meeting about tanglesync and also wrote down some thoughts here.
%w+lPQ2qgP1bG3d4M/28HhqUUJr0d0n2eb74j7qQoWzk=.sha256
@mixmix @Mix Android would love your feedback on this :-)
%bwJIDc5qP6j5uNSeJLB0WQGSNOagswiel6ZLMcHu3KY=.sha256
Feedless identity
The idea for feedless identities and the name came out of a few conversations with Andre around meta feeds and how we can create a solution for same-as.
I should probably start by saying that same-as is something that a lot of different people have been trying to solve many times before. So with that in mind let me try and sketch anoter solution anyway ;-)
What we wanted was 3 things:
- An identity to refer to
- A member protocol including a way to deal with removing members
- A way to send private messages to all member of this identity
Feedless identity is a concept where multiple regular identities are linked together with a specific purpose, such as belonging to the same physical person (same-as). The identity will have keypair that is shared with the linked members. The reason it is called feedless is because, as the name implies, all messages related to the identity is posted on the feeds of the members of an feedless identity.
Each identity should have a feed containing messages related to feedless identities it is linked to. Each feedless identity works by consensus, meaning as long as all the members of an identity are mutually linked, the identity is considered valid. Any member of the identity can revoke the validity of an identity by creating a tombstone message.
To create a new feedless identity, a keypair is created and the identity is announced:
{ type: 'feedless/create', identity: '@id', name: 'arj' }
The identity can then be linked between identities:
{ type: 'feedless/link', identity: '@id', from: '@mf', to: '@othermf', tangles: { feedless: { root: '%abc', previous: '%abcd' } } }
Once @othermf posts a similar message, the identity is linked and the creator of the identity should send the private key of the identity to the new member. Messages of a feedless identity are tangled using the initial message as the root.
The identity can be extended with members by having all current members linking the new identity and the new identity linking back.
Any member can revoke the feedless identity by posting the following message:
{ type: 'feedless/tombstone', identity: '@id', tangles: { feedless: { root: '%abc', previous: '%abcd' } } }
Once another member sees this message they should also post a tombstone message, this is to make it harder for an adversary to try and keep the identity alive by withholding new messages after one of the identities has been compromised. It is up to the members to create a new feedless identity as the existing is now considered void and should not be used.
Lastly the name can be changed in a consensus fashion as well:
{ type: 'feedless/name', identity: '@id', name: 'arj', tangles: { feedless: { root: '%abc', previous: '%abcd' } } }
A new identity added to the feedless identity can merge these messages by including the name in the link message.
These feedless identities thus act as public groups. They work best for small groups where the members should be publicly known. For larger groups, private-groups should be considered instead.
It might also be possible to operate with identities where instead of full censensus only a quorum is needed. Imagine you have groups of groups, where instead of having each member of a feedless identity ack a link between the identity and another linked identity, you would only have say 2/3 of the members do that. Another thing to note about groups of groups is that in the consensus form they end up being the same as just a group of all the individual feeds.
Messages to the feedless identity should be posted as box2 messages. There is a large overlap between this and private groups implementation wise (keystore, reindexing etc).
%Si3HEnJtZqosFfhHVrAbijWrxcGSeH/MB7hjVHCoiGU=.sha256
@moid exactly. Where it might make sense to know the type up front is for index feeds. So that is very good feedback, thanks. Will have to think it over.
%4GfqfGnnzNM/m3eQIF2v/QSt6ZCjsxRY5s7o5W1wq4s=.sha256
%7I+DnWpq5h+ryIuZ+fVeME7qcDPqjDgTnnaWSoV8y3M=.sha256
@moid you are correct that the applications feed is a meta feed with another feed format (bamboo). I'll change the name to feed format. Thanks for that feedback.
The example could have been clearer if a feedtype was added I agree, yes. I'm just wondering if we need to specify that up front or if it can be deduced from the content.
%aWJ8ANr7veK/SP/t3AfNOeo29s68EIpqi8J61a404Fo=.sha256
Did a bunch of work and thinking related to ssb meta feeds and wrote a post about it. I'm pretty happy about the current state and would welcome feedback before we start working on this next month.
%FsOuR9ov9tvpiMR71wnKvCw00B6qfDpZO8UbCFQ2IE8=.sha256
SSB meta feeds
As part of our work on the #ngipointer grant, over the coming months we are going to explore a new concept in SSB called meta feeds. The main idea is to provide some more structure to the messages of a feed. We do this by creating multiple feeds with different purposes belonging to the same identity and linking these feeds in such a way that other peers can find the data they need. It is important to note that all of these feeds will be tied to the same device in the same way that feeds are today.
I highly recommend watching @andrestaltz talk on this topic from our advisor meetings. Also the latest version of the design document for meta feeds is located here.
Concepts
Meta feed
A meta feed is feed where the messages only describe other feeds. These messages can then also contain meta data about the feeds:
{ type: 'metafeed/operation', operation: 'add', feedtype: 'classic', purpose: 'main', id: '@main' }
{ type: 'metafeed/operation', operation: 'add', feedtype: 'bamboo', purpose: 'applications', id: '@applications' }
In the example above we have two messages, one linking to our existing main feed and one linking to another meta feed for application specific data. In this way we can build up a tree structure of feeds. It is important to note that because these meta feeds are just regular feeds, the messages can be encrypted and thus a whole subtree be hidden from outsiders.
These new feeds will be generated from a seed value, using something like this:
const seed = crypto.randomBytes(32)
const prk = hkdf.extract(lhash, hash_len, seed, salt)
const mf_info = "ssb-meta-feed-seed-v1:metafeed"
const mf_seed = hkdf.expand(hash, hash_len, prk, length, mf_info)
const mf_key = ssbKeys.generate("ed25519", mf_seed)
By saving this seed it is possible to recreate all the keys as the process deterministic. Not all feeds in a meta feed needs to be generated in this way though.
Content feed
A content feed is similar to existing feeds in that they just contain messages like posts, likes etc.
Index feed
An index feed is a special feed that is used to index other feeds just like in a database. One example of this would be the contact messages of your main feed. You can create a feed that only contains hash links to the original messages on another feed. We are going to introduce a new RPC replication mechanism that will efficiently be able to replicate these feeds. The purpose of these feeds is to enable partial replication by only that specific part of a larger feed.
Identity
Currently in SSB your identity is the same the public key for your feed. This key is also used for secret handshake to establish an authenticated and encrypted connection between two peers. Furthermore this identity is also encoded in messages such as contact messages.
We aim to use the id of the top meta feed as the identity of a peer going forward. For backwards compatibility secret handshake is probably still going to use the main feed identity for a foreseeable future, but new concepts such as trustnet that will be using specific feeds for the messages, will refer to this new identity.
Potential applications
A list of some concepts that could be implemented using the meta feeds:
- New feed formats
- Sub feeds for specific application, like git-ssb, so only clients
that actually want these messages have to store them. - Ephemeral messages by adding a lifetime to the metadata of a feed
and having clients respect that. - Allow lists, meaning you can specify what other feeds are allowed
to get a certain feed - Same-as using feedless identities. I'll be dedicating a separate
post for this topic.
What we aim to build
This document describes the ideas in more detail, but I'll briefly highlight some ideas:
- Indexes
- Claims (indexes for other feeds) and audits using trustnet
- Feedless identities for public small groups
Our aim with this is to get the number of messages a client needs to download down to about 1/10 of the size, which should decrease the time a new user needs to wait substantially.
Backwards compatibility
We aim to keep as much backwards compatibility as possible with existing feeds so that existing client applications will continue to work. As meta feeds is a layer on top of existing feeds in a way it is natural to implement only new concepts using meta feeds. If it turns out to be a good idea and we have a better feed format then I think that would be the point where existing clients would need to be adapted.
%tUVR6OZ2PPoaV1JEJ78zaNiBuryq34N9kg9Ky6e7f/o=.sha256
%YPTAAtUqqafa3Idq0yNh+aZmcbDOOpyMAoorOKktWwQ=.sha256
%Rtsh7yQ8YCfLu+PN/Ectiymvpq/3wsu1wY7ZQE143N4=.sha256
%oNSKh2jaVjSelSLJWCQXCFQR4e72u/EHbitJKmBml5U=.sha256
Hej og velkommen :)
%fsvCK1CVNC2xPlObwq3OJCbWwVjbXKiaAGvgtzwfJHU=.sha256
%BBBZAOI/pEcG5PV+aVfFDjEIDpZLubichLW/b/B+ON0=.sha256
%iU8/320POiZtcXqr/ahqe2BUKnuC2x6dcKJy7PnrFDg=.sha256
%/wPvMMUPFp1S0o06ala0XvCIycc+9eFmAWLyFUkuAjw=.sha256
%Le8elUGdrvBLs0v263aHwDicQpdzjwCCsBGA9oXA/lc=.sha256
@glyph you will be greatly missed. If you want some help setting up #ssb-browser just get in touch. It might be easier to get running on the rpi4 as you just need a browser.
%89IKG9ewVtemiAbVosKutnxQxwNuTkFY+kU63rmVa5U=.sha256
%wNLNY0T0mqmlz5gFlhKAPgbHM4hYUO6IHqp8tkLu30c=.sha256
%78nOB/AgcUK+WxwaCcZmckW5zoq47H3lHCjrcWguZ8c=.sha256
%quP4axJ6OmAaYtOe6YaE2Qmj0cDNcXbfJ57ROfjitHM=.sha256
You might want to look at meta feeds. It can create a tree like structure that enable all kinds of nice things described in that document.
%aDqdKCQwOmqrXlVHmV41vwG1x385FXfx15cimNmbfTI=.sha256
@Luandro Pàtwy sorry for the late repy. If it is something that will help I can try requesting a license.
%qe6aQxOZrP4/3ZVLjS8KznJYYCuu+L0uH7qlGc5ehOg=.sha256
Fantastic update @Luandro Pàtwy. The project sounds very interesting and like really fulfilling purposeful work.
%kQO4/xVhNxFqsvkccC1E2SSGBNE4NrxccEA4iMqA1V0=.sha256
%Cda7pqu3hzRsVbbvG/Fe+0kj3h5LTTASTR50GSL7toc=.sha256
%4UmWv27p121nG1vi/NAIemWUoYvxssoumBaBANLUG04=.sha256
%Rap8HMXGm3TmooRcU2Gcbh/NdZlsff3GvBaAIzYliJQ=.sha256
%DH7Jtrexiz5BiJmyAnejDtbgshoSPtpDcDaZzGwu1fE=.sha256
%2iypVauQvjuy81fFmg4nSd0SAMMT1Jh2JktZ9dB+B6k=.sha256
%97mkyV3rT1BAHvz6BymQ9GG5Gl+33MntnE68wl3V9Ys=.sha256
%F3hT4ppG//45/+cIJXI4tXDlZwcmZr5KBkqURWjXyQw=.sha256
%mXuEwXWEUmRKObX0y9HArz/Wh1coISVRvWMRs4yUVd8=.sha256
Party in the bat-cave
%3aot1ZqyTNYauqG2AmNpDtBxTHUE1ZwWxJyRReRB+G8=.sha256
%wMfAT/vr6ZBOvxNN2fE0DKan4UiyWesmDDmURACsKdA=.sha256
%w5f0DTGmrxq9vxO+Go6t/ct5Ys5jtcHTCOtrG5H6yR0=.sha256
%0u/uXWIwt3guu+muY4wTJ06pFhDh/J6TeaHt1WAdQ9c=.sha256
%f9FTIwzoLOhyhkoJbMpYaljCKCFlPLGJtPRF3yfu8n4=.sha256
%seDs+BEcQp0mzel6XHqZOa92kJEMEDkfmDaQznnKqwc=.sha256
%NTzrFH7XNwWHlgUG290ljJ+goJTtBxW25466I7VdX5E=.sha256
%BJXPouXjObpI9yzlxdPg1tfYBQ0z8PKIqzY+2BIyoc4=.sha256
%gtS5i56ah7qkZij2VA761nzsuonDfKd6F5/mMr/mA7Y=.sha256
@memo Yes you do. That is definitely a gotcha. Do you mind opening an issue for that?
%+YY0FmxaIVbKb8DWKRzkNU5JSH6sC5B69OjH6lvPSXQ=.sha256
%ZSeq4+E+z6S72tnEL9eu5A1b4eL/W8s8jBsgipIVBSw=.sha256
%i1ZdHr+QjBoN618J4zTZHCg/lXvimYH5W9NjvCfLu8M=.sha256
Been working on getting meta feeds into shape. Still about 27% done, so lots of work to do on that one.
Other stuff:
- Helped Andre with getting the manyverse release ready
- Paired with @mixmix on private groups. We used ssb-fixtures (see this PR) to generate a bunch of groups and mesages in these and found a few different bugs. If you want to help getting private groups ready for prime time that is a very good place to start :)
- Worked on a faster sort in jitdb that has some nice improvements for queries like get me the latest 10 public posts for my whole database. Before it had to sort all the possible results before it could return the latest 10 based on timestamp. I tried a bunch of stuff including radix sort but nothing really helped until I thought, wait! Lemire must have thought about this problem before and yes of course he has. He even made a nice library that we could use.
%rDvoMHZMLY205ONlU72lm/1JoCfLQuv5hd5Q9hUY65o=.sha256
%YbtAjfl+LBacaTZnep7xfuBsSG7S4iFfZ9sS8kPh28s=.sha256
Wow that house looks cozy.
%A+Ua5a2N6kiGX0QowFZIwhHiSuq03BCT6Um3Sg+OJOk=.sha256
%Vujri46S3kv36nnsD+TmiKHuzWw9sFK59yCZjS0jw+0=.sha256
@memo for mentions we have created a indexdb plugin that will index all the links. This means you can do something like:
db.query(
and(mentions(feedId)),
toCallback((err, results) => {
// do it
})
)
Example from the tests. You can also combine these kind of indexes with normal jitdb indexes like:
db.query(
and(mentions(feedId), author(anotherfeedId)),
toCallback((err, results) => {
// do it
})
)
So all mentions of feedid by anotherfeedid.
%awXGAkxbAmJ9tskZigAOcW4BWQH1hIrT9gkHRpcv0jA=.sha256
%2omXy53G/x38R0mNYTujJo/5PgJfwj0usiHt0Lubzb0=.sha256
%xXnPeSxjr8wTlga4bUbk8C/X2DuaKeHRcUMqRnOnpMs=.sha256
%Z5MNBjDqCpfnuoocf4SxcNaPSHeil0Kdj4X/zQqKY6I=.sha256
%3dL2r8LDKSdxUDSKOlWjiiRDZQ+xNGRASA5otI8HIqY=.sha256
%lQXZrx0316a01L3QmACE+TDMid6H91YaPcx8D6YbU7Q=.sha256
%5IcjXZ8U0G5bJOpok6DS2m0OM3y5Y/O/BbtqjGI7EsQ=.sha256
%z4M7f4K1ZThvoe4kGqf9haDd5u8T2gfKWicVdPO//SY=.sha256
%BRCK68/kXiC368klcj5TyG1lktkrbtxxI4KF/lJFEX8=.sha256
%GZ5k/w3pjmths0eGSMMtWTW5xw2yUuPhiVxpvhUunr4=.sha256
@dinoworm 🐛 I very much agree to what you said here. I do think that we are moving in the right direction though. I had a ESC call this weekend and after that I wrote down some thoughts very much aligned with this thread and with Bundys burn out thread. The following list is just my random thoughts, so in no particular order.
Good things
Working in crews over longer periods. Two recent examples of this: NGI pointer and ahau. There are several advantages to this. First of all working with lovely humans and a daily basis totally rocks. I've been really enjoying working with the rest of the NGI crew. I can see some of the same dynamics with ahau. Secondly this has allowed us to tackle some of the things that would have been impossible or lead to burn-out if done solo like private groups and db2. In the NGI pointer we will be tackling another of the gnarly bits in the JS stack, the dreaded triangle of death that is: ssb-friends, ssb-replicate and ssb-ebt.
Manyverse donations has allowed Andre to keep working on manyverse for a long period being paid. This is really important I think and I think it's really important that we either set aside a certain % of the open collective SSBC money or even better create a new OC for whatever client we want to promote as the boring butt client.
Paying people for the things we are about. The newsletter is a really important part of the community and the way @elavoie started this and later handed it over to @cblgh is something I think we should really inspire to. Also this is payed which is really important I think.
Making a maintainable boring butt client. I've been fascinated to see how many people started contribution to oasis. It's really a testament to a really good foundation that @Christian Bundy has established. Also that we have had multiple people working on in. Both payed and not payed.
ssb-js another one of @Christian Bundy great ideas. I think we need go through all the modules on ssbc and move them over and deprecate SSBC. Either that or clean up the people there and move a lot of stuff to ssb-unmaintained. ssb-junkyard was a great first step in cleanup up stuff.
dev.scuttlebutt.nz is really great in that we finally have decent documentation and not only for js but also for rust and go. It complements the protocol guide well I think.
https://scuttlebutt.nz/ is pretty great as well. Kudos to the people that made it. It could use and update though.
%fAQ8rnfLDi4jYm0jpJCH4j4UDHSy2AWPFhfOJFV9PdM=.sha256
%srpBpP/fE/jn9XEp9eK2T5w79sixOl9FNly/SQTIFGE=.sha256
%yIg9SxtPcA2IcQ788mGRdsMqYFSAXrxrDW2xJj2ZeHk=.sha256
%C7ds+PuNIEwc+wzh/1sknYLNQf8KKy83YAPB/pQntDo=.sha256
Amazing! Do you mind if I link to this from dev.scuttlebutt.nz? It has a section on jitdb and db2.
%pJjDErpAPb+GvAcwcYNQn1VYkJo90H5TS0e4tRRq0SI=.sha256
%9a4Q9WtTZiy1qHtjGk1Y4vvQqif1GbGrae/tHxsAr24=.sha256
%pNyDrgf1G1xvqjCAw0QIEDLFqO6tug3sbkhfyLpeSnk=.sha256
%UJCxQIyBljG+VUruooceruBdMmnjALoDEDrHQHd/Fu4=.sha256
%HbkRPUKC0M8g9tWNUOHlKF4MDlL0kmrDYYjx/T0qqko=.sha256
%YxRvSoaSQdL3vIJ7RkPLF5ZErFbbs/sXtftFch8M1X4=.sha256
%hcwpu4DweNvh8ljYuos1+Rb3KSZzZzzYQy4CwOE7oQY=.sha256
%9345zGmXf8TYXvaeqm4BuPE9y8GY1vDPWW9fiBJFy+Y=.sha256
%1woGEwFJjkaknGQFfeys/L3rUFob8/gCIL2Di/sQrlY=.sha256
%Og4151hHpiAcCNlb5i2TfN8FrVEFc7hImME4qW/xeQA=.sha256
%HpWEWm3N2lWrYt1ENgF4HFZVsg8HPl/y0SYkLvGFkhs=.sha256
%ijzrQjFzHpqiuRcBWMRdwY3TX3eCtQg8qlRu1wRJS+E=.sha256
%evWcwAmPPSijIF1nIvqt9sSo2VWFACd827ikMBUJ4r4=.sha256
%d0VEzme436iKNTy3NRCxBopG0YAhZ235y8qS5ygXo/I=.sha256
%LtgvBkm5Z22vGwxEcq+rNDlpeYuf9xLgxWrmKmMh/UI=.sha256
%sLhuBASDGvl6B4ZHOZduCjM3eTAqqh/8l3SA+j0ihuQ=.sha256
%VGuXXFKUTbTgU8gwpeWQEcmIwrZCAWNmeIuoQ0w3vpQ=.sha256
%41MWat6BklbI7cfx2Q7E+WhTJelpRa/PnWEob84vkIE=.sha256
%kfxUBb8s5+wdVCRfhmHrI50K/ntlQ8trfaIeXzohhBQ=.sha256
%kmZ79KQz9rz8SP5AuQYtXmgtDnfeOGlCYPV7Dk8XeI4=.sha256
Sailing the high seas I see matey!
%Dxkddlg8WHMXOPagT/ETrMgCV9dzGCKngNeaSokFSmI=.sha256
Dear mr firefox, I love that you use the expression chasing your own tail ;-)
%ySEd7x87WeBxDoNhw3eFy3d9Y2WT0GcODMVTfazc0p0=.sha256
%nvvkkcj51ivTIfmt4urfDFFq8CERB9QQK8rJRAzfiCc=.sha256
%UsKw8WvyfakFb02kCNNrdlUTz48RF4payHcvWiuzMwc=.sha256
%VyZVKZP4ZRdNILdtG5vMBiYL+ojFOXAmjCSUJ3z73s0=.sha256
%Eqfv3cy4dCopVeX5ZxPNGfZ9ArjLUKKCxTrfBEX7tzU=.sha256
%Kdw21gtIFTWmBc4eZEcNVm2TktsW5fEIkAhuPHl3mA4=.sha256
@bobhaugen should be the one. If I remember correctly it was the but that would be anarchy! post I remember correctly. You might enjoy that if you havn't heard about Igalia before Bob.
%HYVWYg7OaDtUr27vtBoqxOtqoIGt/uyPEO40mJJsmSs=.sha256
Oh! Someone from Igalia, welcome. I heard about Igalia from Andy Wingo's blog a few years ago. Are you based in Spain?
%eNwlM+3IsjBO8LB4bfCOXWX8JOSGwZksOvOxwkpt1JU=.sha256
%FkJ5kcX6Z/lHKqYvWEFRYKHv+2qq3eIxTgnFedPVpM0=.sha256
%9hxsfZiJoxy5IV3rp3QiVzuERYzi4TOw6Qnp5Oz7U7w=.sha256
%HJO/wh/ldfihSPHFL918ZMYD2ZL7XMcCKgChVWaIy4I=.sha256
%NqHfon5g2sO2g6MonevqaeNEpBB0xciqkzXHe35kH3s=.sha256
{ "type": "about", "about": "%QB9+ygoVrEt5/M1grkoKR66MLrBFGJ4iS63dqPuMpGk=.sha256", "attendee": { "link": "@6CAxOI3f+LUOVrbAl0IemqiS7ATpQvr9Mdw9LC4+Uv0=.ed25519" } }
%v3xV3OrDk9m6aCgHCALRuly7LqxmeJswFvq1xb20dpc=.sha256
{ "type": "about", "about": "%QB9+ygoVrEt5/M1grkoKR66MLrBFGJ4iS63dqPuMpGk=.sha256", "image": { "link": "&X822AYKUBV4mduam32tFr7HWH+1NaP1ERaB/i07NRRI=.sha256", "name": "explore.jpg", "size": 63156, "type": "image/jpeg" }, "startDateTime": { "epoch": 1614254400000, "tz": "europe/copenhagen", "silent": true, "_weekStart": 1 }, "title": "Scuttlespace 2", "description": "This is second installment for the re-occurring open scuttlespaces.\n\n13-16 CET\n\nWhere:\nMumble\nServer: muchmuch.coffee\nPort: 64738\n\nWhomever wants to come, comes and we have space for working in company or for simply chatting a bit. The idea is based on \" Digital Open Office \" concepts but chatting is really very welcome as well!" }
%QB9+ygoVrEt5/M1grkoKR66MLrBFGJ4iS63dqPuMpGk=.sha256
Scuttlespace 2
Thu, 25 Feb 2021 12:00:00 GMT
8 attending
This is second installment for the re-occurring open scuttlespaces.
13-16 CET
Where:
Mumble
Server: muchmuch.coffee
Port: 64738
Whomever wants to come, comes and we have space for working in company or for simply chatting a bit. The idea is based on " Digital Open Office " concepts but chatting is really very welcome as well!
%BZ6oHgqxQeNSKeBqNfwch0kVHDCmCV1fzqL0TNYnHPs=.sha256
%RwFVt9IwxDLc2Uf384oKhny4AK1XMUkiT+q9MxZ0t/Y=.sha256
%5AWag3cN/E3aW08hbFmjDv8fnEUsEuOjLBKsnb1RMEs=.sha256
%mRjOjfxNpbZO7/7DcRqrZQXydAUbJkYR4OZeIPZw4eg=.sha256
Thiis call for mtg art
Archwing Dragon by Daarken
%Y778s3Jaw19vByzG2EgFRg/uQQcECDike8R6VRBe3os=.sha256
%g9bLN7VPuLmu1VnbOi1b/E3EC4dLnmYlJbhSITBGKn0=.sha256
%Q42umXt4Rq0zWXcJhqnCBsynYlu2Ne+dkjHsC5iXNoU=.sha256
%9DamfuEP2OHPcrYV34ujjztKMoLaoneDUYO2nD4DdMk=.sha256
%e6zzASBB35V8sABv+2rltes2z/hi+1SOcU9qyFWkgcg=.sha256
%6/DmZHpYh+HLlF5gxybvGgRIgq4rL+29HWvn/k4BYuo=.sha256
%F6MTAo6kH7UPmgdNtOhRhe1XE3ddZ7INSOJpN8CEUXw=.sha256
%Hh0UR0gRcKpyCatx+xUpI7Cjf+f8wf0z4cFuaeXIz4w=.sha256
%2Afs9ziB2FZeK/YBjXZ0CnR/Ui/AbQpj4sDySnForok=.sha256
%kxyQcVfpNWs6VCMvl09y/jwRLZQGRGVfpxqJxtbgomI=.sha256
%EJY/anVK1ogCVkX3UqCjA9IVC1Nu+QuJfk9Zssd02hY=.sha256
%o3Lad/or1vjG/AiOZ8tAqZFrEpgdrtpt2gfM2c9FOsM=.sha256
%eR84PjHsUuVu2AgQmKjsMru+O4tzr2LwB05RnobN1n8=.sha256
I'm with Zenna on this one. it feels wierd to pay for your sins with $. I wouldn't mind putting in some money each year to a box that can be used to help foster compassion in the community, but I don't think it should be payed out to people directly, it should be payed to maybe have people facilitate group meetings like the fairy rings.
I think the most important part is acknowledging when you have been wrong. I still remember I said something in a not very tone here in public about a ssb-server release that dominic did a very long time ago and that was really shitty to do. I still feel bad about it when I think back to it and I never think I told Dominic I was sorry for what I did. So yeah, more practice of saying sorry. I also think that these open spaces, like SSB is right now, might not be the right medium for these kind of things. This is why I'm very excited about tribes groups or whatever you want to call them. There is such an incredible difference between coding on SSB in "public" and doing it in the SSB grant where you talk to the other people regularly. Having calls, building up empathy etc.
%yC8cq7/nMPy9tS0nMmSDXtvPz4tMx3wTfO86E6UOSjY=.sha256
%qosOFg1rgWrzn+a4sGNto4PDUQxwrwP8+nJZbxoJ2lM=.sha256
%SmHyhZmpm0OOiG8Xxqdj5osmeR7qg6SH1R1qdk28wzw=.sha256
%ULCGYGOG0dOd3CJ3guSjTXPXOJTExMSK7K0LPiBb8sc=.sha256
%HaONiumbnWs63N0ndjAnntXZstCvCp7vzWg5JUCvcsE=.sha256
%mWa5KfEIBnr9KSZJi9f3wM8Kg4bJFaT8XeOj8WmfkJY=.sha256
%WNsMr2bKMKnU15vmoLC6TOQvRendmskirBcixUELh5g=.sha256
%oomLlSy7/TBDRKnXjnGze6tpbvVBnyjGrI+RyyRbJtE=.sha256
%on1/ZlTDH2fhxq+MGl4/dPlhQMqI5MlehjLOwzzYF4c=.sha256
@farewellutopia it just means you can't onboard against a normal ssb client. But after you are onboarded, then normal replication works fine against normal clients because that uses EBT. As said as proper solution is in the making, this is all just a hack I did to test the performance of this kind of approach.
@Luandro Pàtwy mobile is now fixed in latest master. I want to land a few more fixes and then do another release in the coming days.
%E47w4mnh+WQhhk5iKcfC8wn1ioqojy95m++KxZTizOE=.sha256
The method:partialReplication,getFeed
is because partial replication only works between nodes that support it. Meaning only my pub right now and then other browser demo clients. In about 2 months we'll be start on a proper implementation of partial replication that will also work in the go ssb server and other clients like manyverse.
%qVHw6Zd7Nz1kTpSWss1SuKCD6XTfrfQITmZ79WgEKbQ=.sha256
%9kPS7wZ2QzACG3hj2lrPzsNsMk6hJ9EZ8wF1jDmOhTo=.sha256
%KRboQqCKE0Ib0L35bIdfvjHJm0oT5D2qfnS0FRfNB9c=.sha256
@Luandro Pàtwy thank you very much. So heartwarming to hear ❤️
For ssb-room see this. Cryptix is are working on rooms 2 in go where web sockets should be enabled by default :)
mDNS: not sure if that ever made it into a web standard or not, I know they have been putting a lot of stuff in the browser including bluetooth.
private groups: Working on that, we ran into a problem with trying to generate a dataset that includes private groups. Currently we are quite busy trying to make the new database work in manyverse. Once that settles I'll cycle back to that. Basically it should be working, but we need proper full tests.
mobile: yeah, I sadly did not have time to fix that before the talk. Now that it done I'll get that working because I've been using the browser on my phone as well before.
%1y9vAVM20A+IU9lJWsaoaXlVPshPatC7XNv1Vz8qFHQ=.sha256
%DmtsQ8MU9FDKC0I0o34Abwk9gq28hKm2HGxLMjHDUc4=.sha256
%Z8fJ9JNHtreQZfTtSvLYQJX0Af+dxyp7Vuhu55cd7Qs=.sha256
%RRUgIIhgHkoWbVWqRtqpMix58SORo9xDFsdWmPuJGY8=.sha256
%QNJE6OcJ7X171if0mgeT04p4qimGj8z3qbqRAnHWhtU=.sha256
SSB Browser 5.0.0
This is a rather big release. Most of this stuff was done by @Kyle Maas's Development Thoughts. It's be really good to see a new person come in an become so productive within such a short time. It wasn't more than a month ago that 4.0.0 was released and now we have another major release with more than 250 commits.
Some of the new things are ability to add reactions:
A group feature where you can put people into groups and easily see only messages from people in that group. This is saved in local storage because it is still being tested, but this is by far the feature that I'm most excited about
Better notifications (a feature from patchbay) where if someone writes a comment to a thread you wrote or commented in, it will show up.
Themes
Notes
New features/enhancements:
- New groups tab
- New Channels tab
- New Settings tab
- Themes
- Add ability to add reactions to posts
- Filter preferences on the Public tab are saved
- New filter for favorite channels
- New filter for channels to hide
- Public messages can now be posted to a channel
- Connections now shows peers by name
- New onboarding screen
- User-friendly Markdown editor
- Profile pages now have "Send Message" buttons
- Channels can now be replied to directly
- Internationalization support
- Japanese translation
- Pirate translation
- Allow for message titles in Public messages
- Autorefresh feature for Public messages
- Include replies to threads in Notifications
- Suggest profile names when typing @ in an editor
- When a user is blocked, we now delete their messages from the database
- When easily available, thread titles are displayed for reply messages
- We now use ssb-friends instead of the old custom profiles index
Bug fixes:
- Lots of performance optimizations from arj03
- Clicking Disconnect now forgets connections so they don't try to reconnect
- When changing pages, the page title is updated, making browser history useful for back/forward
- Update dependencies
- Multiple fixes for pagination
- Display error to user if they exceed message size limits, rather than just failing on the console
- Get rid of the chloride errors which always showed up on page load
%moyNLgMwROai8MKeyLWCBHocOncrcdXdLQbjeEABa+s=.sha256
Fixed an issue in epidemic broadcast trees that has been buggy me for a very long time, where if you loose your state, there was no way to make the other end acknowledge that and send you stuff again. Really nice to have @cryptix there to pair on a solution with.
Tried converting ssb-social-index and ssb-suggest to ssb-db2. Landed some PRs, sadly its not there yet. We worked on bunch on this about issue, the question is do you want the assigned names of the network or only self-assigned names? Maybe with the ability for yourself to assign names. Right now I'm back to a level index of self-assigned names in browser-core.
Worked on supported db2 in ssb-friends. That also turned into a untangle the dependencies between replicate and ssb-friends a bit, meaning you can use ssb-friends to only care about the graph stuff and not all the replication stuff. This way it is possible to run friends without the replication plugin as we do in browser-core.
%3sMOof9FPtlDBzj1myY3ib96Je6D54pp4sbxnAk+/IM=.sha256
%+Dg7QvgBNdrpGNkgKCs/c7EmfvQaolHVmHvv+JKneYM=.sha256
@punkmonk I was wondering if they were decent or not. I drafted black and green last weekend and the power level in this series is really high. Makes for a nice draft experience :)
%TlxbThF0CCim+2rNwZd6Xb1ISAVo8VMuOKEEKDH3PSo=.sha256
Fosdem will have 3 SSB talks :)
%dPm4AOtDIvGXr8D7cskGnamfilK4/qQkF47tXR4cC/Q=.sha256
%adpzQ+xnn3E6Ma0D58j2Q49e+FmVRI5tBYaumWiI2rY=.sha256
%msqkiOepqkVQYKUFm68bI22zJbFu24Z/VT7bTimRegY=.sha256
Ha, I actually saw that card, just not the creature type.
%ZF+Z+uhbtr6AjoOMzgDmCwSRVBV267XjX8HXeLWyuMU=.sha256
%268rKYSbw4CwbD8OCGsSykodbLAtQZ/MsSFB4q50Eqk=.sha256
%+8zdByeyt3RVMcUSsBxLXERj1gS4cKmqZTQx+B1ttAM=.sha256
%7e8kNwSVSh2Biu+7yOuotL4c+4TmkCR3POb6uSN6VWs=.sha256
%QPpiVBloa82KFde1oEvP5hZW8y+CyN7IGH/DUpdPFcE=.sha256
%E7mQHNv9OPWPAauGkACSK7j4cwTXoA7Qu0sZOhJnXCc=.sha256
%Q13RDvhbx8S7o9unqY/CotzrObROAuQmvSbqOnL8Q/c=.sha256
@enkiv2 if you want to know more about db2 I encourage you to look at ssb-db2 and jitdb. Also some examples of flume versus the new api. Happy to answer any questions you might have.
%0s1GvW2HNVxyse2WVlytBvA6cyRWvEMNaHgjkSozeTk=.sha256
%fqHmJxmhlAwsYO+BE8iaHrN5NYKv632lkfRh5YSTFBw=.sha256
%glgfKtTmGExaDLu7yYrQ2mzzKJKrroDT6pq12XgbvcI=.sha256
%0g8grIAo9rhOHcLOAqrWJ9osTe4EAA/J6mTuX9liiYE=.sha256
%I47bR5yl7uOowPJEznJSkiKRwgJSCI0ph9qKfHOy0rM=.sha256
%InzLhDA+7zxO3irzdVVDhYyqZJh5qYwr1fLDQs0YJrc=.sha256
%ZfechY7BuZMET9g6pmKt5wHJG60YbqnY2LH2SRdD6sU=.sha256
%8kOGPd1pVQUujKQracK0i+rejz23MI8dcWsW7FBzU/o=.sha256
%F15gPyccFswdAljjqCyGoOAEn7gLR1QwG0G4RU42SiI=.sha256
The inverted index for prefix indexes turned out to work great for some of our queries. This means that we got roughly 10-20x improvements on common queries (key, vote links etc). All of these are now < 1ms on a full database (1.5 million messages).
%+EfoCbyls05GP3WaDYhcrCz/nrnSR/Q9J+noYDtVYpQ=.sha256
In general I'm not really a super fan of just saying run over tor and now you are safe. Like there are also things like exif stripping (also works in some clients) that needs to be considered, the UI in general needs to be focused on the security aspect. Private groups and rooms 2 (with privacy) would also fall into the category of good candidates for a security focused SSB client, so that was what I would focus on if I were to work more in that area.
%DK+ljTr6CHhfPAkiejbuQooQqjNP/U5MjZEe1Ijn8yI=.sha256
Tor for scuttlebutt definitely works. There is even a page in the handbook about it. When I was working on patchbay there was a switch to only connect to tor pubs. That being said I havn't touched that for a while so it might or might not work atm ;-)
%I9QQMUSAcSoSYm+pQojVRo2/EhGs7gyKKnDBx9Y4Yeg=.sha256
Everyone say hi to @Kyle. Kyle has been doing a ton of great stuff with #ssb-browser including adding reactions to posts, themes, pirate speak etc.
%KyIoo03gYrxgOqVUC6JZGAmVP/bN3WkIpCBTbRB3YdE=.sha256
%12HB5JqgErH8LGYNQi1s80de0fDE8tDzmE3lsNGHPLQ=.sha256
%73Wl00GKGJSzqoEMJCWYVXM9zr1QLZ2KoM/hXEpFoyk=.sha256
%7T4vmwkPvAcKcpc21d/1C7f2GAUEkTNBbCBuoBFwyDs=.sha256
I keep forgetting to update this dev diary ;-)
Been busy preparing a talk for fosdem. Turns out obs studo is a pretty nice program for recording talks :)
Did a bunch of fixes to async flumelog and db2. Testing EBT in go against the browser, really happy to see that coming along. Spent quite a while yesterday trying to create an inverted index for prefix indexes. Seems to work pretty well with vote queries.
Also started porting ssb-about and ssb-suggest over to db2. Getting some help finish that from Kyle who has been doing a ton of work on ssb browser. More on that later.
%yH3HDfxiPj3eHvkPnkDxaP+rCQ87EIIGSWZnfU3Wshs=.sha256
%DwQKBm9e9zOveXJO79Vme3l5hy5BL3vUPculXF3VDrw=.sha256
%myOxR3iwspiXQdf8TaIyAmarHGUUMyDfIHDhDFgS3yA=.sha256
%Rocct6QfbPg3ajZ7yMf9D+gvdhBoV5etjyIswrupSbw=.sha256
%BICAkBrgppe4f/Fq+YO0n7tViUgncZC7YPYkvf7ctoQ=.sha256
Already fixed it seems
%xKkEhDAyysSqrnsIILAeyKf6avD6d5JoDLOEJE1gqZk=.sha256
%SI2LHDdElgHpw5Ktiu6aXXNqZ0NLgRM7OOYTQO1LZmg=.sha256
%wGoxAuzu/TuktgYfNO97CmTLVLibdWUMo/ie6ryYlvA=.sha256
%tRGQcbXilXc9neJCEQSDVqUWmdSaZseF6948XqTNUMY=.sha256
%9k7msGFXBtCoGf1vdhi4r5wvHRYvkxECPrzPTBlr0f8=.sha256
%+C8/2PGvbqXyxe4rMND7o/nw+zZdRa9gcNopNZzN4c4=.sha256
%8XzI2e68sC3N9z6tEhIOAcS+0V+N2s5Xfr2jriKS6w4=.sha256
%cvQvA8oNtrEoevyCzQDJEi+7A2ihNTCdbuOfJyiVBH4=.sha256
%J3/VzfXBg3tNq5ly3SRgCj2oxcKl5VxRH3XFqKw7wjM=.sha256
%7J8VRUJQkL0g8HCE/upxCTUbm66+9P06xNBO2YSddLQ=.sha256
%lGTLXsg2dsiPtOMLsTPADgGYXq8CheiGqEhFzJnK2S8=.sha256
%0gudnwua0PdihdIz2vZ2liDyQ9Ynbj2EgzHQ8fYniQ0=.sha256
SSB-DB2 is a new database for secure-scuttlebutt, it is meant as a replacement for ssb-db. The main reason for creating a new database is to be able to rework some of the existing decisions without having to be 100% backwards compatible. The main reasons are:
- Performance, the database stores data in bipf
- Replace flume with jitdb and specialized indexes
- Run in the browser
- Work well with partial replication
So getting it working in oasis will require some work. We are currently working on porting manyverse over to the new database. Once that is done it should be easier for other applications to be ported because stuff like ssb-friends, ssb-suggest etc. all works.
%w2JdV1pMDMlFtbQcb6lkXS3iww6+fYQa5mL06zPgmE8=.sha256
%jnKA0JSW0YVgZHha7GmXQ7Ae3d1tiAzQq6IV/OS3o98=.sha256
%gq/HPMupAt6y+6nTZqGwTgYRDnV84/IGhbNMV1ui5d4=.sha256
%QZW6gdxMqkBcd5oYmtMBW+4xSVCs78CmcU670A5aiXk=.sha256
%ckM/5NGrGuAmoEwADR63TbHrcIdppWIuGB4Oy3beOAw=.sha256
%XuppWxlFnKkgzfRrbfN9hE2Oj4fUdBBKzAYrSlDbB+o=.sha256
%m3qZzr2WWNF29MgbNtuembF9kmqJXCxmTTp/jelfpqk=.sha256
%j3/DRnBluALO1ZjhJBjUuwOuBMyr127g8NzejNLZ4mI=.sha256
Yes, it uses https://github.com/ssbc/ssb-friend-pub.
%gP9l1cSqWqKViE/MAIiR89tHOyso31csvADy/yPKTo8=.sha256
%47RDN0B6woFjfOusC7epjLjTmHdhuPjjThMD+9VP+6I=.sha256
%GkI0SNpdRHfDjNHfehxHQU/9rutBm0fswtuSEAKKnpo=.sha256
%4DQaoc6DnDBxHjxa7NeCkV10SzAZEU7ZKfgl5tjaW0k=.sha256
@abekonge.often I ordered it from nanobike.de. There was a shop in Copenhagen that also had the same bike, but it was 250 euros more, and it had to be shipped anyway so went with the cheaper option.
%x1chQqEPK94WscdCtBMnGenbAvlPsXZiIGJV5vr6Gk0=.sha256
%ogUSeh+51gRdyxfZf+0VTkQ86cLWNWeqBILhvLTbF5A=.sha256
%AkpchAyzyTq6atFmCMehjRSVGkTws52JxikTJE1Fuuc=.sha256
%h9b2XMV69hHDzTyMqH8LFoOZ8Zm2fn84QaJK/v7af2k=.sha256
@Solène yes internal gears for minimal maintenance. I had a racing bike that lasted about 2 years driving in snow and all kinds of weather ;-)
There are not very many belt bikes on the marked. I had to get it shipped. First ride was smooth, very much like driving a normal bike with a new chain.
%8lWDeizpungMsRd454uhb74rO5NvCQnu+vqd7FjRNms=.sha256
Decided to treat myself to a Christmas present that arrived today 😃 A Cube traveler exc. I bike to work almost every day of the year so having a bike with minimal maintenance is a must. The old was had worked well, but after 15 years or so it was showing its age. I'll be donating to that one to a local bike fixer that donates the proceeds to a homeless place next door.
The belt drive
%fnPrTjHz8vdIOATs28yFJJWkH5txfAd5co569ITCJk8=.sha256
%aYxIaAYC81M6dGfvgFqCsfB5dCZOp9eGJxCqeugBy44=.sha256
%fGkwNRt3pJjCdcO1eXB6GiO6gTgcOyTnHbBqrSAwBxc=.sha256
%56a6KCZzy03O6sDBBhGZ0piUE9dZIyu4UaTEWh+XKsM=.sha256
Remote go before:
full feeds: 2.797s
partial feeds: 30.752s
Remote go after:
full feeds: 1.891s
partial feeds: 19.352s
🚀
%zehQJvs8BJTlkIvqpueELCm8X/gMgm2JBfaSM3MYWXQ=.sha256
%11WslSVbdJAL9/QHuytsGuX0EPlOy6ICD+W0lFe06pE=.sha256
%ELaMx7qvRBUgxL89cZLZECKhZQruTSKOEnd5QHsgH2s=.sha256
%VBVkLi158b3eL3M1AeDMSqEYK1zt+3oS0NLMujIBuUc=.sha256
%KE/HkvZaD6+p1Vy6fXBoPS8NAP8UVRtbHxkFPJnrKcI=.sha256
%iwAW/huClmk41sh5idtw93j4WA17tMDiuahHeuPrBdU=.sha256
what happens when you run out of storage space
Currently it will just fail to write anything new ;-) It does partial replication so the storage requirement is not as big as a normal client. As part of the grant we will be trying to tackling the problem of infinite growth that the current log structure dictates. That part will start in 3 months time roughly, but will be spec'ed over the next couple of months. It might end up using something like meta feeds. But that is still to be determined :)
blob storage
Yeah so blobs are different than the log, as it is in a normal ssb client as well. The existing blobs library is very fs dependant so I couldn't use that. Instead I wrote a small module that uses the same blobs protocol but stores the data using the same polyraf library. The core library has a parameter where you can say that you only want to download and store blobs under a certain size. It will then stream larger blobs so they don't take up space. Another approach would be use something like the blobs purge library.
%n0g9PyKPAvBPMC6WN4DMMvAwIfOtaAHyB2WCPZNKQQQ=.sha256
%6veJYQtFDp2F5fExn23NHCLzaJnrJi5UQhXEL3gmyCE=.sha256
That is a nice writeup. The new interface looks a bit like templates from c++?
%Q9gUp19shOLiDJDjw4+DME21x605vgu7Z0DhdUDzg7g=.sha256
which browser API is used (indexedDB?)
All of this is built on top of async-append-only-log, this in turn uses polyraf, which is a wrapper around random-access-storage family of libraries so that it works both in the browser and in node with the same api. In the browser it will use random-access-web which for firefox will use indexeddb but for chrome will use a special faster backend.
how is the private key stored
It's stored in localstorage.
%yrca/9A3ejmJDp9xK7MP05reqCrjHamwZ/oY+2nXu1g=.sha256
%qbymbyw0ACo4DACLW7Yh9SckTkij/J18ugXkynoxFI8=.sha256
%53xvMVU3ioQndwVsFmHpS8/ta10qEyRPA8bFAl16uj0=.sha256
%R396U3gQb/M7E5mEf7daWx4H6Y6A+wDeu1WB2y4GW4Y=.sha256
%Z6JUOgdsWHV/tbR8XFwyAByWx7Iwqaj4shUi/LmNlN0=.sha256
%umS0TH5I+s94acUWwFyVkOFvti2mh8yC4N7SY1zpBO8=.sha256
The architecture in ssb-browser-core now looks like this:
Boxes represent modules, some internal to browser-core and some external. Ellipses in gray represents overall areas and are thus not modules.
%aYUnt2V7wU5V/TbBVyjEJz3meOZ1byMMnovNmpv/YDg=.sha256
Been a while since i update this thread. I spent the last couple of weeks ironing out bugs in ssb-db2, async-append-only-log and atomically-universal so that it should now be ready for production use.
%+fwxvVHpjaydR/s/vrhsEgNnke48mP5ey5UvMhg4JmM=.sha256
A new year a new release of #ssb-browser. As part of the #ngipointer grant, over the christmas holiday I spent some time getting ssb-browser-core and ssb-browser-demo updated to use ssb-db2 and the latest jitdb. I'm really happy with the results from the perspective of an application developer as the new jitdb syntax is a lot easier to write and understand. Visually from the end users perspective there is no change in this release.
%6ZNguTtBo1ldy1kHz0P6hCyFTKagfN0A9LVKGFr6cxk=.sha256
Wtf. Sad to hear. Would be interested in hearing how the chair is once you receive the correct one ;-)
I recently bought a new seat for my Herman Miller chair at work. The old was worn down but the chair was perfectly fine, so now it can hopefully last another 7-10 years :-)
%3xYKMRy1rPkN0/lnWxMwqdYxJRFLaSzNACaJ1tneyPA=.sha256
%uiiLzYjRxY+P0Egm9XvWXeHCe++tvylYzZmfhoI3URg=.sha256
%jJrNgKddoVjeki90csoHi9M75juJHsSCkS4Y7kgjWJU=.sha256
%zk19M16r5gCj3Tpnk2doIr6UITXhEu5pPhILwbtaT1U=.sha256
%Qm/o2xicsvfpzBGt+Cj15g+XjgbAgtRH/O+PmkJGJy4=.sha256
Exactly it is @punkmonk. That is great news.
%FXP+dyBKPB2+7FyccvlzFY2t3EIpekb9JLJBlAMUEPA=.sha256
%Kk7Vj5iJfvcLXcz3RXtfIxyrYygUcDqDb9Zy8T9QNzE=.sha256
%kJgIpuzZ3JzshOTm/kTY9Fw9+HKQqPfD1k16//SANK8=.sha256
I really like the reactions from #manyverse. I found that @cel-desktop does some funky digs, so converted them to this :-)
%40crseuktsUJnv4e+n8zbgB7AQajrrbmpqykJwY6J5Y=.sha256
ugh, this forking in patchwork is a bit counter intuitive. Anyway @punkmonk
%UIOGICrLByQUEHtHL0SArWL2efRCmMWQ8phtWPPP8BI=.sha256
is this where the current offset is detected at startup (so we don’t start at 0 again)?
Yes
is the encoding handled by bipf.encode() instead?
Exactly, we do it like this because we want to selectively decode parts of the message in different places instead of everything. This is one of the reason why the performance is a lot better than ssb-db.
%FEV9/RNH6stbOQCCBSWRndtVEibMyb2aAstKeysq1LQ=.sha256
%qpCsbW4shPRRMnzs8lqDn6OoAXmBzDPpDwclrs/DOL8=.sha256
%ABF+2EjxzpX6ozBh7C0e4JBLsP92dhz6JRsY2aQZNqI=.sha256
%LPRR6Z3VZwvo13nwMo/5XhgakudavG3OHuQelFB7AVw=.sha256
%w/NKo4VvdRBtLjekcvIkGcuaCxZxn/VXYsdIgJPMlJY=.sha256
%OOncUmsbI66+9NllOtv60I24051RD4MUk7jVgdjbhzU=.sha256
%C21SqhiWswFuuB7CzfR41Aym6e2jI/nAOYt8uN/M74Q=.sha256
%HNP3mGrVl5uhtT7ItlBB16iYRocdTPBOBsfLetq3zog=.sha256
%7Ti9hzU4NbU4ipL+/ZmkvtpJY1e5VyO9gVS7an7jnmA=.sha256
%EejokbGOSweFfGTIaiXeB7ER1nLcVu/HlLa8tol79f8=.sha256
%/cHkA6I396EztYshy4XPPvyE1gEuNB168ZOK8xgLRIc=.sha256
Amazing. Where is this? Northern Sweden?
%uSPZX/e+ECJE9ceE1lXqSXum/XU5eJcphbPqCQQ8RHQ=.sha256
%OTT/8Yam3WHXkmeRxf/s5VwYH9DSA35NNKZb/vHzq4g=.sha256
@punkmonk exactly. Also see this. I would try putting in 4GB into async-append-only-log first and from there try to use it in jitdb.
%xwGw5P1lKBMuTag480tg/gzVhjIkLCYLDRXRWSGDsEU=.sha256
@punkmonk there are some uint32 limits in jitdb mainly because they are smaller in size so the indexes are smaller. But there is also some grow functionality, so it might not be too hard to add some logic to automatically convert to uint64 once it reaches a certain size. If you are interested in taking this on I'd be happy to help.
%JDKXs04LgKtJChfYQi7lalBt9Fzpx6Im30jIqJAjM+s=.sha256
%B17Hq+F+qwKxb6dsshScHLeN46x7Oft56fTuRrbmBB4=.sha256
%TnUj2BWg04nur/1iigloIWkxiFj2321aVtyLrfQwDxk=.sha256
%q7T9tLe8OUHyj7tCxn26T+93vpZbh7DhJbVfllITBrM=.sha256
%xnqlX2JSSFtr59Z3XvrjcyLYDKutTNJvZYHj0g/9RiQ=.sha256
%NDGqSA/edwVCLM1E2uNxfY3yKlFXjHkRXEUgCQo/Ixg=.sha256
%lCv6QS9T08qj707NGTMVrzKLj5jjir2klXh6CxoTi+k=.sha256
%eroQ6oT+6a2aJSMCyq1KUIoWlybmORaC/Xj6EfEj25Q=.sha256
This is really exciting, great milestone (all the mixes) @mix.desktop @mixmix @Mix Android !
%SdGJOXIu5GYuK4QXpdF+Tg/IvybSL7HgSYNlWgCuRnU=.sha256
%YXODXfc/6Ec5QbgxTQ1LU+B56zr/gqzoyw2tqKX6BVg=.sha256
%JXrfzSrSwNTJd3vrq4IgA6ZQDIemeXP1QA2ouppi8h0=.sha256
%Ikly9DJq5+qfiER+MM2wjdkjPzZs6Szf2I5/YkeWjTw=.sha256
%7sUXvBCkn/NdpVNoLTtFu0wgLyWNMzmzUP7hwXMqeYE=.sha256
I feel one of the problems for not using more feeds is that we have no good way to reason about how multiple feeds belong together. For the #ngipointer grant we have been thinking about exploring the idea of meta feeds, meaning feeds that contain other feeds.
%Bnr6zrv/IIiCskp9dcZn0s/psujbNEn8UWsUepVOImU=.sha256
%ww+tlGIfN8m1NP02iaDxtzUfkeVAnfSqA/68pzcxmLM=.sha256
%dnRiXMzdOnfqlu0Oy5aq5AADyjSGk1pS/f1ZlI/F5OQ=.sha256
@snow great progress. Are you using the sunrise choir modules or is this your own implementation?
%BoPG7j4D71IKOKI3Qff99Xkb2EhrFOayQ7L4sqQnkqM=.sha256
%8MFJ9pBPBFWUZsPAHuMxAio7+IF1kBgKjZKgFkjrGbg=.sha256
%GLdDiIm1JsWVU0zQmIgmWCNnMwdQNj/+aIAtaqJ6jYY=.sha256
%EvVFhmFzhGmhaFBJtlotu47pvuQZlPrN28fsVQqn4Yg=.sha256
%GbdchopgkAbdgZ3DZDXca16tARPIdXj+LWBoFzK969E=.sha256
%sqVE2AIvO1eXrJpwumaGhQ0FaIU11z1btJeRDCcOY/E=.sha256
Did some benchmarking of ssb-db against ssb-db2 today with the following results:
indexing 10.000 messages:
db1: 4.658s
db2: 939.209ms
roughly 4.9x speed up
Indexing 100.000 messages:
db1: 36.836s
db2: 4.994s
roughly 7.3x speed up
Indexing 1.000.000 messages:
db1: 4:23.873 (m:ss.mmm)
db2: 26.754s
roughly 9.89x speed up
%21bzVPk21PXCMuS2uvJfD1PR7+zWMuLsUgaU5xRmzNw=.sha256
%E4BW9OfgGj2WcGvu/pJpVbb+9OWYwoZzj/A2f9RbupM=.sha256
%qessqDSc/zynVMMgcE35N2ygZfDr0pYGU3/eD5f6+Rs=.sha256
%Mha/KQPNexXVHm0NymVYWUmulipsI2cdlQA4nqQ1MH0=.sha256
Another week, another update.
Over the last week we merged a PR so private box1 unboxing is now working. I also did some experiments with private groups. Did a PR for sharing log streaming across multiple indexes that made indexing a bit faster. Then we merged some PRs to use prefix indexes that Andre has made, this had a significant impact on the storage requirements. Meaning index space for 1.4 million messages is roughly 80mb now. My .ssb flume folder of roughly the same things:
du --si ~/.ssb/flume/*
316M /home/arj/.ssb/flume/backlinks-6CAxOI3f-
29M /home/arj/.ssb/flume/clock
63M /home/arj/.ssb/flume/feed
95M /home/arj/.ssb/flume/keys
17M /home/arj/.ssb/flume/keys.ht
3,2M /home/arj/.ssb/flume/last.json
413M /home/arj/.ssb/flume/links
480M /home/arj/.ssb/flume/links2
123k /home/arj/.ssb/flume/private-6CAxOI3f-
233M /home/arj/.ssb/flume/query
23M /home/arj/.ssb/flume/time
`
So to sum up, we have close to constant overhead for private messages and indexes.
%dZw7L0zVnlLGwKmx2Sd5tpARWdPQstuzDd82G9NqnXE=.sha256
%YsUAOnXHsjxsJUPV6hGGlarw2T2h8L4ejKjHxx+LLfg=.sha256
%QXYNJbtJFj0Fwl4xxzKXusGfL2ccEHrwv6TfQTn8GHc=.sha256
%4ljxVUXm+ZslMmZj6vA1ASKYcPqlvxJNteXFKVWE8vw=.sha256
%jqmNi714kY457yyXRyJybdpLtYM7zgAISnChJKxhRRY=.sha256
%Mq+QcxSs7TXN6ZnMMPQYrJDizWa7TfRhsQvLvsfCAOw=.sha256
%miVFgIrbJRaDCVZ2J/T0bvH2wZAkrLawyPX8x7fS7fA=.sha256
%rleSU13lYKlZvW+t2z4UUCBo4jRszaMGgu79KLYd+Kw=.sha256
%R0+vAbNYYv4vR/cJcNP0wQw/F37v11bArsUPm8yp4+U=.sha256
%QOH35/QLBrh/veTRUd1APNtCu4WF4sqdJ59bnBBd+0U=.sha256
Super fedt sted. Du mangler billeder af Center for Futurology :-) cc @abekonge @abekonge.too
%MB4O0WFFEE2dlEReoYswdjGdWnD0Z4FRxkzUE5Ooh5c=.sha256
%Z0LYj+1y46RxYZqLL5iVkfg6RUER+bUcOQiI4WJkk2U=.sha256
%HNNAgbFyvz5wJYChbBuHU/olS2kVm0YsHNljyJg0uLs=.sha256
Thanks for linking @elavoie. I was reading the article the other day. The comments on hackernews are also worth reading.
%Bi6Qys540QwvQpRFyRmqiurlV9WK5u9IMOLSqqR8Azc=.sha256
%5hLbvTjV4PLSBWzK1Bd9a/HxEFkrnWwsxzkWwg7ELOY=.sha256
@mixmix @mix.desktop finally got around to reading this.
For these multi-feed identities how exactly are they different from groups? It seems to me that groups solve the problem of a) shared ID so you can refer to this b) a way to communicate with the group in the form of a key that changes over time as the member list changes over time.
%Bc8InByTjYqQZcFgJ+Kf1ggPBS5XqEHXf7UGg4wYF5k=.sha256
%uJ6evAn88/xc0gm/LJawDj9Ko+XA6ZndUQRUHaHkrFI=.sha256
%+TDVJ9HqoJ5ZOmiwM9AM4J/V/qUxiziiKrQE4ZY5ZWk=.sha256
%r5BdbyR+tgyxQ+wULDAcfo9RJ12UxsGDtWPcWGle78M=.sha256
wup wup 👏
%NBW2K0jk7gvdy/GfQ9lco4n0FcZev6V0LvGnnAX8O4c=.sha256
%0EVjJvoQ8l2AMxrcND868Fy9/9bEE60HDyoSbgpcTL4=.sha256
%lVcXzVqBCDyGsZB/Xzo9OgThjFcv/+5XG2w//PWfGQ0=.sha256
%jp5jEKPa0oqAKHJ9VDHtOqsuNh/o4/1bZrVnUcY32Rg=.sha256
%cXYBC5jSPFMDYjqUQXsh+xw3ltfibr5S6L6igywwN2o=.sha256
Sweden is really beautiful, amazon photos. I'm still amazed at the nature whenever I go there.
%fDDtupl/slF7M8YtUC+3c9vIRHiUQ14sNq7WY52GGiE=.sha256
Was going to write something, but I can see the others already wrote what I would have said.
Still hope to see your lovely ☕ pictures in my feed still.
%OaT6TgLAAg1098bGtZqr6tDn9mNUm2/3Ke2idmYtIDc=.sha256
Sure.
There are many areas we have improved the performance. Starting from the lowest level the flume log we have these numbers:
async flumelog:
name, ops/second, mb/second, ops, total-mb, seconds
append, 923964.807, 138.002, 4620748, 690.149, 5.001
stream, 1059075.865, 158.182, 4620748, 690.149, 4.363
stream no cache, 1102803.818, 164.713, 4620748, 690.149, 4.19
stream10, 2540947.641, 379.51, 12714902, 1899.068, 5.004
random, 39715.656, 5.931, 198618, 29.664, 5.001
flumelog offset:
name, ops/second, mb/second, ops, total-mb, seconds
append, 306180.037, 45.74, 3064556, 457.817, 10.009
stream, 294511.348, 43.997, 2945408, 440.017, 10.001
stream no cache, 327724.949, 48.959, 3064556, 457.817, 9.351
stream10, 452973.302, 67.67, 4530186, 676.776, 10.001
random, 28774.712, 4.298, 287891, 43.008, 10.005
Next there is how we handle encrypted messages, where the overhead is constant more or less, meaning it doesn't matter how many indexes you have (https://github.com/ssb-ngi-pointer/ssb-db2/pull/46) . And for private groups the improvements should be even bigger.
Then there is the way the indexes are handled. Currently we have more specialized indexes, I don't have raw numbers directly for those. This will get even better once we incorporate the prefix indexes. Overall these index improvements also means smaller indexes so we save some hd space.
Overall I think we could end up with something like 10x improvement once things are settled. We should know more in around 3 weeks. I plan on using the excellent fixtures to see exactly how much we get. Currently head deep in the implementation of all of this.
Another thing that I'm quite excited about is how the go implementation is coming along. I did some benchmarks a few months ago and the improvements for replication are quite good. I'm also looking forward to changing my server over to the go bot once we have EBT. @cryptix is working on that now.
Remote go:
full feeds: 2.797s
partial feeds: 30.752s
Remote js:
full feeds: 4.026s
partial feeds: 51.746s
%uOtnde4xS4GhW4jYkCZSieloGlcSmfr/QYDa8FNCZzo=.sha256
%DD6KKOVf+KyE/WpVk2MqmI+DIzQQOx+fJekpegqL9ao=.sha256
%iE+obg2F6pslJoOi03WjBMrBBnEzyK8sF3wleALkYbc=.sha256
%K9J5DbY7NpQb88jg5wyt3ypKmEE4oNyTyVrw1Q4LIcI=.sha256
%4XuIVeKEznp0hCy/nkXKK3XQg2x1y2uf3YP7CJ1anbA=.sha256
%AQNGc9G+6mWgilOxQFQJXcRdougXYLmqcHExBPFXXmk=.sha256
This is the first post in my #dev-diary for #NGIPointerPeach #NGIPointer
We (as in Andre and I) have been working quite intensely on getting jitdb and ssb-db2 into a state where we can start using it in manyverse and #ssb-browser. The reasoning for doing a ssb-db2 can be summed up as:
- Performance, the database stores data in bipf
- Replace flume with jitdb and specialized indexes
- Run in the browser
- Work well with partial replication
Jitdb is getting into a pretty good shape, the api is stable and we recently added live support so you can do:
db.query(
and(votesFor(postMsg.key)),
live(),
toPullStream(),
pull.drain((result) => {
console.log("got a new vote on", postMsg.key)
})
)
As Andre has also discovered, atomic-file is not as atomic as one would like, so I made a small wrapper module around atomically to enable it to work in the browser, called atomically-universal that should work better on node.
Private messages are coming along nicely and should be done soon. From there we have about, friends and private groups missing as bigger tasks before you can run a "normal" ssb social app on top of this.
If you are interested in following along or even better helping 😏 our work lives here.
%wCdj5iBUr8TEzmDf37YBqO5LxAd3DznPhb0xCQXpsmM=.sha256
%KmhsObwlguVX1FZdmkNwmFEFjOnXOILBxAk7jA4L/1Q=.sha256
%MDQkclSBfYrKMtL3kPEkYYzlgsZer71B2evZu62sGlA=.sha256
%ADvkjq1nb+uAQuUbqB/e1qsTFv9AVKQodGObVJgIQyA=.sha256
%Pw7rzSxikwk//WEYQV9osljlYVlfwnjXokolAqwIUjM=.sha256
%K0FeG7pGXX/2q/2LxaswFxcgBpX6PpzMRx6NQFDu5A8=.sha256
%QzDSPqRZJg2gGpbREI0FQ0m9pw8oxSfBHKsVFPniyP8=.sha256
%y2QvJBC/kcP1l+lGocyRblkzWNFr7e0xFc4RMwasq7w=.sha256
%SUuSOKKEo6gVt+GGiF44CqvuF4kaUODVKUt6g0bz8Vs=.sha256
%ZOYybUwrnverTvYZtNS/qTXWnIwUdZnlW9O3SMQVuQ4=.sha256
%Rq4QjqhAAmNsfIOQeP5nWIu/8Bn0RQbU6zx7XTwPqnQ=.sha256