{"id":765,"date":"2016-08-25T20:22:33","date_gmt":"2016-08-25T20:22:33","guid":{"rendered":"http:\/\/blog.mozilla.org\/calendar\/?p=765"},"modified":"2016-08-25T20:51:54","modified_gmt":"2016-08-25T20:51:54","slug":"gsoc-2016-where-things-stand","status":"publish","type":"post","link":"https:\/\/blog.mozilla.org\/calendar\/2016\/08\/gsoc-2016-where-things-stand\/","title":{"rendered":"GSoC 2016: Where Things Stand"},"content":{"rendered":"<p>The clock has run out on Google Summer of Code 2016.\u00a0 In this post I&#8217;ll summarize the feedback we received on the new UI design and the work I&#8217;ve been doing since my last post.<\/p>\n<p><strong>Feedback on the New UI Design<br \/>\n<\/strong><\/p>\n<p>A number of people shared their feedback on the new UI design by posting comments on the <a href=\"http:\/\/blog.mozilla.org\/calendar\/2016\/06\/gsoc-2016-seeking-feedback-on-ui-design\/\">previous blog post<\/a>.\u00a0 The response was generally positive.\u00a0 Here&#8217;s a brief summary:<\/p>\n<ul>\n<li>One commenter advocated for keeping the current date\/time picker design, while another just wanted to be sure to keep quick and easy text entry.<\/li>\n<li>A question about how attendees availability would be shown (same as it is currently).<\/li>\n<li>A request to consider following Google Calendar&#8217;s reminders UI.<\/li>\n<li>A question about preserving the vertical scroll position across different tabs (this should not be a problem).<\/li>\n<li>A concern about how the design would scale for very large numbers (say hundreds) of attendees, categories, reminders, etc.\u00a0 (See <a href=\"https:\/\/blog.mozilla.org\/calendar\/2016\/06\/gsoc-2016-seeking-feedback-on-ui-design\/#comment-111842\">my reply<\/a>.)<\/li>\n<\/ul>\n<p>Thanks to everyone who took the time to share their thoughts.\u00a0 It is helpful to hear different views and get user input.\u00a0 If you have not weighed in yet, feel free to do so, as more feedback is always welcome.\u00a0 See the <a href=\"http:\/\/blog.mozilla.org\/calendar\/2016\/06\/gsoc-2016-seeking-feedback-on-ui-design\/\">previous blog post<\/a> for more details.<\/p>\n<p><strong>Coding the Summer Away<br \/>\n<\/strong><\/p>\n<p>A lot has happened over the last couple months.\u00a0 The big news is that I finished porting the current UI from the window dialog to a tab.\u00a0 Here&#8217;s a screenshot of this XUL-based implementation of the UI in a tab (click to enlarge):<\/p>\n<p><a href=\"https:\/\/blog.mozilla.org\/calendar\/files\/2016\/08\/xul-ui-in-tab.png\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-medium wp-image-767\" src=\"https:\/\/blog.mozilla.org\/calendar\/files\/2016\/08\/xul-ui-in-tab-580x399.png\" alt=\"xul-ui-in-tab\" width=\"580\" height=\"399\" srcset=\"https:\/\/blog.mozilla.org\/calendar\/files\/2016\/08\/xul-ui-in-tab-580x399.png 580w, https:\/\/blog.mozilla.org\/calendar\/files\/2016\/08\/xul-ui-in-tab-768x529.png 768w, https:\/\/blog.mozilla.org\/calendar\/files\/2016\/08\/xul-ui-in-tab-940x647.png 940w, https:\/\/blog.mozilla.org\/calendar\/files\/2016\/08\/xul-ui-in-tab.png 1225w\" sizes=\"(max-width: 580px) 100vw, 580px\" \/><\/a><\/p>\n<p>Getting this working in a really polished way took more time than I anticipated, largely because the code had to be refactored so that the majority of the UI lives inside an iframe.\u00a0 This entailed using asynchronous message passing for communication between the iframe&#8217;s contents and its outer parent context (e.g. toolbars, menus, statusbar, etc.), whether that context is a tab or a dialog window.\u00a0 While this is not a visible change, it was necessary to prepare the way for the new HTML-based design, where an HTML file will be loaded in the iframe instead of a XUL file.<\/p>\n<p>Along with the iframe refactoring, there are also just a lot of details that go into providing an ideal user experience, all the little things we tend to take for granted when using software.\u00a0 Here&#8217;s a list of some of these things that I worked on over the last months for the XUL implementation:<\/p>\n<ul>\n<li>when switching tabs, update the toolbar and statusbar to reflect the current tab<\/li>\n<li>persist open tabs across application restarts (which requires serializing the tab state)<\/li>\n<li>ask the user about saving changes before closing a tab, before closing the application window, and before quitting the application<\/li>\n<li>allow customizing toolbars with the new iframe setup<\/li>\n<li>provide a default window dialog height and width with the new iframe setup<\/li>\n<li>display icons for tabs and related CSS\/style work<\/li>\n<li>get the relevant &#8216;Events and Tasks&#8217; menu items to work for a task in a tab<\/li>\n<li>allow hiding and showing the toolbar from the view &gt; toolbars menu<\/li>\n<li>if the user has customized their toolbar for the window dialog, migrate those settings to the tab toolbar on upgrade<\/li>\n<li>fix existing mozmill tests so they work with the new iframe setup<\/li>\n<li>test for regressions in SeaMonkey<\/li>\n<\/ul>\n<p>In the next two posts I&#8217;ll describe how to try out this new feature in a development version of Thunderbird, discuss the HTML implementation of the new UI design, and share some thoughts on using React for the HTML implementation.<\/p>\n<p>&#8212; Paul Morris<\/p>\n","protected":false},"excerpt":{"rendered":"<p>The clock has run out on Google Summer of Code 2016.\u00a0 In this post I&#8217;ll summarize the feedback we received on the new UI design and the work I&#8217;ve been doing since my last post. Feedback on the New UI Design A number of people shared their feedback on the new UI design by posting [&hellip;]<\/p>\n","protected":false},"author":1318,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[879],"_links":{"self":[{"href":"https:\/\/blog.mozilla.org\/calendar\/wp-json\/wp\/v2\/posts\/765"}],"collection":[{"href":"https:\/\/blog.mozilla.org\/calendar\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.mozilla.org\/calendar\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.mozilla.org\/calendar\/wp-json\/wp\/v2\/users\/1318"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.mozilla.org\/calendar\/wp-json\/wp\/v2\/comments?post=765"}],"version-history":[{"count":0,"href":"https:\/\/blog.mozilla.org\/calendar\/wp-json\/wp\/v2\/posts\/765\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.mozilla.org\/calendar\/wp-json\/wp\/v2\/media?parent=765"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.mozilla.org\/calendar\/wp-json\/wp\/v2\/categories?post=765"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.mozilla.org\/calendar\/wp-json\/wp\/v2\/tags?post=765"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}