<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Máirín Duffy &#187; Interaction Design Work</title>
	<atom:link href="http://mairin.wordpress.com/category/interaction-design-work/feed/" rel="self" type="application/rss+xml" />
	<link>http://mairin.wordpress.com</link>
	<description>Open design forever.</description>
	<lastBuildDate>Sun, 18 Sep 2011 15:08:18 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='mairin.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Máirín Duffy &#187; Interaction Design Work</title>
		<link>http://mairin.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://mairin.wordpress.com/osd.xml" title="Máirín Duffy" />
	<atom:link rel='hub' href='http://mairin.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Ideas for a cgroups UI</title>
		<link>http://mairin.wordpress.com/2011/05/13/ideas-for-a-cgroups-ui/</link>
		<comments>http://mairin.wordpress.com/2011/05/13/ideas-for-a-cgroups-ui/#comments</comments>
		<pubDate>Fri, 13 May 2011 23:28:07 +0000</pubDate>
		<dc:creator>mairin</dc:creator>
				<category><![CDATA[cgroups]]></category>
		<category><![CDATA[Fedora]]></category>
		<category><![CDATA[Interaction Design]]></category>
		<category><![CDATA[Interaction Design Work]]></category>

		<guid isPermaLink="false">http://mairin.wordpress.com/?p=2801</guid>
		<description><![CDATA[On and off over the past year I&#8217;ve been working with Jason Baron on a design for a UI for system administrators to control processes&#8217; and users&#8217; usage of system resources on their systems via the relatively recently-developed (~2007) cgroups feature of the Linux kernel. After the excitement and the fun that is the Red &#8230; <a href="http://mairin.wordpress.com/2011/05/13/ideas-for-a-cgroups-ui/">Continue reading <span class="meta-nav">&#187;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mairin.wordpress.com&#038;blog=929179&#038;post=2801&#038;subd=mairin&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>On and off over the past year I&#8217;ve been working with Jason Baron on a design for a UI for system administrators to control processes&#8217; and users&#8217; usage of system resources on their systems via the relatively recently-developed (~2007) <a href="http://en.wikipedia.org/wiki/Cgroups">cgroups feature of the Linux kernel</a>. </p>
<p>After the excitement and the fun that is the <a href="http://www.redhat.com/summit/">Red Hat Summit</a>, I had some time this week to work with Jason on updating the design. Before I dive into the design process and the mockups, I think it&#8217;d be best to do a review of how cgroups work (or at least how I understand them to) so that the rest makes more sense. (And maybe I&#8217;ve got some totally incorrect assumptions about cgroups that have resulted in a flawed design, so hopefully my calling out the current understanding might make it easier for you to correct me <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  ). </p>
<h3>A designer&#8217;s understanding of cgroups via diagram</h3>
<p>So cgroups, which are sometimes referred to as containers (I think because a similar Solaris feature, zones, is sometimes called <a href="http://en.wikipedia.org/wiki/Operating_system-level_virtualization">containers</a>) can be used to slice an entire operating system into buckets, similarly to how virtual machines slice up their host system into buckets, but without having to go so far as replicating an entire set of hardware.</p>
<p><img src="http://duffy.fedorapeople.org/blog/designs/cgroups/diagram.png" alt="" /></p>
<p>So this diagram kind of shows how four of the system resources that cgroups can control &#8211; CPU, memory, network, and storage I/O &#8211; could be cut into slices that are then combined into two groups &#8211; the yellow and the purple one &#8211; which make up virtual OSes. Say I gave cgroup #1 (yellow) to Sally, and cgroup #2 (purple) to Joe. Whenever Sally starts a process, you could set it to only run on the CPUs that are members of cgroup #1 (via cpuset), at whatever priority level is set for those CPUs (via cpu). It&#8217;ll only be able to use as much memory as was allocated to cgroup #1, only be able to use as much network and I/O bandwidth as cgroup #1 is able to use. When Joe starts a process, because he&#8217;s part of cgroup #2, he won&#8217;t be using the same CPUs as Sally. He may have more or less memory, I/O, and network bandwidth allocated to him. </p>
<p>It&#8217;s kind of / sort of like Joe and Sally are using different computers, on the same operating system. Cool, right? </p>
<p>Cgroups don&#8217;t have to go that deep, though. You don&#8217;t need to slice across an entire system. </p>
<p><img src="http://duffy.fedorapeople.org/blog/designs/cgroups/diagram2.png" alt="" /></p>
<p>You can have a cgroup that *just* deals with controlling access to the CPU. Or *just* controls memory. Or maybe only deals with two of the four (CPU, Memory, Network, I/O) resources, or just three of the four.</p>
<p>You can have a cgroup that *just* deals with one resource (say CPU), and that group only deals with specific processes. Or users. Or a combination thereof. (More later on that.)</p>
<p><img src="http://duffy.fedorapeople.org/blog/designs/cgroups/diagram3.png" alt="" /></p>
<p>Depending on the resource you&#8217;re looking to control and the cgroups module you&#8217;re using, you can configure access to that resource in different ways. I believe one of the more common ways of controlling CPU usage via cgroups is to assign &#8216;shares&#8217; for various groups&#8217; usage of the CPU (<a href="http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/6/html-single/Resource_Management_Guide/index.html#sec-cpu">using the &#8216;cpu&#8217; module</a>.) I&#8217;m not sure what scale/units these shares are on, but they are relative to each other, so if I give group #1 a weight a 1024, and group #3 a weight of 2048, then group #3 will get scheduled for CPU time twice as much as group #1 will. </p>
<p>I don&#8217;t think this share system is particularly intuitive, which is still an open problem in the current draft of the UI design.</p>
<p>Other resources and modules let you control access in different ways. For example, the memory module lets you configure an upper bound of memory usage, I believe <a href="http://www.mjmwired.net/kernel/Documentation/cgroups/memory.txt">via providing the maximum number of bytes of memory that could be used by members of the group</a>.</p>
<p>You can create and apply cgroups to processes and users on-the-fly or on a longer-term / persistent basis. Say some process is running amok and is starving other processes on your system&#8230; you can change the process&#8217; cgroup membership on-the-fly to provide it a more limited set of system resources so that other processes on the system can run. However, this change would be temporal and may be based, for example, on a specific pid number that won&#8217;t apply if the process is restarted or the system is rebooted. If you&#8217;d like more persistent cgroup membership, you can create a set of rules (cgrules.conf). A neat simple thing you could do with cgroup rules, for example, is something mentioned by Linda Wang <a href="http://www.redhat.com/summit/2011/presentations/summit/in_the_weeds/friday/WangKozdemba_f_1130_cgroups14.pdf">in her Red Hat Summit talk on cgroups</a>; you could arrange your cgroups rules such that the sshd always gets a dedicated chunk of CPU time so that if a process runs amok on a server system, you still might be able to ssh in remotely to diagnose the problem.</p>
<p><img src="http://duffy.fedorapeople.org/blog/designs/cgroups/diagram5.png" alt="" /></p>
<p>It&#8217;s via these rules that you can set up persistent groups on the system. It would be kind of a pain to have to set them up every time a system is rebooted, especially the more processes and users you&#8217;re managing, and the more groups you need to create in order to manage them. You can use multiple cgroups modules (for example, cpu, cpuset, mem, net) within a single cgroup, and then write rules to place processes run by particular users and/or user groups into the cgroup, or write rules to place processes matching particular attributes into the group. </p>
<p>Above is a diagram demonstrating a cgroup that restricts only CPU usage for processes matching firefox-*, npviewer.bin run by users that are in the &#8216;guest&#8217; group or whose usernames are &#8216;student1&#8242; or &#8216;student2&#8242;. Kind of putting it all together, showing a single group and its resource allocation, and its associations with particular users and processes.</p>
<h3>Who would use a UI for this, and why?</h3>
<p>Tthe UI design mostly focuses on setting up persistent rules, and doesn&#8217;t really allow for on-the-fly cgroups rearrangement of currently-running processes and currently-logged in users. The thinking behind this is that there might be a couple of main reasons you&#8217;d be using a UI for cgroups:</p>
<ul>
<li><strong>Proactive</strong>: Initial system resource allocation planning</li>
<li><strong>Reactive</strong>: In response to a complaint &#8211; &#8216;My processes are getting capped,&#8217; or &#8216;Such-and-such process isn&#8217;t running right.&#8217;</li>
</ul>
<p>Thinking about the way my previous experience with system administrators has typically gone, there&#8217;s sadly not usually a lot of time for proactive planning and organization &#8211; a majority of time tends to get spent on reacting to client concerns. If someone is calling you up on the phone to tell you that a process they are relying on has gone awry, it seems the most effective way to get them to stop calling you would be to change the rules to make a more persistent change to help them, rather than to just apply a change on the fly and wait for their next phone call. <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  So I think you&#8217;d probably prefer to change rules in reaction to a client complaint, not just do an on-the-fly change (although you could.) When you&#8217;re being proactive and initially setting up a system, I think you&#8217;d not want to do that on-the-fly at all, because you&#8217;d have to keep reapplying. It&#8217;d be better to craft a set of rules to persist on the system.</p>
<p>So it seems like these two main use case types &#8211; proactive resource allocation, and reactive allocation adjustments based on client feedback &#8211; are both best served by focusing on rules, so that&#8217;s why the UI design only focuses on those.</p>
<p>Maybe there is a case for doing the on-the-fly stuff though. It does make for some pretty awesome demos, though, like the one Bob Kozdemba gave at the Red Hat Summit last Friday, moving multiple copies of a graphics rendering tool between cgroups and vms and changing their configuration on the fly so you could visually see the affect of resource caps on the processes.) You could also use the on-the-fly configuration changes to test out a theory about how you should set the rules. </p>
<p>So, specifically, what kinds of problems could we imagine a user looking to solve with this interface? Our thoughts were that most likely a system administrator would find it most useful:</p>
<h4>Under the &#8216;Proactive&#8217; Category:</h4>
<ul>
<li>I have a system running a business-critical app that sadly has a memory leak, and I want to make sure that app doesn&#8217;t screw up the other apps running on the system. I&#8217;d like to put a cap on its memory usage so when it goes down it doesn&#8217;t take the rest of the system down with it.</li>
<li>I have a thin-client lab meant for the use of students in the science department, but students from other departments are allowed access via guest accounts. I&#8217;d like to make sure the guest accounts don&#8217;t block any of the science department students&#8217; work on the server.</li>
<li>I&#8217;m an administrator at an ISP and we provide virtual machines to end users in different pricing tiers. I&#8217;d like to enforce the limits set by our pricing tiers so that customers&#8217; VMs aren&#8217;t getting more power than they are paying for and aren&#8217;t starving customers that are paying for more power.</li>
</ul>
<h4>Under the &#8216;Reactive&#8217; Category:</h4>
<ul>
<li>A student from the science department has called helpdesk to complain that his simulations don&#8217;t have very much oomph and are taking far too long to run. I need to figure out what system resource policy might apply to this user, and make modifications to his policy as needed to help him out if possible. (For example, perhaps he was previously outside of the science department and just transferred in, so he&#8217;s still running in the guest group.)</li>
<li>Uh-oh, something&#8217;s gone wrong. A business critical process keeps getting OOM&#8217;ed! I need to figure out what resource allocation policy applies to it to see if there a rules that are causing the issue / that could be adjusted to get the app running consistently again.</li>
<li>Our bi-weekly payroll processing application is still going full-steam ahead but it&#8217;s Monday morning, the business day is starting, and that server needs to be used for other things. Whoops, that&#8217;s never happened before, it usually finishes on Sunday. I need to see what policy applies to it, and modify our rules so that the payroll process tones things down a bit if it hasn&#8217;t finished over the weekend.</li>
</ul>
<h3>The mockups</h3>
<p>So after <strong>a lot</strong> of sketching, crossing out, sketching, crossing out, and thinking about the above types of use cases, we thought to break up the main window in this way:</p>
<ul>
<li><strong>A users tab</strong>: For when you have a specific user/group in mind you&#8217;d like to limit, or if you&#8217;ve got a specific user on the phone who you&#8217;re trying to troubleshoot with;</li>
<li><strong>A processes tab</strong>: For when you have a specific process in mind you&#8217;d like to limit, or if you&#8217;ve got someone on the phone upset about a particular process you need to help debug;</li>
<li><strong>A containers tab</strong>: For when you need to initially create your cgroups, or if you&#8217;d like to tweak the configuration of a particular group, or if you&#8217;d like to see how the processes within the group are performing.</li>
</ul>
<p>So here&#8217;s what they look like:</p>
<h4>The users tab</h4>
<p><a href="https://fedoraproject.org/w/uploads/0/0d/Cgroups-mockup-2-usertab.png"><img src="https://fedoraproject.org/w/uploads/thumb/0/0d/Cgroups-mockup-2-usertab.png/500px-Cgroups-mockup-2-usertab.png" alt="users tab" /></a></p>
<h4>The processes tab</h4>
<p><a href="https://fedoraproject.org/w/uploads/4/4e/Cgroups-mockup-2-processestab.png"><img src="https://fedoraproject.org/w/uploads/thumb/4/4e/Cgroups-mockup-2-processestab.png/500px-Cgroups-mockup-2-processestab.png" alt="processes tab" /></a></p>
<h4>The containers tab</h4>
<p><a href="https://fedoraproject.org/w/uploads/d/df/Cgroups-mockup-2-containerstab.png"><img src="https://fedoraproject.org/w/uploads/thumb/d/df/Cgroups-mockup-2-containerstab.png/500px-Cgroups-mockup-2-containerstab.png" alt="containers tab" /></a></p>
<h4>Some issues / further work</h4>
<p>Here&#8217;s a bit of a braindump of where these need more work:</p>
<ol>
<li>So I mentioned in one of the example use cases a payroll application, that could run full steam during the weekend but had to be dialed back during the work week. Well &#8211; this UI design doesn&#8217;t account for scheduling in the rules, yet.</li>
<li>There&#8217;s no mockups for the various dialogs needed for adding and modifying rules.</li>
<li>It would be cool to do a mockup showing how this might integrate into the GNOME system monitor &#8211; maybe an additional filter on it?</li>
<li>It would also be cool to have some kind of integration with the user accounts dialog. Maybe it&#8217;d show the policy that applied to a user and let you modify it from that dialog?</li>
<li>Right now in the containers tab, we had the idea to list the containers by the resource they are managing &#8211; so groups involving cpu, cpuset, cpuacct for example would all be listed under a &#8216;CPU&#8217; category. However, Jason had an idea about showing logical cgroups that span resource types &#8211; e.g., you might have a cgroup tuned for DB usage with different settings for CPU in combination with memory &amp; I/O.</li>
<li>The users and processes tab doesn&#8217;t really let you monitor resource usage per user / per process. Is that needed? Not sure.</li>
<li>Units &#8211; shares vs upper limits vs&#8230; the actual numbers you&#8217;re configuring for each rule need to be fleshed out. If cpu / cpuset / cpuacct for example can be used in conjunction, how would that be shown in the UI?</li>
<li>What about a mechanism to compare effective resource allocation vs actual resource usage? So you could see, &#8216;hey, this process is starved, maybe we should consider upping it,&#8217; or &#8216;hey, this user isn&#8217;t really coming anywhere near their limits, should we dial them down?&#8217; <a href="https://fedoraproject.org/wiki/Design/CGroupsUI/Draft1">An earlier draft of the mockups</a> showed graphs of each for comparison.</li>
<li><strong>(Edit: idea from Bill Nottingham)</strong> Support multiple systems in one UI over the network</li>
</ol>
<p>The wiki page for this design (including Inkscape SVG sources) is here:<br />
<a href="https://fedoraproject.org/wiki/Design/CGroupsUI">http://fedoraproject.org/wiki/Design/CGroupsUI</a></p>
<h3>Feedback</h3>
<p>Is this nuts? Does it make sense? Is this the wrong approach? Do you use cgroups? Would this be a useful tool, or does it suck?</p>
<p>I hope you&#8217;ll let us know.</p>
<br />Filed under: <a href='http://mairin.wordpress.com/category/fedora/cgroups/'>cgroups</a>, <a href='http://mairin.wordpress.com/category/fedora/'>Fedora</a>, <a href='http://mairin.wordpress.com/category/interaction-design/'>Interaction Design</a>, <a href='http://mairin.wordpress.com/category/interaction-design-work/'>Interaction Design Work</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mairin.wordpress.com/2801/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mairin.wordpress.com/2801/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mairin.wordpress.com&#038;blog=929179&#038;post=2801&#038;subd=mairin&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mairin.wordpress.com/2011/05/13/ideas-for-a-cgroups-ui/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/06679d1adeaa0f535752137036c004a8?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">mairin</media:title>
		</media:content>

		<media:content url="http://duffy.fedorapeople.org/blog/designs/cgroups/diagram.png" medium="image" />

		<media:content url="http://duffy.fedorapeople.org/blog/designs/cgroups/diagram2.png" medium="image" />

		<media:content url="http://duffy.fedorapeople.org/blog/designs/cgroups/diagram3.png" medium="image" />

		<media:content url="http://duffy.fedorapeople.org/blog/designs/cgroups/diagram5.png" medium="image" />

		<media:content url="https://fedoraproject.org/w/uploads/thumb/0/0d/Cgroups-mockup-2-usertab.png/500px-Cgroups-mockup-2-usertab.png" medium="image">
			<media:title type="html">users tab</media:title>
		</media:content>

		<media:content url="https://fedoraproject.org/w/uploads/thumb/4/4e/Cgroups-mockup-2-processestab.png/500px-Cgroups-mockup-2-processestab.png" medium="image">
			<media:title type="html">processes tab</media:title>
		</media:content>

		<media:content url="https://fedoraproject.org/w/uploads/thumb/d/df/Cgroups-mockup-2-containerstab.png/500px-Cgroups-mockup-2-containerstab.png" medium="image">
			<media:title type="html">containers tab</media:title>
		</media:content>
	</item>
		<item>
		<title>authconfig-gtk UI revamp</title>
		<link>http://mairin.wordpress.com/2010/02/18/authconfig-gtk-ui-revamp/</link>
		<comments>http://mairin.wordpress.com/2010/02/18/authconfig-gtk-ui-revamp/#comments</comments>
		<pubDate>Thu, 18 Feb 2010 05:34:08 +0000</pubDate>
		<dc:creator>mairin</dc:creator>
				<category><![CDATA[Interaction Design Work]]></category>

		<guid isPermaLink="false">http://mairin.wordpress.com/?p=1588</guid>
		<description><![CDATA[Recently I&#8217;ve been working on a UI revamp of authconfig-gtk AKA system-config-authentication. Here is the existing UI: From what I&#8217;ve gathered about this UI: It&#8217;s fairly old. It&#8217;s grown organically, with new options and features added on piecemeal without an overall design vision. It exists in firstboot too, under the &#8216;network login&#8217; button. It allows &#8230; <a href="http://mairin.wordpress.com/2010/02/18/authconfig-gtk-ui-revamp/">Continue reading <span class="meta-nav">&#187;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mairin.wordpress.com&#038;blog=929179&#038;post=1588&#038;subd=mairin&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Recently I&#8217;ve been working on a UI revamp of authconfig-gtk AKA system-config-authentication. Here is<br />
<a href="https://fedoraproject.org/wiki/Design/SSSD#Current_UI">the existing UI</a>:</p>
<p><a href="https://fedoraproject.org/wiki/Design/SSSD#Current_UI"><img src="https://fedoraproject.org/w/uploads/5/59/Sysconfauth-legacy-userinfo.png"></a></p>
<p>From what I&#8217;ve gathered about this UI:</p>
<ul>
<li>It&#8217;s fairly old.</li>
<li>It&#8217;s grown organically, with new options and features added on piecemeal without an overall design vision.</li>
<li>It exists in firstboot too, under the &#8216;network login&#8217; button.</li>
<li>It allows you check off as many and whatever identity and authentication methods you desire, even if the combinations make no sense.</li>
</ul>
<p>That last point leads me to classify it as a good example of a <strong>box of chocolates GUI</strong>, meaning &#8216;you never know what you&#8217;re going to get.&#8217; Configuring isn&#8217;t really a task that most people really have as a life goal nor is it something generally considered fun (it&#8217;s the cool stuff the configuration eventually enables you to do that&#8217;s fun!), so I think configuration / administration UIs like this often degrade to the &#8216;box of chocolates&#8217; state. Authconfig-gtk will try each combination possible from your selections, trying each little chocolate, er, moving on from failure until it hits one that ends up being cherry creme-filled, er, actually works.</p>
<p>The catalyst for revisiting the UI is a cool new technology called <a href="https://fedorahosted.org/sssd">SSSD</a> that folks such as  <a href="http://blogs.fedoraproject.org/wp/sgallagh">Stephen Gallagher</a> and <a href="http://blogs.fedoraproject.org/wp/elapi">Dmitri Pal</a> are working on. SSSD stands for &#8216;system security services daemon.&#8217; It is going to unify identity and authentication access and enable features such as offline login and caching support for centrally-managed system logins (e.g., you don&#8217;t need to be on your corporate VPN to be able to log into your laptop which uses an LDAP account on that VPN.) The challenges:</p>
<ul>
<li>SSSD does not yet support all the protocols that the legacy stack does (for example, Winbind) and won&#8217;t for Fedora 13.</li>
<li>SSSD enables you to do things the legacy stack also supports.</li>
<li>There are still users who need to use the legacy stack, so it&#8217;s not yet retire-able.</li>
<li>There are advantages to using SSSD&#8217;s currently-available functionality, so it&#8217;s important to provide UI access to it so folks can try it out.</li>
<li>Multiple ways of doing the same thing via very different frameworks has a high risk of really confusing users.</li>
</ul>
<p>At first I struggled a little bit with how to handle the situation. For Fedora 12, a panel specifically for SSSD was simply grafted onto the existing UI, and the model was a little similar to how the GNOME Shell preview works in the Desktop Effects panel of Fedora &#8211; it&#8217;s this new technology you can &#8216;enable&#8217; or &#8216;disable&#8217; in a modal manner:</p>
<p><a href="https://fedoraproject.org/wiki/Design/SSSD#Current_UI"><img src="https://fedoraproject.org/w/uploads/e/ee/Sysconfauth-legacy-sssd.png"></a></p>
<p>For Fedora 13, the path <a href="http://blogs.fedoraproject.org/wp/sgallagh">Stephen</a>, <a href="http://blogs.fedoraproject.org/wp/elapi">Dmitri</a>, and Tomas Mraz considered at first was to build a shiny new and fresh UI to handle SSSD-specific configuration, and keep the legacy UI as-is alongside it, with the plan to eventually retire it. <a href="https://fedoraproject.org/w/index.php?title=Design/SSSD&amp;oldid=151637">The first set of mockups I put together</a> along this path exposed some problems that <a href="http://blogs.fedoraproject.org/wp/mclasen">Matthias</a> helped identify as being too problematic:</p>
<ul>
<li>The user has a task they want to do. We complicate their being able to do it by having to ask them questions along a line so we can figure out what technology they intend to use so we know whether or not to present them with the legacy UI or the new UI. <a href="https://fedoraproject.org/w/index.php?title=Design/SSSD&amp;oldid=151637#Firstboot">This would complicate firstboot terribly</a>. It&#8217;s essentially allowing the implementation to surface on the UI &#8211; inside-out UI is no good.</li>
<li>Making every single user choose what they want in every case is more difficult than giving the users the most common / useful configuration by default and requiring only some (not all, and hopefully a minority) of users to make other choices and change the defaults. <strong>I think the latter is a design pattern we should strive to follow in Fedora</strong>.</li>
<li>Having two UIs means you might need two menu items &#8211; we have enough configuration items in the menus already, and how are users to know which UI they need to go into to accomplish what they need done? It&#8217;s not like there would have been a clean split between the two &#8211; the legacy UI manages both local and centrally-managed accounts while the new UI manages some centrally-managed account types only.</li>
<li>Having the legacy UI pop up in firstboot means having three or four levels deep of windows popping up &#8211; firstboot isn&#8217;t a desktop environment and it&#8217;s awkward to manage windows in a limited environment like that. Yes, it&#8217;s like that now, but it doesn&#8217;t mean it&#8217;s the right way to do it.</li>
</ul>
<p><a href="http://blogs.fedoraproject.org/wp/mclasen">Matthias</a> really helped me on the path towards a design that I feel is a whole lot cleaner and simpler to use. Simply put, the new approach here is to take the existing UI, bring it up to speed and give it a clean overall design, and integrate the new SSSD technology into it without it being so painfully apparent which stack is doing what by having the divide between two different and somewhat intersecting UIs. Here&#8217;s the breakdown of changes in this new current redesign proposal:</p>
<ul>
<li><a href="https://fedoraproject.org/wiki/Talk:Design/SSSD#Technology_Review">We started with a run down of what identity &amp; authentication environments are most common in actual practice</a>. Some of the combos you can select in the current UI (for example, hesiod and winbind) are not actually that common in practice, yet are just as easy to select in that UI as more common scenarios like NIS and kerberos. So now the proposed UI handles only <a href="https://fedoraproject.org/wiki/Design/SSSD#Paths_Through_the_Tab">the five most common environments</a> and wacky combinations are not possible. (We figure, if you&#8217;re picky enough to want to do something that wacky, you&#8217;re comfortable enough setting it up yourself with either the command-line setup program or in the config files.) Through weeding out the less useful combinations, the UI provides a little bit more guidance to the user as to what they might want to select.</li>
<li>The main focus is on the environments users need support for, <strong>not</strong> on the backend (legacy vs sssd) used to provide it. The &#8216;backend technology&#8217; column <a href="https://fedoraproject.org/wiki/Design/SSSD#Paths_Through_the_Tab">of this table</a> shows which backend is called into action for which UI choices. You&#8217;ll need the table to figure this out because it&#8217;s not embedded into the UI &#8211; and it shouldn&#8217;t be &#8211; do I really care whether or not the legacy stack or SSSD is letting me log into my company laptop? No, I just care that I can log in and get my work done.</li>
<li>A group of us walked through the current advanced options tab <a href="https://fedoraproject.org/wiki/Talk:Design/SSSD#Tab_3:_Options">and noted which options made sense in which scenarios, which didn&#8217;t, and figured out which really didn&#8217;t belong in the UI</a>. We cut three options that made little practical sense and reworded another to make its utility to the user more clear.</li>
<li>The current UI is based on a model of having <a href="https://fedoraproject.org/wiki/File:Sysconfauth-legacy-hesiod.png">a base dialog with multiple smaller dialogs that pop up on demand</a>. Why so many windows? The new proposed UI mockups embed the form fields directly in the UI and different fields appear based on which dropdown entries you choose &#8211; no more baby windows popping up everywhere. <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </li>
<li><a href="http://blogs.gnome.org/halfline/">Ray</a> inspired the sanity-checking form field bits &#8211; I was worried about GDM error messages, but he noted it&#8217;s better to prevent user error upfront by sanity-checking user-entered fields &#8211; especially hostnames &#8211; to see if they even have a shot at working. The consequences here are pretty high &#8211; I can make a goof that prevents me from logging into my computer at all (unless I can break in via single-user mode.) The stakes are pretty high, so it&#8217;s a good idea to prevent error in the first place.</li>
</ul>
<p>One interesting design problem that popped up was how to handle smartcards. <a href="http://www.dahyabhai.net/nalin/blog">Nalin</a> and <a href="http://blogs.gnome.org/halfline/">Ray</a> very patiently explained to me how they work &#8211; the model is different than the other technologies which really conflicted with my own mental model of the situation. Smart cards can be used to authenticate local and network accounts. So if I have a smartcard with the account &#8216;duffy&#8217; on it, and I have both a &#8216;duffy&#8217; local login on my laptop as well as a &#8216;duffy&#8217; login on a corporate LDAP server &#8211; when I plug in my smartcard, how does it know whether or not it should log into my local account residing on my laptop, or my corporate account residing on the corporate LDAP server? If I understand correctly, you can&#8217;t just configure smart cards to only work for one or the other without affecting other login methods too. So rather than <a href="https://fedoraproject.org/w/uploads/d/d1/Sysconfig-auth-mockups-draft2-6smartcardsmartcard.png">making smart cards another authentication method for LDAP as originally proposed</a>, smart cards are <a href="https://fedoraproject.org/w/uploads/3/34/Sysconfig-auth-mockups-draft2-advancedoptions2.png">an option in the &#8216;advanced settings&#8217; tab that you can turn on for both local &amp; remote or off for both local &amp; remote</a>.</p>
<p>Anyway, enough jibber-jabber. If authconfig-gtk / system-config-authentication is a tool you&#8217;ve used or if you work in an environment that has centrally-managed logins, please let me know if these mockups make sense or where they might not work in your environment. Or, if you see stupid mistakes or flaws in some of the assumptions / methods I&#8217;ve described here, please feel free to holler. We&#8217;d love to hear your feedback! (and at the very least, I hope this description of some of the design process behind the revamp is interesting for you <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  ) <a href="https://fedoraproject.org/wiki/Design/SSSD">The full current UI revamp proposal is here</a>.</p>
<p><a href="https://fedoraproject.org/wiki/Design/SSSD"><img src="https://fedoraproject.org/w/uploads/8/81/Sysconfig-auth-mockups-draft2-1ldapkrb.png"></a></p>
<br />Filed under: <a href='http://mairin.wordpress.com/category/interaction-design-work/'>Interaction Design Work</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mairin.wordpress.com/1588/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mairin.wordpress.com/1588/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mairin.wordpress.com&#038;blog=929179&#038;post=1588&#038;subd=mairin&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mairin.wordpress.com/2010/02/18/authconfig-gtk-ui-revamp/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/06679d1adeaa0f535752137036c004a8?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">mairin</media:title>
		</media:content>

		<media:content url="https://fedoraproject.org/w/uploads/5/59/Sysconfauth-legacy-userinfo.png" medium="image" />

		<media:content url="https://fedoraproject.org/w/uploads/e/ee/Sysconfauth-legacy-sssd.png" medium="image" />

		<media:content url="https://fedoraproject.org/w/uploads/8/81/Sysconfig-auth-mockups-draft2-1ldapkrb.png" medium="image" />
	</item>
	</channel>
</rss>
