How is Unity designed? How can I contribute to this process? Why did you make thus and such decision? The Unity Design Team is frequently asked these questions, and this article aims to de-mystify our design process and highlight the different ways in which volunteer contributions can help improve the Ubuntu user experience.
Before diving into the design process, let’s take a look at the types of contributions Ubuntu receives. Ubuntu contributions can be divided into two equally valuable categories: whole project contributions and piecemeal contributions.
Whole project contributions are autonomous projects created by a single developer or a group of community developers and designers working together. One example of such a project is the excellent http://ubuntu-tweak.com. Some user experience design tasks require frequent ongoing high bandwidth dialogue between design team members; this is easier to achieve when a small group of contributors take responsibility for the end to end delivery of a project. Whole project contributions empower the project contributors to take complete control of all aspects of the user experience design.
Piecemeal contributions are contributions that help one individual aspect of a larger project. Examples of piecemeal contributions include bug reports, small patches and suggestions on how to improve public design specifications. Coordination is required to ensure that the piecemeal contributions fit together into a coherent whole. Thus some of the user experience responsibility is ceded from individual piecemeal contributors to the project’s steering team. In the case of the Ubuntu desktop, the design decisions are coordinated by the Unity Design Team. In this environment, many elements are contributed by external designers and developers, but the areas of user experience design that require high bandwidth, frequent communication are dealt with by the Unity Design Team.
1. Divining the future
Before we get started on designing anything, we need a long term vision and strategy of where we want to be in several years time, and a high level roadmap of what we need to do in order to get there. My personal take on the Ubuntu vision is that Ubuntu aims to “help humanity by creating a fully open source free software platform that becomes the platform of choice for all computing devices and form factors”. By virtue of reading this article you are probably one of the small minority of the population who cares and feels passionately about the benefits of open source computing. But when the majority of people consider buying or using a product, they make a decision based on cost, personal utility, and user experience. ‘Open source’ versus ‘closed proprietary software’ doesn’t often come into the equation. So if we are going to succeed in making Ubuntu the platform of choice for the world, one of the things we need to do is deliver a user experience that surpasses the standard set by our closed source proprietary software competitors. And to do this we need a vision to aim for, of where the world is going to be in 2, 5, and 10 years time.
To help shape our strategy and roadmap we listen to what the brightest minds are saying by:
- attending conferences
- reading articles, blogs and forums
- watching people’s behaviour
- reading and watching sci-fi books and films
- and trying to live observant, interesting lives… ;-)
How you can be a visionary and help shape the world
If you have a vision of the future or ideas about new ways of doing things, make yourself heard. Everything from talks at conferences to ideas posted on http://brainstorm.ubuntu.com/ are thrown into the Ubuntu mixing pot, so if you have a great idea, tell people about it. The more time invested in exploring your idea and communicating it to the world the more influence it is likely to have; a paper presented by a PHD student who has spent a year exploring a particular topic has a better chance of being influential that one or two forum postings.
2. The first step in designing a feature; what problem are we trying to solve?
The development of a feature starts as soon as resource becomes available. After selecting the next appropriate item from our roadmap, the first questions we ask are “what problem(s) are we trying to solve?” and “what are our objectives?”. One useful tool to help define the problem is to explore the problem using user narratives, and think about the impact of the problem on different personas (user archetypes which represent patterns of behaviour and common goals). Another useful tool is to undertake requirements capture with members of the target audience.
How you can contribute to defining the problems
If you are suggesting either a new feature or a change to existing functionality, first state the problems you are trying to fix. This opens the door to exploring different possible solutions, and ultimately finding the optimal way to meet the requirement. Including user narratives in bug reports/mailing list postings/etc… can open up productive discussions that explore different ways of tackling the problem. They also make it easier for others to understand the problem you are investigating, and therefore improve the likelihood of a solution being built.
3. What thinking has already gone in to trying to solve this problem?
Once the problem that we are trying to solve is clearly defined, the next step is to assemble the previous thinking that has gone into the problem area. Understanding what has gone before and the current state of the art is the starting point from which new connections can be made, concepts built upon and extended, and new ideas created. Mailing lists, bug reports, and forums are scoured for pertinent information and products relevant to the problem space are examined. In addition to the collation of previous thinking, fresh research can also be conducted to generate new insights. This solid understanding of the existing problem space is a elemental ingredient of the design process.
How you can contribute to the background research
If a discussion on a design problem is taking place, either in your own project, in a bug report or on a mailing list, feel free to add pertinent information from related fields or descriptions of how others have tackled related problems. Throwaway opinions are cheap, but considered background research is a very valuable contribution.
4. Ideation
Ideation requires high bandwidth communication between all participants, both for the rapid expression and debate of ideas, and to ensure that everyone in the multi-disciplinary group rapidly gains and retains a shared understanding of the problem space. When starting a new project at Canonical, we have found it very beneficial to get all the developers, visual designers, UX architects, etc… who will eventually work on the new feature together in a single physical location and spend a week brainstorming and exploring ideas. In addition, these design exploration sessions help gel the feature team together, and the interpersonal bonds that are established improve team communication and set a positive tone of discourse that persists throughout the entire course of the project.
During these ideation sessions, we:
- Spread out all gathered information and explore patterns and structures.
- Jointly brainstorm and sketch ideas.
- Discuss all areas of the problem space, propose and iterate multiple ideas for tackling all the different aspects of the problem.
- Examine the problem from different angles; user costs and benefits, technical possibilities, strategic direction, competitive landscape, fit with roadmap, etc…
At the end of this stage we will have a collection of ideas for solving the problem. And this collection of ideas will have been discussed and examined by the whole feature team.
How you can participate in ideation
At a small scale you can make piecemeal contributions to ideation by participating in bug report discussions and offering different ideas for solving the problem. As a larger scale you can get involved in ideation by joining or starting a community project team that is focused on delivering a feature. Propose an idea, gather some developers and designers together, and start your design process!
5. User Experience design
User Experience design starts with the ideas generated in ideation, and through an iterative process evolves the concepts and fleshes out the interaction details. Typically a UX architect will take the lead on designing a feature, and as they work through this process they will continually bounce ideas off other members of the feature team and other designers. User testing is also utilised to provide feedback and inform the evolution of the design. The UX architect’s work will also be reviewed with the overall UX lead to ensure consistency and linkage with all the other projects that are being designed and developed in parallel.
User Experience architects have a number of tools at their disposal for designing and defining the functionality of a feature or product. Multiple tools are used simultaneously in order to approach the design from different perspectives; for example wireframes show grouping and hierarchy of elements at a specific moment in time, so they are frequently combined with use cases or sequence diagrams to ensure that the user journey centric viewpoint is also considered.
For very tactile and interactive elements, designing through prototype iteration is an invaluable technique. An example of this in action is the recently released launcher reveal prototype. In addition to defining the functionality, user experience design also involves taxonomy, association mapping, and personas.
How you can participate in User Experience design
As user experience design builds on top of steps 1-4, before starting the first task is to make sure these preparation steps are complete. In the case of adding a piecemeal UX design contribution to a bug, this involves reviewing the bug discussion and satisfying yourself that these preparation steps have been adequately completed. If you are working on a whole project, make sure that all the previous steps have been conducted jointly with the other members of the project team.
Then start designing! Look at design patterns that can be utilised, and keep an open mind by looking at mobile and web patterns in addition to established desktop design patterns. Some good starting points are ‘About Face 3: The Essentials of Interaction Design’ by Alan Cooper, ‘Designing Interfaces’ by Jenifer Tidwell and also the pttrns mobile app design pattern showcase. Approach the design from different perspectives; to learn more about the mechanics of using use cases to take a user journey centric approach I recommend the excellent ‘Writing Effective Use Cases’ book by Alistar Cockburn. And keep looking at the design through the eyes of the personas you are targeting, otherwise you may end up designing the product just for yourself!
The artifacts you produce will vary depending on the projects requirements, but should include at the very least elements of layout design (wireframing), functional design (use cases, prototypes, etc…) and Information Architecture (hierarchy maps).
6. Visual design
Visual design is the marrying of form and function, it affects user confidence and comfort and makes for a compelling experience. As we work through each level of the design process, we are both iterating the design and adding further detail. We start with coarse brushes making wide strokes and work our way to the point where we are using fine brushes to refine the final intricate attributes. Human beings perceive visual information before they perceive analytical information, and Visual design is about reducing the mental workload for our audience whilst delivering a delightful and cohesive aesthetic experience.
How you can participate in Visual design
If you are working on a whole project contribution, fire up your design programs of choice and start iterating the visual design! For piecemeal contributions a great place to start is theme, icon and wallpaper design. For a good example of a great community visual design contribution take a look at the Faenza icon theme by ~tiheum.
7. Implementation
Development resource is the biggest bottleneck to getting new features implemented, so the most valuable way you can make piecemeal contributions is by taking items from the bug list and submitting patches. Implementation is also part of the design process, because as a feature is built even more understanding is gained and further refinements are iterated.
How you can participate in implementing new features and fixes
Pick a bug from underneath either the “Design changes signed off but not handed over” header at http://people.canonical.com/~platform/design/ or “Upstream projects that can be worked on” at http://people.canonical.com/~platform/design/upstream.html . If you have any questions about a bug ping either myself (JohnLea), swilson, or nuthinking in #unity-design on Freenode IRC . The Ubuntu wiki Unity page is good place to start finding out more about how you can help with the implementation of Unity.
8. Identifying user facing bugs and QA
After a feature lands it is time to start identifying bugs. A good starting point is to look at the UX specification of a feature, and check that the implementation matches design. Where there is a divergence, citing the relevant part of the specification in the bug report is both useful and will also raise the bug’s priority. On the other hand, designs are never perfect and it may be that there is a bug with the design itself. In this case it is also useful to cite the issue in the relevant UX specification as part of the bug report. Unity UX specifications are available at http://design.canonical.com/the-toolkit/ , and we are currently working to increase the number of specifications that are publicly available. Also all the design bugs that are currently queued for implementation are publicly available at underneath the “Upstream projects that can be worked on” header at http://people.canonical.com/~platform/design/upstream.html .
How you can participate by reporting bugs
If you are reporting a user facing bug affecting any part of Ubuntu, make sure the bug is marked as ‘also affects project’ ayatana-design. The bug will then be triaged by the Unity design team, and if accepted it will enter the stack of bugs that are awaiting implementation. Sometimes a bug will be marked as ‘Opinion’. This means that the issue is acknowledged but the exact change request detailed in the bug is not currently scheduled for implementation. This may be because further consideration is required, or because a project that will fix the bug in a different way is currently in the pipline. Bug reports are one of the most useful ways you can contribute, every single bug that is reported to ayatana-design is reviewed by the Unity design team.
9. User testing
This will be coming soon in a subsequent article…
Why didn’t you solve a bug when user send you a path?
https://bugs.launchpad.net/ayatana-design/+bug/733349
That is not what I understand as “we are open to community”…
Everything about Unity, except of this, is right. Listen to people so the future will be optimistic.
Best regards
Ha! How ironic is that… Author closed that bug report…
Guys, 2 words: copyright assignment.
If you’re really intent on building a vivid community, either:
-get rid of it
-make contributors assign copyright to a recognised non-profit organisation that works towards the public good, such as the FSF.
My opinion is that you won’t succeed otherwise
To be perfectly pedantic, Canonical no longer requires copyright assignment. They do require a copyright license…
http://www.canonical.com/contributors
Because it is not a bug. It’s a feature request.
I disagree.
A feature available on in any other UI, but not available in just one, is a missing feature.
Unless that feature causees some kind of problem, or serves no purpose, then that missing feature is a bug.
Unity launcher icons support:
-click to open
-click to raise
-click to restore
Unity launcher icons do not support:
-click to minimize
-right click for menu
I can understand the lack of a right-click menu.
That feature can be implemented other ways and it makes the interface less error prone.
Click to minimize is a /missing/ feature.
It completes the UI metaphor demonstrated by the other, existing, features.
Why can I open, raise, and restore by click, but not minimize or hide by click?
In Unity, what goes up never comes down.
Oh, there is a right-click menu… nevermind that part.
Still no click-to-minimize.
Backlink: http://lwn.net/Articles/482025/#Comments
Well, for one Gnome 3 doesn’t have it. But what really baffles me is that you disagree it being a feature request on the basis that it “is a missing feature”. Doesn’t matter how common a feature is (say, non-modal text editing), a feature request is a feature request (and Vim is likely to reject it and certainly will not recognize it as a bug).
Perhaps double click could be used to minimize. It’s currently used to exit spread without selecting a window, but this function is more logically preformed by clicking in the whitespace outside of the app windows.
so if you click an icon you get spread, followed by hide.
Windows 7 has this feature and users of course expect it, so any intelligent person would add it as an option at least.
I’ve used Ubuntu for years until 10.04LTS. But when Unity came out, I really did not like it. And I thought there’s nothing I can do about it so tried a different distro. Thank you for this post, now I realized, if I want to, I can also contribute something in making this project become more widely acceptable.
I have couple of tweak ideas on how to make ubuntu more convenient how can i share with ubuntu unity staff and interested people
thank you for your time
o unit deveria mostrar os aplicativos abertos quandos o mouse estiver sobre ele sem ter que clicar neles.
“Everything from talks at conferences to ideas posted on http://brainstorm.ubuntu.com/ are thrown into the Ubuntu mixing pot, so if you have a great idea, tell people about it.”
Well, I tried. I saw the discussion on the unity-design team mailing list about creating launchers, and, not being a member, I went to Brainstorm to give my idea. Here it is: http://brainstorm.ubuntu.com/idea/29249/ .
It was pretty quickly marked as “not being an idea” and I was referred here.
Maybe I should file a bug report against Nautilus? The Nautilus implementation was removed in version 3.1.4. I don’t know why, but even before 3.1.4 it was removed in Debian or Ubuntu because, instead of using the standard file property panel, it relied on something shipped with gnome-panel.
Nautilus still does work as a basic editor for a .desktop file, if you have one. Getting one would be easy if “Create Launcher” were put back in and just made template .desktop file, much like the “Create New Folder” and “Create New Document” (Wait, would I ever create an old folder or document? Anyway . . .) just make folders or files with editable names. Even now there’s the option to write a stub launcher and put it in ~/Templates/Launcher.desktop . (It’s tricky and involves the command line because of how .desktop files are handled, but it works.)
The Nautilus file properties panel for .desktop files is pretty lame, but there at least used to be a way to add pages to those panels. Either there still is, or I’ve got some legacy code running here.
I guess my main point is that somethings are wrong with the design process when (1) I have to go this route to submit (2) what should be an obvious idea.
Maybe it’s not so obvious. I don’t use Windows much, so there may not be a “Create Launcher” equivalent, but I know there’s “Create Shortcut”, or something like that, and it’s a good approximation.
@Rasmus van Guido,
Are you aware that you can disable Unity in every following version of Ubuntu in which it has been integrated? On the login screen, you can change your desktop environment back to the Gnome 3 interface by choosing Ubuntu Classic in your login options on the login menu. Furthermore, in CCSM, you can simply uncheck and disable the Unity plugin.
use ubuntu brainstorm.
Hi,
I have been using ubuntu since 7.10 release. All i can say is, i’m not used to unity yet. I still like classic gnome desktop. I am sure, Canonical will make unity more better. Global menu is quite annoying to be honest. We need a new icon theme which matches with new interface of ubuntu. Thank you for this post.
No, you can’t. I mean, you can use Ubuntu Classic, but it doesn’t work anymore because Ubuntu designers have no interest in maintaining it, and it has since accumulated tons of bugs. Your only choice is to move away from Ubuntu. Sorry.
I spend HOURS trying to resize a simple window in Ubuntu because you have to grab one darn pixel to do it, and this has been like this since 7.04. Please forgive me if I am skeptical trying to believe that you guys care anything about user interface design…
I had that bug too, but it seems to be fixed in 11.10 (or maybe I changed something?) for me. There is an invisible border around the windows now.
1. Divining the future
…buying decision based on cost, personal utility, and user experience…
2. designing a feature
…a new feature or a change to existing functionality, first state the problems you are trying to fix.
It’s great to have this roadmap, but in focussing on improvements it omits a section on safeguards for the virtues of previous generations of user experience. This kind of thing:
1.5.1 In enhancing user experience, minimise negative consequences for cost and personal utility. E.G. support workflows specific to mobile devices or desktops, as a common UI is unlikely to be the “platform of choice” for heavy users of either.
1.5.2 Help the user to set preferences about how they spend their computer’s resources. E.G. make it easy to prevent prefetch, background indexing etc. from eating into laptop batteries or mobile data quotas.
1.5.3 Don’t assume the UI owns the user’s attention. E.G. don’t require the user to press, read or even notice UI features within a limited time without prior arrangement.
Where can we read what safeguards are documented in the Unity design process?
PROBLEM: unity dash is attached to unity dockbar
plese make unity look like this:
http://www.youtube.com/watch?v=mY97_H6c9Hs&feature=related
and i am going to use unity forever! PLEASEEEEEEEEE!
0:05 min
when i talk about black color i do not mesn that they should change its color to another one BUT make them transparent and rounded.
here i am going to say something else that i do not like as a user.
high contrast themes do not have a complete icon set and it looks horrible
My impresion about the Unity interface is that is very slow, very unusable and with almost no choice in changing the installed theme. The best choices still remains GNOME, KDE (as far as I have used)
Solution #1: Tweaking ubuntu interface just a little bit
Written by Levan the 28 Feb 12 at 14:25.
Tweaking ubuntu interface just a little bit
I did a little research and came to an conclusion that ubuntu like every thing else needs to be improved and perfected
Research was done in a small office (with the personnel of 16) only one had experience with linux, every one agreed that ubuntu looks impressive, but after some time they all agreed that there are some minor tweaks that needs to be changed.
Here is research results and the consensus that reached:
1) Hard to rate music
I asked them to rate music, the average time was 16.3 seconds with banshee running when it was off the time ruffly rose by 10 seconds, they all agreed that it is to hard and keeps the users from enjoying the music so what i propose:
,,adding rating bar in ubuntu panel and you can even add music search bar”
example
http://i.imgur.com/2q6Mq.jpg
or
http://img560.imageshack.us/img560/9309/screenshotat20120228161.png
2) Not able to jump strata to the app or document you are working on
example :
http://i.imgur.com/qr3L4.png
or
http://img341.imageshack.us/img341/9309/screenshotat20120228161.png
Here you can see there are two documents opened, but you can not chose the second document directly instead you get this animation and this screen
http://i.imgur.com/MlXjd.jpg
or
http://img829.imageshack.us/img829/9309/screenshotat20120228161.png
This is not bad but when you are doing work and time is money, you want to do your work fast so i recommend adding thumbnails like windows 7 does, it will be more practical and faster to jump in for windows users
example
http://i.imgur.com/jQCNg.png
or
http://img528.imageshack.us/img528/9309/screenshotat20120228161.png
3) super W keys add more functions
This is the best way to select running apps in ubuntu but I think it lacks functionality i think it should have ability to Colas running apps it will help users organize there running apps better
example
http://i.imgur.com/aKQWE.jpg
or
http://img404.imageshack.us/img404/9309/screenshotat20120228161.png
4) Themas, hard to get themes
When we are talking about average user they will have ruff time getting new themas in ubuntu so i recommend adding more themas in customize appearance
stop scroll button from “fading” its one of the most childish and annoying insults to the mordern day users:it brakes your heart nobody has eliminated this ridiculous burden:why on earth make it fade away when you have your mouse clicked on it-it brakes ones concentration to have to remind yourself to keep hovering in order to keep scrolling, :while your trying to read:fix the problem :)
I too was sent here after an idea I submitted to brainstorm was rejected as ‘not an idea’
I checked in the unity-design channel at freenode and it looked empty.
I’ve read this over a couple times and still am not sure exactly where to put my idea in order to have it considered. There is a ton to read, too bad brainstorm ideas for unity are immediately rejected.
I have recently posted some ideas to Brainstorm about Unity improvements and they closed them saying that Brainstorm is not the right place for those and I was pointed to this page where I get sent back to Brainstorm.
What do I do next?
Here are those ideas:
http://brainstorm.ubuntu.com/idea/30518/
http://brainstorm.ubuntu.com/idea/30519/
So, i just wanted to add some very interesting mock-ups of a talented designer and some ideas. I really dont know where should i send those (i tried on brainstorm and i was told to offer those here) so im just gonna copy-paste those ideas in this comment.
Rationale
I think that ubuntu phone launcher looks much nicer than the desktop one. Also, i think that launcher should use blur all the time, not just when the dash or HUD is opened. The reason for this is beauty, because right now, launcher looks pale and “cheap”. Blur also minimizes the distraction of background objects on the icons that are part of launcher. Also, launcher should get drawers.
Solution #1: Making launcher look like its mobile brother and making it blurred all the time.
Written by infranatural the 13 Feb 13 at 23:26.
Here is a beautiful mock-up that does just what i said earlier:
http://rylexr.deviantart.com/art/A-better-Ubuntu-Unity-Launcher-Part-II-updated -352954789
http://rylexr.deviantart.com/art/A-better-Ubuntu-Unity-Launcher-Part-II-3528117 74
It offers solution for both the looks and drawers.
And here is a blurred launcher vs. nonblurred:
https://docs.google.com/folder/d/0B_uu5S8X5LOaUzRuMGxIQ0ZlYzQ/edit?usp=sharing
Faulty url’s in a previous comment; here are the working ones:
http://rylexr.deviantart.com/art/A-better-Ubuntu-Unity-Launcher-Part-II-updated-352954789
http://rylexr.deviantart.com/art/A-better-Ubuntu-Unity-Launcher-Part-II-352811774