Why designing for open source can be difficult
gilli.is
gilli.is
0. A lot of things are not-intuitive, and we've had to do basic UX and looking at our users to understand what the needs where (we don't use telemetry/spying). And it took a lot of time...
1. And yes, this requires to rethink some of the basics stuff for VLC usage.
2. And the nerd-porn part is very true: we solved it with 3 layers of access. Simple usage should be direct, Advanced usage for normal users should be within 2 clicks, and Geek/Pro options can be further away.
And we will have options for different usage of VLC that will impact a bit the UI (but we're making that as simple as possible, to not make the codebase too complex -> more time)
3. Finally, a lot of things had to be decided without consensus, and that requires leadership that is not the usual way we work.
I can share some of the work, if some people care...
Thank you for respecting user privacy, I'm sure the temptation to get more data is strong.
If all you see is "growing" the userbase by nuking and reworking the user interface what happens to us your existing users?
As a direct example -
I use VLC primarily as a music player for my jazz album collection. It handles many formats I throw at it. It has a simple playlist (I play albums from start to finish and do not value a lot of spazzy track selection features).
I have a nice useable interface that works well. I ignore the stuff I don't need, I know WHERE the stuff I do need is.
I use VLC because it doesn't change much year to year unlike the vast majority of flash in the pan music players that go in and out of fashion.
If you privilege growth of new users you don't care that I know where things are and how to make them work. You just reorganize things according to some "designer" that is entirely growth oriented and doesn't care about me.
> The unspoken "problem" you have is that your existing users are doing just fine with VLC.
Some of them yes, some are complaining. Quite many, in fact.
> If all you see is "growing" the userbase by nuking and reworking the user interface what happens to us your existing users?
We're just working so that it still works for our existing users, that's exactly the point of my previous comment. It will require, at some places, to have some options, for contradictory use-cases; but mostly, we will try to support everything that we did, just simplify some cases (changes of subtitles or audio for example, chromecast or access to video effect), and provide a media library to people who listen to a lot of audio.
> I use VLC primarily as a music player for my jazz album collection. It handles many formats I throw at it. It has a simple playlist (I play albums from start to finish and do not value a lot of spazzy track selection features).
It should absolutely still work. If it does not work as before, just tell us why and we will fix. I can even send you some early designs, if you are scared.
We are in no hurry, so we'll do well. It just requires more time, which is what we have :)
> If you privilege growth of new users you don't care
Who talked about growth? We're talking about VLC! We don't make any money by having more users, on the contrary.
We just want our users to be more happy.
I think it was a bit aggressive, though i sort of understand it: one of the most common (if not the most common) complains after a UX change in any semi-popular program is that the change was negative for some people's experience and i think everyone who has used computers for a while has experienced at least once what they perceived as unnecessary UX degradation of one of their favorite programs.
So whenever the topic of some program changing their UI (regardless of reasons) comes up, a kneejerk reaction that goes fully towards the negative side of possibilities is expected. The more time people invest in a program, the more painful it becomes when they feel that their investment becomes worthless.
(EDIT: FWIW personally i do not make any weird use of VLC, so as long as it keeps having the common minimal slider, play, pause, etc UI i doubt i'll have any problems with it :-P)
And we're using 21st century tech to overlay controls on the player.
We're not removing features from VLC, not removing codecs, not removing options.
I love the fact that VLC seems to be able to play and use most any media I throw at it.
I love that I can edit the play/toolbar stuff. Awesome.
I like the fact that VLC still has menus instead of trying to mash everything into a single menu "hamburger" ie like the browsers and some others have done. I'm skilled with a mouse and even I find "hamburgers" onerous to use.
I love the fact that VLCs icons are very simple, clean and clear what they do. I really like that they haven't changed much over time.
Most things seem to be where they should be.
I don't really see anything I wish was gone.
If someone that watches a lot of anime (or whatever) or something needs a special button or context menu added somewhere so they can enjoy VLC more, I'm totally fine with that and I'll likely infer the sense of it if it appears.
Kept
> I love that I can edit the play/toolbar stuff. Awesome.
We kept that, and we will keep that.
> I like the fact that VLC still has menus instead of trying to mash everything into a single menu "hamburger" ie like the browsers and some others have done. I'm skilled with a mouse and even I find "hamburgers" onerous to use.
No hamburger menu, and we're even removing hamburger menu from Android.
On Desktop, the menu bar is hidden by default, but can be made visible always with a simple option. So if you want it, you have it.
Not just that, but the code of the menu has not changed. So all is at the same place.
> I love the fact that VLCs icons are very simple, clean and clear what they do. I really like that they haven't changed much over time.
We don't have many icons, so there won't be any change on that. But I can give you screenshots if you want.
> Most things seem to be where they should be.
We don't change much of the player UX
> I don't really see anything I wish was gone.
We do not remove feature, again.
So again, you should mail me and I'll give you designs and you'll tell me what is missing for you.
I understood the comment fine. Even the way you're explaining yourself makes me nervous about the changes you may or not make.
Maybe I have just been burnt so many times.
What part?
I explain the difficulty we have in designing something and you jump at my throat without even seeing what we do.
Depending on usecase, it's quite possible that current users are successfully using it but could have a much easier time of things with some UI tweaks. It's dangerous, yes, but it can be favorable overall.
Don’t worry, good design work takes time by very definition. Telemetry/spying does not magically fix that, and instead tends to lead to worse designs because people miss the forest for the trees.
Would love to see the work!
With a smaller number of organized sessions, you can still collect telemetry (without spying), and you can also collect all sorts of information that telemetry just won't give you.
I suspect that a hands-on approach can be cheaper, too. It's just not any fun because it doesn't give you an excuse to play with your company's Snowflake warehouse.
VLC is great piece of software. However, I struggle with its UI almost every time I use it. Simple things are hard to find:
* switch subtitle track
* add external subtitles
* switch soundtrack
* add external soundtrack
It's also annoying that rewind buttons in full-screen mode and in windowed mode behave very differently.
You'll tell me what you think about those.
If you take that to the extreme it becomes disrespectful and you'll lose those users to competitors who don't treat them as second (or third) class users.
A concrete example is controlling the player over a unix socket. A "geek/pro" feature to be sure, which VLC and mpv both have support for. mpv provides clear documentation of this feature while VLC provides next to zero documentation of this feature's existence, let alone how it actually works. As a "geek/pro" user, the choice between vlc and mpv couldn't be more clear. The former seems to pay lip service to UX while the later, despite promising little in the way of UX polish, actually delivers a more polished experience for anybody who might want to use these sort of features.
eg There's a workbench drop down selector, with (say) "Part Design", "Drafting", "Assembly", and "FE Analysis" items listed
Choosing one of these options causes the available menu options to change, displaying the appropriate items for the given task.
It's a way of dealing with a lot of choice, more than can comfortably fit on a reasonable single UI window. ;)
And the rest is lack of documentation, and sure our documentation sucks, but that is far from the question here.
And unfortunately 'lack of documentation' is putting it lightly. VLC's barebones manpage directs users to https://www.videolan.org/doc/, which in turn says the documentation doesn't exist and gives the user another link to a wiki. If you dig around on the wiki you can eventually find this brief acknowledgement of the interface in question: https://wiki.videolan.org/Documentation:Alternative_Interfac...
Documentation is part of the user experience (who is documentation for, if not for the users?), and in this regard VLC is very poor. I think this relates to VLC treating technically inclined users like second or third class users.
why?
Because this is the now main complaint we receive and because the usages are changing.
But we will do our best so that the people who just use the basic player don’t have much changes for them.
Ok, thanks, I hope so ;-) I was asking because for me the UI is fine and usually when software gets "redesigned" for no apparent reason it means features get removed because "simplicity".
We are not removing features. If a feature is removed, it is a bug, and it will be fixed.
Seriously.
eg: /home/user/stuff/foo [192kb]
Worked fine with VLC 2.x, but VLC 3.x won't find the files in the directory.
It was really annoying having to go and manually rename lots of directories, recreate .m3u files to match, etc. Wasted hours on it. :(
I do have a request. If at all possible, please make it possible to continue using the current UI and keyboard shortcuts as an alternative.
I like trying new things (skins or whatever) but I like being able to revert to the UI I'm familiar with too.
Current UI is impossible for numerous technical reasons and for maintenance. However, there will be options so that it comes quite close to the current version.
Shortcuts are unchanged.
As for why they want to one obvious reason might be that the saw potential to improve it.
Kind of a weird comment, but honestly I think these are the best reasons for why a volunteer driven open source project should do anything to their ux.
Because users are asking us to.
Even better!
See reddit, gnome, Windows 10, ... there is a long list of redesign-fails.
You know what, I 100% agree. Mail me, look at the designs we're discussing now, and tell us what does not work for you.
Yes, per media preferences for subs and filter.
Good things rarely are produced with a "design by committee" process.
Technical design of the VLC core is done a small number of people and we've always found consensus without bloat.
But for design, you are correct.
A blog post, maybe?
And thanks for the great tool!
Telemetry can perfectly be done in a privacy-conscious way. Getting real user feedback is paramount, but telemetry is super important as well because it has a scale that you can't achieve just by asking users.
In the case of VLC, telemetry would help to know which options are used the most and which ones are not. It could help knowing which menus are never accessed.
Besides that, no idea.
Serving average users by providing sensible defaults is a good idea but why does so many think that removing settings is a natural next step?
I've joked[0] about making a slide deck and start selling training to every modern software company :
> Have your cake and eat it too!
> How to please all your customers at once - Combining sensible defaults with the forgotten art of making your software configurable.
UX designers are often seduced by reductionism because it makes their lives easier and combined with various hand-wavy aesthetical rationalizations, proceed to ignore several immutable aspects of reality:
Developers of an open source project usually have little insight into how their project is actually being used out in the real world. They only know about their use cases and (if they're lucky) that of their co-maintainers and bug reporters.
If at some point in time, an option was added to make some piece of the project do "x" instead of "y", it is overwhelmingly likely that the option _was put there for a very good reason_. Just because you don't know the reason doesn't mean one doesn't exist.
If the project has more than a few dozen users worldwide, then it is extremely likely that for every UI widget, command-line option, or configuration setting, there is a non-trivial subset of users who rely on that thing being there for their workflow. Remove it, and at best you lose those users. But more often you make them angry as well.
When looking at others' code and designs, it is a very human trait to assume that the person who created it didn't know what they were doing and that the way _you_ would do it is better. I get this and I fall into this trap more often than I would like to admit. _But it is almost always wrong_. We often look at the code in a vacuum and don't see the context under which is was written and why it is still there.
I've watched this happen time and time again with various open source projects: Person (or team) creates a successful project, maintenance of the project shifts to a new person or group who decide that the old project was "unmaintainable" and decides to a ground-up rewrite into what they _think_ is going to be a better version of the same thing. When in reality, all they have done is written a new, far less useful version of a somewhat similar thing.
Citation: https://www.joelonsoftware.com/2000/04/06/things-you-should-...
Problem is, as the author notes: developers loves to work on these features.
I also don't have a problem with devs cutting down unmaintainable mess.
My problem is with this general idea that a designer should come in - especially in open source projects - and decide what is and isn't useful.
I also guess that some of the problems one see when designers try to join open source projects might be related to this.
A few large open source projects have tried to improve usability by removing features and options. Look at the history of Gnome 1 through 3. Professional UI experts were paid to produce usability advice for Gnome[1], and the Gnome developers responded with the wholesale removal of configuration options across dozens of major programs[2].
Mostly I actually liked this, because I prefer clean programs that I don't have to mess with. But a lot of other users were unhappy, because many desktop Linux users prefer knobs. Which is fine!
But what about Windows users and open source applications? Here, success may be more of a mixed blessing. I've heard several open source maintainers say that their Windows users are more likely to get angry with volunteer maintainers, and to display the sorts of behaviors mentioned in [3]. So widespread popularity isn't always a goal. Sometimes people just want to make a niche tool for other enthusiasts.
So it's worth asking whether any given project is seriously trying appeal to "the average user who just wants to get things done." Some are, some aren't.
[1] https://people.gnome.org/~calum/usability/ut1_report/report_... [2] https://ometer.com/preferences.html [3] https://medium.com/@fommil/the-open-source-entitlement-compl...
Not infrequently a settings page grows and grows until it becomes a chaotic mess, but that's not a problem of the knobs as such, but rather of the design of the settings page.
Also, a lot of the times the inline documentation leaves a lot to be desired. Perhaps the best example of this are many games where the graphics settings are just a jumble of technical terms with no explanation or even indication what is faster.
Do you know the story behind why Sun was doing this work? I had no idea they were involved in this major culture shift in Gnome. I thought they were more invested in CDE.
You can see their focus - business users, scientists, creatives - and how that might have led to the current design philosophy of Gnome.
See e.g. https://www.gnome.org/press/2000/08/sun-joins-gnome-foundati.... Quote:
> Sun Microsystems, Inc. announced it is joining the GNOME Foundation [..] Sun also announced it will adopt GNOME 2.0 as the future desktop for its Solaris[tm] Operating Environment.
Be warned, above announcement is from August 2000.
I think that's the key. Unlike software development, where you can improve things here and there incrementally, with design you need to have an overall view of what you want to do, where you want to get, how the final product should look. You can't tweak a margin here, add a border there over time, it doesn't work.
And indeed, I suspect that's also why there are so few designers contributing to open source. Anything of value they might suggest often means a big redesign of the app, which nobody will be willing to do. It's a tricky issue, to which there's no easy solution other than spending a lot of time and/or money, both of which are often lacking in open source projects.
There's a downside to this too though. Take swagger-ui[1] for example. A few years ago I installed it at my company. It was great. Then managers wanted more features, so I peaked into the source and found it wasn't too hard to augment the HTML/JS. I added a search bar to filter HTTP APIs by dynamically altering the JSON document. I added a button to generate a PDF. I added a drop down to select release version from a database. It was quick and easy and hackable.
Then they got sponsored and redesigned it from the ground up "professionally" using React. I recently tried to upgrade to the latest version and... the level of complexity has gone up several orders of magnitude. Whereas before I just opened index.html and started hacking, now there isn't an index.html at all. It's all a labyrinthine nest of components and configuration files that somehow get magically compiled and bundled with some build process and I have no idea how to even start porting my features over.
I suppose it all makes sense to full-time React developers, but seeing as I mainly work in embedded Linux drivers, I don't really have a desire to learn React since I was previously coerced into learning AngularJS which I now regret.
So I guess my point is: if you pull in professional designers to design your FOSS, it may become less accessible and hackable for non-designers like me.
Compared to non-professionals who stick with tried-and-true glue (vanilla js, html, php, python, etc.)
It would be like if Jenkins got a sponsorship, so they hire professionals who rewrite the entire thing in Rust because it's the best suited for the job by the professionals' reckoning. Never mind that barely anyone knows Rust compared to Java.
Some might do that. Others might well tell you they have a professional obligation to make sound engineering decisions rather than chasing trendy ephemeral fashions.
I think many software developers would say exactly the opposite (and I think both would be wrong.)
Except the marketing effect of a new UI, do you have literature (or just easy explanations) that would help me understand why this should be the case?
I disagree. You better have a unified vision on how your project should grow otherwise it will become a ball of mud.
Edit:
Although I agree that software decisions may not impact the end user in a meaningful way.
Other kinds of software which are a particularly good fit are non-end-user-facing middleware and libraries implementing a standard or a protocol. That standard or protocol pretty much describes what the software must do, and FOSS software often becomes the "reference implementation". Think of zlib, libpng, ffmpeg.
For the regular monoliths you need a team that is much more well-knit and communication and focus is key. Each unit of code has a lot of dependencies and it can quickly get out of control without any "social" coordination.
This reminds me of Jenkins, which is the most nightmarish piece of software I've ever worked with. The plugins are of such wildly varying quality that it's hard to tell if something broke because of a plugin you just upgraded/installed, because the VM Jenkins is on got upgraded etc. And it's plugins all the way down. Plugins built on plugins. So if you try to file an issue with one plugin, they'll often just point you one plugin down the stack.
You get what you pay for, I suppose, and obviously a lot of people like the tool.
Consider instead a system like emacs, firefox, or mpv. Where the plugins/extensions/scripts are selected and configured by the person who's actually using them. Choosing what they want ignore what they don't, the result is a system that's understood by the person who actually uses it.
It's a platform that offers a simpler way of building serverless backends [1], and so it's naturally targeting developers. As a developer myself I know how much I appreciate things being open-source and free. At the same time it would come with huge business model challenges in my case and kind of erode what my product is all about (simplicity and having things taken care of for you).
While the article does not really offer any answers, I'm curious if anyone else has any experience to offer in this regard?
Our customers pay us for peace of mind, which takes work (and automation) beyond the core functionality of the open source product.
Happy to discuss further.
A lot of highly popular contemporary open-source tools are feature-rich. Foobar, Winamp and VLC are all full of stuff you won't need (but what this stuff is depends on you) and extendable. Notepad++ has perhaps the largest number of menu items I've ever seen in a program. Not to mention browsers (whose feature creep is legitimately dangerous, and yet necessary), classic linux tools, office suites, IDEs, PDF editors... Even in the author's example (a sync tool), I'm not sure I agree. Dropbox with its (relatively) minimalist design was fun until at some point it broke for me (getting stuck in an endless sync loop). With some debug info, I may have found the issue and gotten it to work. The way it was, I just switched to Onedrive.
A more reasonable rule is probably "don't include features that could be split off into a separate tool without loss of efficiency or functionality".
...
Every single one of them has so much delegation (to achieve some fucked up definition of minimalism) that it’s not even funny. And with async await it’s downright maddening. Even in node 12 with the async stack traces flag.
I’m taking over maintenance of a service and it’s throwing an unhandled promise rejection that’s a 403 error with a one line stack trace (which is in the wrapper we wrote because the library somehow isn’t minimalistic enough for our tastes). Took way too long to catch in papi. The stack trace is huge, none of our code in it at all, and the request is not even in scope for two or three frames away from where the error is thrown. This is, from a user’s standpoint, an awful library.
Anything I struggle to debug, I can guarantee at least a few of my coworkers will bring the same problem to me. Which means I spend three times as much time looking at bad library code as a junior developer would. That fosters a lot of contempt for code that is ugly on the inside.
What I really want as an industry is for us to start judging third party code by how sane the stack traces look. This has been bugging me ever since J2EE traces started going north of three pages (with the same series of four frames appearing three times). And sane stacks are going to require us to stop avoiding having a bunch of methods with a single line of duplicated code in them. Quelle horreur!
The whole point of code reuse is to reduce duplicated effort not lines of code. Arcane call stacks are huge amounts of duplicated effort, by people already having a bad day.
DRY is not worth all the lost hours and energy wasted in debuggers. Do better.
I'm not sure if you're implying that Foobar and Winamp are open source. They aren't.
Some will complain that these are not discoverable and that’s true but advanced users will often be fine reading the manual and I suppose making them discoverable without confusing the average user is difficult.
Though, for that particular problem, I think having a UI that produces an automated report for the developer which lists the state of all the relevant options/knobs can improve the situation significantly.
Why? Because a customer adopting your product is risky, dangerous, and uncertain for them. They’re squeezed for time to learn your paradigm. They’re staking their reputation on the line with a boss, coworkers, and company.
The great irony is, that by adding features to support one additional customer, you harm the ten customers you already have. Ten happy customers become eleven “okay” customers, then twenty unhappy ones. Make the interface too complex? People will quit. Too many widgets, settings, and knobs will torpedo a project in no time.
First of all often what one person considers boring another considers fun. Optimization was used as an example, but often optimization can be really fun (its like a puzzle). More generally, in my experience with an open source project that has both volunteers but a majority of paid devs (MediaWiki), often the volunteers are motivated by making it work well for their niche and will take on really annoying projects important to their niche that have been ignored by the paid devs as not being cost-effective or a priority for whatever reason.
There's one case I've run into where themes are great. That is when one wants to improve a craggy FLOSS interface. Invariably a craggle will ask for an option to turn the ugliness back on and a non-default theme provides the perfect place to do that.
https://www.oldbookillustrations.com/illustrations/corliss-s...
https://openlibrary.org/books/OL13511601M/Appletons'_cyclopa...