<?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/"
	>

<channel>
	<title>Ray Strode &#187; General</title>
	<atom:link href="http://blogs.gnome.org/halfline/category/general/feed/" rel="self" type="application/rss+xml" />
	<link>http://blogs.gnome.org/halfline</link>
	<description>So...</description>
	<lastBuildDate>Wed, 13 Jul 2011 20:40:45 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Shell features</title>
		<link>http://blogs.gnome.org/halfline/2011/07/13/shell-features/</link>
		<comments>http://blogs.gnome.org/halfline/2011/07/13/shell-features/#comments</comments>
		<pubDate>Wed, 13 Jul 2011 20:30:48 +0000</pubDate>
		<dc:creator>halfline</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://blogs.gnome.org/halfline/?p=91</guid>
		<description><![CDATA[So Allan posted a pretty good summary of all the cool goings ons in shell land right now. I thought I&#8217;d just follow up with a quick video showing two of the work-in-progress features, the login screen and the on screen keyboard. As promised in my last post I&#8217;m going to do a follow up [...]]]></description>
			<content:encoded><![CDATA[<p>So <a href="http://afaikblog.wordpress.com/2011/07/13/news-from-gnome-shell-land/">Allan</a> posted a pretty good summary of all the cool goings ons in shell land right now.</p>
<p>I thought I&#8217;d just follow up with a quick video showing two of the work-in-progress features, the login screen and the on screen keyboard.</p>
<p>As promised in my <a href="http://blogs.gnome.org/halfline/2011/06/14/multiple-concurrent-authentication-conversations/">last post</a> I&#8217;m going to do a follow up post with more details about where GDM is going in 3.2, but for now just the quick video: <a href="http://people.gnome.org/~halfline/shell-login-with-onscreen-keyboard.ogg">(click here)</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.gnome.org/halfline/2011/07/13/shell-features/feed/</wfw:commentRss>
		<slash:comments>22</slash:comments>
<enclosure url="http://people.gnome.org/~halfline/shell-login-with-onscreen-keyboard.ogg" length="2445312" type="audio/ogg" />
		</item>
		<item>
		<title>System Modal Dialogs</title>
		<link>http://blogs.gnome.org/halfline/2010/10/25/system-modal-dialogs/</link>
		<comments>http://blogs.gnome.org/halfline/2010/10/25/system-modal-dialogs/#comments</comments>
		<pubDate>Mon, 25 Oct 2010 19:10:59 +0000</pubDate>
		<dc:creator>halfline</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://blogs.gnome.org/halfline/?p=76</guid>
		<description><![CDATA[So in an effort to help make GNOME 3 turn out as good as possible, I&#8217;m helping figure out the story for system modal dialogs in the presence of the shell. Firstly, I have to say that working with the shell is really rather refreshing. It&#8217;s very neat to start with a &#8220;naked&#8221; dialog and [...]]]></description>
			<content:encoded><![CDATA[<p>So in an effort to help make GNOME 3 turn out as good as possible, I&#8217;m helping figure out the story for <a href="http://live.gnome.org/GnomeShell/Design/Whiteboards/SystemDialogs">system modal dialogs</a> in the presence of the shell.  </p>
<p>Firstly, I have to say that working with the shell is really rather refreshing.  It&#8217;s very neat to start with a &#8220;naked&#8221; dialog and write some <a href="http://www.gnome.org/~halfline/stylesheet-excerpt.txt">CSS</a> and see it morph into the mockups. It&#8217;s a totally different development experience but it feels really natural.  Also, doings things in javascript is interesting, too.  Being able to test changes without recompiling, etc, is a nice change of pace, and javascript as a language has some nice constructs (like for (key in hashTable) { &#8230; }) that make some programming tasks look tidier than what I&#8217;m used to.  GObject introspection makes it really easy to talk to various libraries, too.  There&#8217;s some stylistic things I don&#8217;t like about javascript (like camelCase), and there&#8217;s occasionally some googling to figure out the &#8220;javascript way&#8221;, but overall it&#8217;s a very pleasant platform to develop for.</p>
<p>Anyway, I don&#8217;t really want to make this blog post about GNOME 3 as a development platform, but more about system modal dialogs.  These dialogs are the things that should be dealt with &#8220;right away&#8221;.  These are things that require the full attention of the user.  As such, they should</p>
<ul>
<li>should appear front and center on screen</li>
<li>should be clearly coming &#8220;from the OS&#8221; versus from an application</li>
<li>should &#8220;take the stage&#8221; until dismissed</li>
</ul>
<p>The idea is these are things that really can&#8217;t wait, be side lined, etc.   In general, only the os &#8220;core&#8221; should ever need to present a system modal dialog.  </p>
<p>Most dialogs should not be system modal, since most dialogs come from applications.  Also, system modal dialogs have a very high &#8220;cost&#8221; to the user since by their very nature, they&#8217;re modal. That is to say, they preempt the user from whatever auxiliary tasks the user was doing and prevents those tasks from being available again until after the dialog is dealt with.  In this regard, system modal dialogs should never be unexpected.  They should always be the direct consequence of something the user was doing. For many use cases the <a href="http://live.gnome.org/GnomeShell/Design/Guidelines/MessageTray">message tray</a> is a better option than system modal dialogs.</p>
<p>One example where system modal dialogs are very relevant is password dialogs.  We really need password dialogs to have a consistent look that matches the look for the shell.  This is important so that we can &#8220;train&#8221; the user into learning what a password dialog should look like, so they think twice before inputting their password into a dialog that&#8217;s not provided by the OS.  This paves the way for a <a href="http://en.wikipedia.org/wiki/Trusted_path">trusted path</a> future.  Of course, it&#8217;s only a step in the right direction.  Actually getting trusted path is a hard problem that&#8217;s going to have to get solved at some point in the future.  WHen that feature is seriously looked at, the final solution may involve one or more of: secure attention keys, wayland, factory mode login screens, integration with the users cell phone, or other possibilities</p>
<p>Another example of a dialog that should be system modal is the logout dialog.</p>
<p>Now, I just want to give a few details about where I&#8217;m going on the implementation side of things.  Since we know that system modal dialogs need to &#8220;look like&#8221; the shell, they probably need to run in the shell process.  (there&#8217;s no plan to make GTK+ have a &#8220;Look like the shell&#8221; mode etc).   On the other hand, these dialogs are very tightly bound to the service that wants it.  For instance, gnome-session is the only thing that should ever be able to summon the logout dialog for the shell.  Everything else should talk to gnome-session.</p>
<p>Given how closely bound a dialog is to the particular service needing the dialog, ideally, its implementation should be easily adaptable to changes the service needs as the services needs them.  While the look and feel both need to align with the shell, the contents of the dialog need are details almost entirely specific to the service requesting the dialog. The interface between the dialog and the service should be private and without any sort of backward compatibility constraints, etc.  This means it would be best if we could ship the implementation for the dialog with the service.  But how do we ship the implementation with the service and run that implementation in the shell? </p>
<p>The shell already has a very powerful mechanism for extending itself.  This extension system allows us to automatically load a custom javascript file and associated css stylesheet at startup.  By leveraging this feature, gnome-session (for example) can ship its logout dialog right in its own source tree, change it whenever necessary without having to coordinate with the shell, and still achieve the &#8220;core os&#8221; look that&#8217;s important.</p>
<p>There are some unresolved details on how these &#8220;private&#8221; extensions should differ from the more public, user installable extensions the extension system was originally designed for (like should the extension interface be different, should the private extensions show up in the extension list in the UI, etc).</p>
<p>Now, even though we&#8217;ve decided the javascript should ship in the individual service source trees, there&#8217;s still the question of how the dialog and the service will communicate.  Luckily, the javascript code has a great dbus binding called gjs-dbus that makes it pretty simple to export an interface on the session bus that each relevant service can talk to.</p>
<p>Another question is how much &#8220;heavy lifting&#8221; should be in the javascript code.  I mean should the javascript dialogs just be dumb proxies of questions and answers between the user and service? Or alternatively, e.g., when the user clicks, shutdown should the javascript code implementing a shutdown dialog actually call out to ConsoleKit and initiate the shutdown in response to the user?  I don&#8217;t think there&#8217;s any really right answer here.  Certainly, given the support for gobject introspection and the convenient dbus bindings, a lot of low level things could be done straight from the dialog.  There&#8217;s also something to be said for keeping the shell &#8220;lean&#8221; so there aren&#8217;t a lot of moving parts (with bugs) destabilizing something so fundamental to a functioning system.  I think different services will have different amounts of &#8220;implementation&#8221; versus &#8220;presentation&#8221; in their extensions.</p>
<p>This blog post is already getting a bit long, so I&#8217;m going to cut it off here.  I&#8217;ll do another post at some point with some results from the above considerations.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.gnome.org/halfline/2010/10/25/system-modal-dialogs/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
	</channel>
</rss>
<!-- This Quick Cache file was built for (  blogs.gnome.org/halfline/category/general/feed/ ) in 0.20929 seconds, on Feb 11th, 2012 at 2:33 am UTC. -->
<!-- This Quick Cache file will automatically expire ( and be re-built automatically ) on Feb 11th, 2012 at 3:33 am UTC -->
