Feature: Tag Filtering (Old Diaspora-Pistos Feature)

ST Sean Tilley Public Seen by 71

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:
* filters.html.haml
* tag_exclusion.rb


Sean Tilley Tue 9 Apr 2013 11:06PM

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.


Brent Bartlett Wed 10 Apr 2013 1:13AM

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.


Sean Tilley Wed 10 Apr 2013 1:33AM

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.


Jason Robinson Wed 10 Apr 2013 7:24AM

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 :)


Flaburgan Wed 10 Apr 2013 9:17AM

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.


goob Wed 10 Apr 2013 10:51AM

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.


Jonne Haß Wed 10 Apr 2013 2:24PM

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


Ivan Gabriel Morén Wed 10 Apr 2013 9:04PM

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. :)


Ivan Gabriel Morén Wed 10 Apr 2013 9:08PM

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"). :)


L3MNcakes Fri 12 Apr 2013 8:11PM

@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.


Shmerl Sun 14 Apr 2013 1:28AM

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.


Shmerl Tue 9 Jul 2013 3:38PM

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


Maciek Łoziński Mon 5 Aug 2013 12:23PM

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.