Wednesday, June 17, 2015

Criticism of AO3's User Interface

A few observations on UI design prompted by a comment I read on reddit.
Look at Archive Of Our Own for a good example. It has a much, much easier interface than fanfiction.net, its tagging system is rich and has a lot of advantages, it has nice features like letting you group stories into collections, you can reply to reader comments with proper discussion threads, etc. 

On A3O you can't do social tagging as you could with delicious more than a decade ago. There is only dictatorial tagging with the author being the sole dictator. You also as a reader can't cut out seeing insignificant tags, whether it's because they're so general as to be meaningless or so unique as to be unguessable. So those useless tags clutter up your attention and screen space while browsing, slowing everything down. Even though detecting insignificant tags by software operation is trivial.

You also can't do logic operations with search operators, only nest searches in a narrow way. You don't even have access to the simple NOT operator. And finally, the whole paradigm of search is entropic because it annihilates the existing lattice structure that exists in browsing rather than filtering that structure and collapsing sparse branches.

The comment system offers no levels of privacy nor ways to aggregate comments OR readers in any useful discussion-oriented manner. Because A3O isn't about discussion nor debate nor criticism nor anything like that, its model is strictly pairbonding and attentional. That's why "gift stories" exist on A3O. Everything is about readers giving attention to the author and possibly authors giving attention to the readers and authors giving attention to each other. And that is IT. A3O is functioning at the level of a human infant.

And because every comment is public, it's impossible to hide anything. Which means that strangers can scrutinize your interactions and apply their values to them. And which values get applied in any large open community? Gaian values of doing nothing, surviving at any cost and giving no offense to anyone for any reason whatsoever. Anyone who critiques others heavily is labeled an antagonist, a "troll", and totally anathema to the rule of giving no offense to anyone, thus driven out of "the community" which is more important than any abstractions like "good storytelling" or improvement or truth or critique. Gaians run every open forum in existence, and most closed ones. It's so easy to ban people as "offensive" when everyone can see all of their stuff and you just have to wait for an asshole to report being offended.

Some features I'd like: * For readers: a feature to auto-recommend stories based on the currently viewed story or your pattern of likes, sort of like Amazon does.

Extremely difficult to implement, requires machine learning. Unlike cutting out insignificant tags which only requires an asshole to think about it. (I say asshole because there are virtually no systems designers anywhere and so you rely on assholes for all your software needs. Enjoy your frustration.)

And in any case, the "features" paradigm of design is Gaian. A feature is a property of something that has a specific purpose. X is for Y. It's an incredibly narrow way of thinking that invariably produces broken software and kludgy software that's impossible to understand. Look at C++, it's a Gaian "evolved" programming language which absolutely no one understands and everyone claims is able to do anything but in practice can do absolutely nothing. Every program written in C++ is intrinsically broken, precisely because of its many, many, many "features". Brokenness is an intrinsic property of Gaianness, or any biological or ecological or evolved system. The only property those systems have is survival by cravenly appealing to their audiences or neighbors.

Genuine design works on the meta-level by COHERING features and ERADICATING features that don't fit within higher principles. Or even merely eradicating features whose benefit is not above a certain minimum which represents the cost of the feature taking up the user's and all programmers' mental space (so they can learn to avoid it as they inevitably have to do with broken crap). Undesigned "evolved" systems that have features added and added and added with none ever taken away because some asshole depends on them, are intrinsically broken because 90% of them is unused by 90% of the population, and 50% of them is unused by 99% of the population. And it's always a different 1% that wants each tiny feature and will whine. And Gaians will say cravenly that there is a "demand" for each feature and it would take "effort" to remove them.

For authors: a way to upload chapters and have them published automatically at preset dates/times.
See, instead of having a "feature" that does this, such as a script or something, you could just have a versioned object system that symmetrically allows you to read and write both the past and the future. So instead of a "scheduled" story, you just have a story that's written in the future. But nobody does systems design, least of all "architects", everyone is enamored of their little "features" which are really kludges.

The advantages of writing in the future are obvious: no more deadlocks ever but rather a solid transaction-oriented system. The advantages of writing in the past are difficult for lesser minds to fathom but they are far far more extensive. They boil down to: equity. If designed correctly, writing to the past can be done without the possibility of unending time wars.

But of course, there is that problem "if designed correctly" and the lack of systems designers on the Earth. At least recognized job-holding ones with significant whip power. It doesn't help that few systems designers understand systems design or can teach it, so you mostly end up with assholes with pretensions of grandeur like the inventors of Unix and C. Both of them 50 year old dinosaurs that really should have every single contributor to them summarily put to death.

I am not prepared to forgive the existence of C or Unix or C++.


So in summary, AO3 enforces the values of brokenness and inequity while superficially appealing to values such as freedom but really anarchistic hatred of all social organization.

No comments: