For the Sheep


Here’s a post by quollism on a thread on BA discussing funding a UI coder (or 20). It’s a long read, but definitely worth it (or if you’re lazy, see the tldr at the end):

As a working software developer who read “Don’t Make Me Think” years before Andrew Price did as part of my job, let’s have a sober assessment of this UI proposal.

There’s a lot of good ideas in here. This is a much kinder program to use than the Blender we currently have. The tabs could work, I’d rather have the notifications panel than the damn outliner, and I could probably live without RMB select as long as I can keep MMB for camera view because it rocks. (In fact, I could probably do without single-click 3D cursor placement entirely.) There’s a fair bit of stuff in here that would be relatively trivial to implement.

But overall what’s being proposed is frankly a way more expensive program to develop and maintain. We are never going to see this in a hundred years from the Blender Foundation with its current level of development resources. Something this richly helpful is going to be difficult to keep giving people free of charge.

Listening to Andrew’s general attitude during his last BlenderGuru podcast, he’s pretty much ignorant about the process of software development, even after Campbell sets him straight – in Andrew’s world, giving money to developers means they automatically know everything they need to know and can go from zero to competent. Newsflash: software developers are not magical knowledge unicorns and money doesn’t solve everything. It’s OK to not know this stuff, but to not listen when a software dev tells it to you is the kind of behaviour I’d expect from upper management in a large corporation. Even just estimating the amount of time it would take to do this properly would be weeks if not months of work for a highly experienced developer.

There’s also the notion of growing Blender as a business. Engineering Blender to be this user-friendly will not come cheaply or quickly, even before a single line of code is written, and once that standard of user-friendliness has been set it takes maintaining otherwise the product loses user esteem. It’s an utterly astronomical decision, a very real course change, and not one that should be insisted on through popular revolution.

Developing UI/UX polished to this level is plain impractical given the Blender Foundation’s limited resources – adding workflows, features where the software can figure out from context what you’re likely to want.. gah. Blender at the moment is a lot like the C programming language it’s implemented in – it puts absolute trust in the user to know exactly what they want to do, because that’s the cheapest kind of system to implement. Added UX intelligence like predicting what function you want before you’ve even done it adds development and maintenance overheads, so the overall development and maintenance requirements go up and features take longer to roll out.

Blender is an introverted creature that warms up to you over time to reveal its richness. If you want something that holds your hand, even just a little bit, a lot more design and forethought has to go into it because there’s supporting systems that have to be coded to do conditional menu registration and who knows what else. Paradigm shifts cost time and money, and we’re definitely talking about a paradigm shift – he even says as much: the UI he’s proposing is task-oriented. To design that, you need to know the task.Newsflash 2: The task is not the tool. The task is no longer “Cycles Material Editor”, it’s “1000 Things you can do with Cycles Material Editor”. Someone has to figure out what each of those tasks are and build a friendly workflow – after a workflow editor is designed and built. Development and maintenance requirements thus shoot up like Diet Coke and Mentos and features take longer to roll out.

Assisted workflow is actually worse in some cases. That context-sensitive right-click menu he mentions? What if you want to bridge two loops but one loop hasn’t got the same number of verts as the other? If you try a bridge under the current system, it knocks you back. What’s a general solution to the situation where the user wants to do something but hasn’t created the right conditions to do so? Current Blender solution: trust the user and tell them “You can’t do X because you didn’t do Y”. Future Blender solution? … again, development and maintenance requirements go up and features take longer to roll out.

And graphically? Words and textual descriptions are cheap. The right icon is not cheap in any sense of the word – you need a designer, you have to wait for the designer to make the icon because good icons take thinking about, and you have to pay the designer when he’s done. Development and maintenance requirements go up and features take longer to roll out.

In the grand scheme of things, representative of the amount of work needed to actually bring Blender over to a UI like this, the proposal is woefully incomplete. A lot of sweat has gone into this, no doubt, but what he’s bringing to the table is a set of broad principles with a few cherry-picked examples of how things could be nicer. Is there a design document that covers a blow-by-blow refresh of the entire UI, complete with workflows for every single function Blender currently provides? Not that I can see. Low-hanging fruit has its name for a reason and this proposal’s full of it. Right now what I’m seeing from Andrew is “I want someone else to deal with the rest of the iceberg while I take all the credit for identifying it has a tip.”

He’s not dealing with the iceberg himself. This is open source we’re talking about here. It is dealing-with friendly, but if you want something and you can’t make it or get it made, take a seat and help yourself to a cup of shoosh. Ideas are cheap and anyone can read a book on UI or UX or IA.

The day we have a multi-hundred-page high-level design document that someone can hand off to an experienced UI-centric developer which covers every possible workflow of every possible tool of Blender, with scalable guiding principles to move forward with and system designs underneath the hood of how this can all be implemented, then I’ll consider this a thing. Until then, a lot of sweet smelling smoke is being blown up a lot of rear-facing orifices by people who demonstrably don’t know enough about the particulars of the smoke they’re blowing.

I’m not even going to mention except in passing the cultural impact of flooding the Blender Community with noobs because suddenly the software is way easier to use. There’s a rule that says if a group of people grows by more than 15% in a given period of time, there’s a cultural shift because there’s not enough oldschoolers to bring the newbies into line.

But as the taco commercial goes, porque no las dos? – why not both? Here’s an idea:

Blender Foundation continues to develop Blender as quick as they can adding new features, working on the underlying engines and doing enough UI to make the tools useful if not super user friendly. This is your cutting-edge version with fancy new features, RMB select, whatever. Basically the bare-bones “just tell me what to do and I’ll do it” version. This version is and will always be free and donation-supported.

Alongside standard issue Blender, someone like BlenderGuru or (frankly much more likely) CG Cookie maintain their own distribution of Blender with UI and workflow enhancements over the top using their own team of coders. The machinery underneath the enhancements is the same as standard-issue Blender, but it’s tailored to people who want that task-oriented interface and don’t want or need the extra control. BG/CGC can charge for EasyBlender/GuruBlender/CookieBlender binaries to sustain code upkeep, and donate part of that charge to BF. In a nutshell: if users want the added benefit of super-enhanced user-friendliness they can pay a premium for it, because not everyone wants it and frankly what’s being proposed is a premium-level feature set in terms of development and maintenance.

Brass tacks time: good experienced developers command anywhere from $50,000/yr to $1000/day. UI/UX consultants are probably going to be double that amount. Campbell estimates it’d take a developer at least 3 years to get familiar enough with Blender’s codebase to be able to work across it.

Anyone got half a million bucks spare? Any takers? No?

TLDR: Some nice ideas Andrew has, but it’s only a tip of the iceberg – he may as well have posted on twitter “I don’t like Blender’s interface and someone should change it” (to paraphrase)

Well written, thoughtful, intelligent and unbiased. It’s about damn time we got people thinking like this, otherwise the debates are nothing but religiously ignorant opinionated spam.

Personally, I think we can benefit from this UI debacle, but only by improving the small issues we have in terms of consistency and usability. There is no need for a huge UI redesign. I could rant for many more thousands of words, but instead I’ll point out that whether a program is easy to use and has tonnes of users or not is irrelevant. One such “great” program is MS Paint. Do we like it? Would we donate money to the developers of it?  Would users of Photoshop and Krita takes us seriously if we told them you could paint the Mona Lisa with it if you tried?

Currently, the only reason professional CG artists take Blender even slightly seriously is because it’s not some simple application that does everything for you. I know that’s not the idea that’s being proposed, but that’s what it looks like from the outside.

To conclude, advanced long-time users such as myself need not worry. Keep calm and remember that the devs are smart people.

If you are a new user and are struggling to learn this crazy program, relax, enjoy the ride, and don’t allow your own opinion to be skewed by anyone.

4 thoughts on “For the Sheep

  1. I personally stay far from these discussions and I agree that It is an excellent initiative but it will never happen. People need to realize that things like these would require tremendous manpower, funding, planning etc. What many people seem to forget also is that Blender has already undergone a redesign (the 2.5x project, still ongoing btw). How about we work on what we already have and make it better. Andrew Price’s video was good but wasted effort IMO, the ideas are clear and we get the jist for the most part but we don’t need a Chrome, Lightwave, Cinema 4D, Photoshop hybrid beast to do art. I agree that the Blender UI is very inconsistent in some areas and you practically have to hunt for features at times but it is good and it works. Following _other projects_ and repeatedly dumbing down stuff for new users and rewriting core features isn’t a good model.

  2. I often get the feeling that experienced Blender users resist UI changes with a kind of “I spent my time in Hell learning the Blender UI and so should you” philosophy. That’s not so much a solution to what most users see as a significant Blender shortfall, but rather it seems to me more of a status quo Rite of Passage to become a recognized Blender expert.

    In my opinion, I think Andrew Price is spot on. Of course the bumps in road are time, effort, funding, and consensus.

    Beginning in 1978, I was assigned as the project manager for automating a personnel assignment system for an organization of 20,000 people with ever-changing locations, extremely high turnover rates, and a complex matrix of personnel qualifications to work requirements to include a bewildering number of possible exceptions and substitutions for each job at each location. At the end of every quarter when 10% of the work force were transferred, retired, or joined the organization the trick was to ensure no one was left in limbo without an assignment for which he/she was trained or otherwise qualified. Simply put, it was a highly sophisticated resource allocation model that required an extremely high probability of recommending the right solutions. Manual excepts could be and were made, but they tended to cause a domino affect because people were not able to calculate how many other assignments were voided in the resulting chain reaction.

    I know well the magnitude of the compounding problems of balancing time, funding, level of effort, and finding at least two people who could agree on anything.

    When I was assigned to that position, the only thing I knew about computers was that they were used by NASA in the space program, but I had no idea what they did. Why was I thrown into the lion’s den for such an assignment? I’ll never know for certain, but I was told one day it was because I had always been successful in previous “impossible” assignments, and this project was loaded with impossible problems to overcome.

    Because the development team was small and over committed and my management team only consisted of two other people, one of whom was strictly administrative; I taught myself how to write code. Eventually I ended up writing all of the code for the output products (just short of 200,000 lines) in the Natural language which was a predecessor to SQL.

    My point is that I clearly understand the problems associated with technology/programming development. It’s damn hard to get it right. And it’s pretty much a thankless job because you can’t please everyone. It’s the art of compromises.

    It took nearly four years to complete the assignment model but a user with no personnel management experience could solve mind-numbing personnel assignment problems with a few hours of training. A good deal of the effort was focused on ensuring just about anyone could use the system (remember, personnel turnover was very high, even at the headquarters). It would have been easier to produce a three ring binder with the hundreds of steps a personnel manager would have to accomplish to produce the desired reports–but that would have been wrong.

    For the past 25 years, I’ve been an independent consultant to government high technology programs, primarily for the military. I know how the technology and programming sausage is made behind the scenes–and it isn’t something you want your kids to see.

    Adding functions and buttons to a UI wherever you want or wherever they will fit is a walk in the park. Just keep adding stuff. However, as more functions are added, the UI becomes increasingly user unfriendly because there is no overarching UI design other than to squeeze new stuff in wherever it can fit.

    That appears to be the case with Blender. New buttons, sliders, data fields, nodes, etc. appear wherever they can be stuffed into the UI. In too many cases the sequence of steps required to complete a task have no obvious relationship to each other and are located in different parts of the UI (I believe even Greg made this observations some time ago). It’s up to the user to discover the context in which they are intended to be used. Well the user doesn’t get a free ride in this but neither should the developer.

    But adding functions and buttons over time to a UI that keeps it user friendly is difficult–very difficult. It takes a clear understanding of how people use the product (which changes over time) and what the most important functions are for the average user. Developers must occasionally step back and verify that users are getting what they need and not just what the developers feel like providing.

    This is a major problem in government technology programs. Developers become so focused on which way the electrons are flowing that they forget how people need to use them.

    And while I agree with Greg that we need to trust developers, there is also a need to verify what they are doing is best for the user–who is the customer. Developers often see the world as lines of code and it’s human nature in any business to make assumptions about a product that makes it easier to produce.

    Assumptions are not bad. Their purpose is to provide guidance with there is uncertainty or incomplete understanding. But assumptions need to be validated along the development path.

    In my business today, I act much like a negotiator. I am both the user’s representative to the developers and the developer’s representative to the users. No one ever gets everything they want, but the goal is to come to reasonable compromises with regard to the UI design and the functionality. When in doubt, the nod should go to the people who have to use the technology.

    Blender has an advantage that it’s free, so users tend not to complain much about its inconveniences. I think commercial products are much more focused on the user’s experience because they must remain competitive with other similar products on the market (e.g., Wordstar vs. Word Perfect in the 1980’s)

    But I think the key to a successful product of any kind is that it can be used effectively with a minimum of training and experience. That requires a well designed UI that can be kept user friendly as functionality is added.

    Blender is a good product and the developers deserve praise and credit for their work. I think the UI transition from 2.49 to the UI of today was a significant step forward. But the UI today is a jumbled mess. It can only be fixed by a user investing years to learn to use it effectively and efficiently or it can be fixed with a new UI design that reduces years of learning to weeks and months.

    I’m not suggesting it can be done in a single new release. No one likes their world turned upside down over night. But it can be done in small steps over time. I know because I’ve worked with developers and users to fix some of the worst UIs ever. It’s never too late to significantly improve a flawed UI.

    In the case of Blender, it would probably take five or more years to evolve a better UI for Blender. But if you don’t take that first step you never arrive at your destination.

    I apologize for the long post, but the debate over UI design has been unrelenting since CP/M.

    Based on my experiences, I would evolve the Blender UI toward some of the reasonable concepts that Mr. Price has suggested. But then again, that’s why there is chocolate and vanilla.

    • Allo. :) Cool to see another software dev chip in.

      TL;DR – Organic feature growth is hard to keep up with UI-wise; Blender’s learning curve has its benefits and parallels; better the BF creates tools to empower contributors than shouldering the work themselves, Blender can’t and probably shouldn’t compete with Maya/Max.

      Blender’s case is a super-tricky one from a UI/UX perspective – its feature set has grown pretty much organically, and to cope with organic growth the UI/UX needs to be sustainable. In trying to do so many different things, creating consistency between Blender’s different functions is a UI-planning black hole of suck even as a static feature set. I don’t even bother with the Cycles materials view – I invariably hit “Use nodes” – if I’m doing anything more complicated than a diffuse BDSF + single colour shader, I head straight to the node editor. (Single button to bring up node view would be ace.)

      To be clear, at least from where I sit, I’m not against progress in usability. If Blender’s newer users miss out on the same rite of passage as the rest of us (for me it was watching days of BlenderCookie tuts at 1.5x speed until I was blue in the face), that’s fine. I feel like I know a lot more about making stuff in 3D as a result of having slogged through it though. It’s kind of a twisted apprenticeship of sorts – but I feel like Blender has always had that philosophy of encouraging you to dive more towards the underlying technology rather than just abstracting it away in the form of presets.

      Maybe that’s why we think people should go through it: there’s intrinsic value to knowing your tool that intimately. It’s like learning how to use a synthesiser (the musical sort) – first you work off presets without knowing exactly what’s going on, then you learn how to tweak presets that are nearly there but not quite right, then you get comfortable rolling your own, then you get good at rolling your own. Or you just stick with presets. (Point of interest: in synthesiser-land, people sell banks of presets – Hans Zimmer (yes, THAT Hans Zimmer) has a set on offer for a cool $99, for example. Something to think about…) The earliest synthesisers though didn’t have presets. You had to know what you were doing. And yet these presetless dinosaurs were the same synthesisers people went back to – because of their sound and relative ease of use. Blender empowers people upfront the same way – whether they like it or not! :)

      That said, of course usability improvements would be welcome – nobody would dispute that. Even at a pro level, a UI that allows quicker workflows is a good thing. For example, if you could push materials, textures, node setups, etc to a presets file that gets loaded on program startup, that would be great – at the moment you have to link or append stuff manually from files you maintain yourself. But knowing to even do that comes from knowing how people use the software – if the devs and Foundation are that strapped for resources, do you think they’re going to go out of their way to conduct usability research? And that’s where the open source bit comes in – they can’t be across everything so the software’s designed to be extensible at a plug-in level and at a codebase level. This comes back to what’s been said about active contributors being better than passive consumers, and whatever BF can do to encourage contribution instead of consumption is a good thing.

      Anyway, supporting task-based workflows at a UI level as a standard practice is the equivalent of having twins – lots more to support. Making the software smarter costs loads more design and development time than leaving the smarts to the user. There’s a bit of low-hanging fruit in Price’s proposal, some of which is as simple as a preset change, and there’s a lot in there I like. But task-based.. ? I dunno. If there was a well-documented task/workflow engine that the community could write extensions for, the Foundation could potentially leave it up to the community to write the workflows themselves. I liked Spore’s Galactic Adventures editor that way – it could only really make linear adventures but the paradigm could work nicely for macros that take charge of the entire UI.

      The bigger question is: is there any point to Blender trying to make a dent on a market which is already very well served by the likes of Modo, Lightwave, Maya, 3DS Max, Nuke, After Effects.. because disrupting that market based on price point alone just ain’t going to happen, fancy UI or not.

      Bugger, and I swore I wouldn’t talk about UI anymore either.. ugh. Oh well.

  3. so well put! thank you for cutting out that delicious reading from quollism. I just don’t dare walk in the discussion, i tend to suck up negativity and take it with me everywhere. But i join your point to the fullest. I sort of have fun with the idea of “miraculously easy interfaces”, that would let me do anything i want without having to know what i want. The funny part of this idea, is that no matter how i turn it, it ultimately ends up in a realtime connection with my imagination, thru a cable in my neck! Or worse: a mind-reading wifi :D