-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Remove group tangles #35
Conversation
There is a risk of replicating a lot, if there are a lot of offline communication/ coordination, or the excluded people are in network islands with excludees. On thinking about it more I'm not that worried about this case. I think what will happen is Oscar might get back from a holiday with their friend Percy, and they have been chatting, collaborating, then Percy replicates and sees Oscar is out. Their collab with Oscar will pull Oscars messages in .. but not once they're in sync. I guess my question is "how bad could it get?" with the group tangle. Also it's easy to drop the group tangle, but impossible to put it back in eh? |
The risk of replicating a lot is there, and we don't know yet how people (excluded people) could game this to maximize their revenge. I think the group tangle is a great way how they could game the system, and I'd like to close that door. Again, why are we having a group tangle? What problem does it actually solve? I've been asking this almost a year now and got no answer. We should drop such "solutions".
What about not adding solutions till we need them?? |
I tried looking through the tribes2 code but couldn't find a place where the group tangle is directly used. Fwiw. Still, I think the group tangle is nice metadata. It doesn't inherently hurt anything. The ooo replication we just decided on is a separate maybe-problem we've introduced.
As mix says, it's easy to take out but impossible(ish) to put back in. If people would start using groups, then 2 years later realize a group tangle would've been great for some future feature, then we can't go back and add it to all old messages. How about here
changing SHOULD to MAY. Defined as
Then we could leave it up to the ux designer of whatever app implements this in the end, if they want complete or incomplete history in a group. While still keeping a clear definition and ordering of everything that's canonically in the group. |
I like the change from SHOULD to MAY, and I can see that regarding killing group tangles, I'm the minority here. But still I'd like to invite you two to think about it, not from a perspective of "nice to have" and "possibly in the future might be useful" but from good programming principles such as YAGNI (you ain't gonna need it), KISS (keep it simple), and rule of least power. To quote a few, "Always implement things when you actually need them, never when you just foresee that you will need them" Ron Jeffries co-founder of XP and "It is hard for less experienced developers to appreciate how rarely architecting for future requirements / applications turns out net-positive" John Carmack. On the argument of "impossible to add in the future", I think this is overstated. It's not too hard to create a new group schema with a few tweaks, possibly even automating the migration. |
When it comes to software I agree with KISS etc. But software has traditionally been very mutable and adaptable. We're however working with immutable data structures. That's probably more comparable to building a house that might last a 100 years, and where you can't suddenly swap out the foundations. I wonder if building architects agree with YAGNI, or if they have another principle they work by. |
I like the "MAY" suggestion. At this point I think we can agree it's an empirical question and we need to choose one, document this decision fork for future explorers and perhaps choose the path which would be best to illuminate. Propose we go MAY and move on |
Ok, y'all win :) |
Context
We had a video call yesterday to discuss how to proceed with #15 being stuck, and we came to a conclusion which is #34.
Problem
However, #34's exception for tangle integrity means that maintaining the integrity of the group tangle means effectively replicating all messages from the excluded member, sort of nullifying the benefits of that exception entirely.
Solution
I suggested removing group tangles because they don't seem to solve any concrete problem at hand, but instead are creating a new problem. This PR shows how that would look like.
Caveat
One of the previously claimed benefits of group tangles is that
Which this PR removes. However, I think it's fairly simple to fix this, by just having a free-form part of the exclude message where the admin can insert a "reason" field or link to a discussion thread.
Another thing removed by this PR is how the
init
of the next epoch is NOT directly linked to theexclude
msg in the previous epoch. However, I also think we can just add that msg ID if we need to, or we can even question why do we NEED to link these in the first place. What (concrete and experienced) problem would they solve?