Feature: Tag Filtering (Old Diaspora-Pistos Feature)

Diaspora-Pistos had some interesting features on its fork. One of the more useful ones was the ability to exclude specific tags from the stream.

  1. How much work would it take to port this feature?
  2. Does Pistos code here need to be re-done in Backbone, or can we plug it in as-is?

Relevant code parts:


Note: This discussion was imported from Loomio. Click here to view the original discussion.

Basically, I think this could be set up easily enough. Every user has a set of “Blacklisted” tags in their user settings. The stream just picks up these tags and filters out any tags that a user has blacklisted. Every user can add and remove tags from this blacklist, so if someone blacklisted “#Waffles”, and then changed their minds about filtering #Waffle posts, they could easily remove the blacklist for that particular tag, and the stream updates to reflect this.

I’ve always thought that Diaspora-Pistos had some cool stuff in it, that should go into the main project. The two big ones are, in order of importance, groups and post preview.

Groups are HUGE! I’m on Google+ now, and once they got groups, there was this explosion of activity. Communities united under common interests popped up literally overnight. It would, of course, be extremely useful to have post preview, but I think that groups bring the community together in ways that other things don’t.

Um, in case you haven’t already gathered, my opinion is that the next big feature should be groups.

I love the ideas of groups too, but that will take a lot of work just to get the old code ported over. It probably will have to be completely rewritten from scratch to be:

1.) Backbone-Compatible JavaScript
2.) Supported with Diaspora’s federation
3.) Coupled with good tests to fight regression issues.

Tag filtering sounds good to me, would defo like to have it over.

Groups are also something I think everyone wants. But as Sean said, it’s a bit bigger to do. Also I think we have to really design it well.

Groups on Facebook suck. They are hard to follow because you cannot get the updates to your stream.

Groups on Google+ are better, but they have one downside: you cannot post to groups and circles at the same time - which is the most idiotic restriction ever.

I hope we can come up with the ultimate most useful groups solution ever :slight_smile:

About tag filtering:

I think that we really should revise how content is sorted and accessible.

Here is how I see it : Aspects should be improved to include contacts but also tags. But Aspects should not be limited to a list of contacts and tags. For me, an aspect should be like a query. Two axioms : contacts and tags. 5 operators : (, ); !; &&, ||.

So we can make things like:
Aspect “Diaspora” : #diaspora || ((Sean || Jonne) && #annoucement)
This aspect will contain all the posts with the #diaspora tag and all the posts with the tag #annoucement made by Sean or by Jonne.

An exclusion like suggested here will simply be
Aspect “safe”: !#nsfw

The idea behind that comes from an advanced search feature. And an aspect becomes simply a shortcut to this research.

The best thing could be that we can choose which aspect is displayed in the main page / stream, instead of being “all the content by default”.

Of course, we need to put a good view on that because we can’t ask people to write boolean expressions, but I think if Diaspora provides that, it can be a killer feature.

If tag filtering would be (relatively) easy to implement, it would be a good feature to add. If tags can be ‘blacklisted’ from the stream (in the way that posts are hidden and users ignored), even better.

I don’t think we should add features to aspects, but maybe on top of aspects. Lets clarify what aspects are about instead.

Aspects model your social identity through the relationships to your contacts. You do not put somebody into your aspect “Linux” because he’s a Linux user, that would be a categorization. You put him into an aspect “Linux” because that’s one of the topics you communicate about.

I do see tags as way to categorize and filter content, so they don’t belong to my social identity. They are a tool, not a model.

Lets instead build upon aspects. For example a views or filters feature, each aspect might implicitly creates a view, so the current interface doesn’t change too much, but if you delete a view the aspect is retained, because all associated stuff is retained. We can then easily, that is easily in a conceptual manner, add to this view feature, like include the following tags, exclude the following tags, filter public posts, filter reshares, whatever.

I outlined a very similar concept already, but mainly targeted at theposting side: https://github.com/diaspora/diaspora/issues/2577

I really like the ideas going on! Though some of them seems a bit complex, I’d just like to add a detail.

We do actually already have an alternate way of filtering away tags implemented. The feature looks good and it provides you with the option to look at the post if you want to. I’m talking about the #nsfw feature.

Couldn’t we, as a foretaste for the community, add the ability to add other tags to a custom “blacklist”, that extends the #nsfw hiding ability to include other tags too?

@jonneha That’s a great idea. I love it. To me it seemed like an extended and cool version of custom streams, in which besides filtering the content (aspects+tags) you can also set other default aspects than the usual ones - but in an understandable way. The example was great. :slight_smile:

For example, people could add #gif to the list of auto-hidden tags and only show posts from cool gif-people of their choice. Posts with a #gif tag would then behave exactly like a #nsfw tag but with other description ("#gif"). :slight_smile:

@jonneha - I love the idea of creating views/filters from existing Aspects, and I don’t see this as being something super complex to work out technically either, which is always a big plus. It shouldn’t take too much to go from this to the Situations feature you outlined either, which I also think is a fantastic idea.

If we opt to do this, I think UI design is going to be incredibly important, especially if we want to make filtering as flexible as possible. It should be easy for a user to create complex filters without requiring them to have an extensive knowledge of boolean logic (and perhaps even an “Advanced” interface for people that do.)

@ivangabrielmorn - That’s an interesting idea. I think #gif is a great example of how a feature like this could be useful. I also like how the post would remain in the stream. I think this would be a great feature to go along side the filtered views as well as I see them both solving distinct problems. The filtered views for those who want nothing to do with a certain tag, and this for people who want to decide on the spot whether they want to view a certain post. I’ve seen a demand for both of these already on the D* network and I think it fits well with our ethos of letting users take control of their social networking experience.

I think this should be implemented in a more generic way. I.e. allow boolean logic operators to be applied to: tags, contacts and aspects. Such combinations can be saved as meta “tags”, to allow easy filtering by them. Also the default view should be customizable with such logic. This will cover all possible cases, including filtering tags (with NOT operator) and also will allow more interesting combinations, like viewing several aspects at the same time and etc.

More generic approach described here: https://www.loomio.org/discussions/4631

It’s a great idea to use funtionality #nsfw provides - just allow adding new tags and delete existing ones from filter list. That way, also user can also disable #nswf filter which could be ok for somebody. New accounts could be created with #nsfw as a default filter tag.

Tag filtering is one of badly needed features.

It would solve whole bunch of issues such as:

  • hiding NSFW posts completely for users who want to (just collapsing isn’t enough for them).
  • basic foreign language filter - people who have multilingual accounts can mark their posts like #ES, #FI, #RU so others could filter out languages they don’t understand while still following these contacts.
  • filtering out topics people are not interested in (politics for example).

I think it should be implemented on user level and be very basic - just a list of tags, you add something there, posts with it don’t appear in all your streams anymore (public included).

Maybe there could be added option “but ignore filtering for contacts/this aspect” which would be even better even most basic implementation would benefit a lot. New users could have #NSFW included there by default so they could opt-in consciously by disabling the filter.

1 Like