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