As mentioned in #402, I'm interested in splitting out what is currently channels into something more useful/obvious.
The current channel system has a number of problems, where it is somewhere between groups and tags. But not really very good at solving either problem.
The question keeps coming up "how do I add multiple channels?". And it would be really nice to have channels that had some kind of identity outside of its text name (a key).
So I propose we turn what is currently channels into tags. That is, existing posts with channels will count as having a single tag (the channel name), and new posts will use channel mentions (#hashtags) to determine their tags (and maybe set the first tag mention as the channel for backwards compat reasons).
Tags can do virtually everything that our existing channels can do and more. They'd also be much easier to understand.
Once we get "groups" or something similar, I think patchwork gets taken to the next level where suddenly it becomes possible to use it instead of something like slack. Non-group chat becomes general social network stuff. And groups become like subreddits or slack rooms, each with (potentially) a whole unique community associated.
Some thoughts about groups:
They wouldn't have to be private (or require membership) for this to be useful. Just need to be able to assign an actual ID to groups (maybe based on the id of a type: 'group' message) rather than them being text based. This would allow people to rename groups with about messages 馃帀
Also maybe following a group would be like following a pub in that you replicate the other members of that group.
I think this makes sense.
The hard part with channels -> tags is how to do the query. I don't know an easy way to do it with the existing APIs. It might need to be a new plugin.
Also, I added support for linkifying hashtags in ssb-marked, branch hashtags.
I think it's an interesting idea to make following a group message id translate into replicating the feeds that also follow that group message id. It sounds like it would help us be able to make topic-based groups. I wonder about the implications for the trust network. It would mean that we would get messages from users without necessarily having a path to them in the follow-graph. Also, if a feed dies from key loss, we shouldn't need to replicate it anymore. What if people could add and remove eachother from the group, as a cooperative data structure, like we give eachother names? Then following can still make sense, since someone couldn't just self-identify into the group and be stuck there: other people could remove them "if they don't belong"
@clehner I've started experimenting with an alternative index (inspired by something @dominictarr said last week at dinner) that indexes all mentions (including blobs and channels/tags). I think this should handle it nicely! It should also be able to replace a lot (or maybe all) of the places we're currently using the query/links index.
https://github.com/mmckegg/patchwork-next/blob/mentions-index/lib/sbot-mentions.js
Oh, the key to making tags easily indexable is to include them in ssb-mentions so that they're listed along with all the other things like contacts and blobs.
@mmckegg very cool! i am studying that index now.
here is code to get ssb-mentions to include tag mentions: https://github.com/ssbc/ssb-mentions/compare/hashtags - this depends on ssb-marked@hashtags
@clehner I haven't actually tested any queries using this index, so unsure if it works. Planning on coming back to it soon.
var type = ref.type(value)
if (type) {
// emit for all mentions
emit(extend(msg, {
ssb-ref would need to be updated to return a truthy value for ref.type('#tag'), or else the tags in mentions will get ignored
What do the next steps on this look like? I think it's a great idea but I'm not sure how all of the pieces should go together.
Is this still relevant? If so, what is blocking it? Is there anything you can do to help move it forward?
I think this single issue embodies 99% of all my struggles with SSB. I love the technology, but I just don't get how to use it. I have basically three use cases.
I feel like either SSB is just not for me, or it tries to be somewhere in the middle and not doing any of them well. As mentioned, channels are too much like tags where you're seeing a bunch of loosely related content rather than some topical interaction. Currently all my posts go to all friends and pubs, making it unsuitable for use within a private organization. And I think Twitter is just not what SSB is due to the offline/invite nature, where I can't easily discover interesting people or build a following.