drupalplanet http://default/ en No one-offs http://default/2019/drupal/no-one-offs <div data-history-node-id="446" class="h-entry node node--type-piece node--view-mode-fulltext ds-1col clearfix"> <div class="clearfix text-formatted field field--name-field-sub-title field--type-text field--label-above"> <div class="field__label">Sub title</div> <div class="field__item"><p>Things seen here are configured there.</p> </div> </div> <div class="field field--name-field-image field--type-image field--label-hidden field__item">/sites/default/files/styles/large/public/things-shown-here-configured-there.png?itok=qSZb6N0L</div> <div class="clearfix text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__item"><p><em>An elaboration on underlying considerations that make simple suggestions as <a href="https://www.drupal.org/project/drupal/issues/1440678">this one</a> not so simple after all.</em></p> <p>An important consideration when deciding whether to “add something to core” is that generally speaking, core doesn’t do one-offs. The underlying principle is not <em>“make it do X”</em> but <em>“make it possible to make it do X (and X2, X3,…)</em></p> <h2>Linking from a <em>create</em> context to a <em>configuration</em> context</h2> <p><a href="https://www.drupal.org/project/drupal/issues/1440678">In this particular case</a> we have a proposal to link to the screen where you can add new content types from the page that lists available content types to create content with. Or, in url speak: on /node/add, put a link to /admin/structure/types. Or once more: on the screen that lists existing content types that you can <em>create content</em> with, add a link to the screen that lets you <em>define new content types</em>.</p> <p>Notice the distinction between “create content of type X” and “define a new type of content Y”. The first is a content creation task, the second is a content definition task (in Drupal jargon usually captured under “site building”). This distinction then should clarify why a link to define a new content type should not use the “blue + button” pattern on a screen that is in service of a content creation task.</p> <p>Back to the “no one-offs” principle. Where and how <em>can</em> we add a link of this kind? To answer that question we should look for possible patterns. Is there a more generalised definition for the type of problem that this single link to elsewhere wants to solve?</p> <p>The example is: put a link to the content <em>type</em> definition area on the screen that lists already available types to create content with. Restated more generally: link to <em>that</em> area of the Drupal admin where the things on <em>this</em> screen are configured.</p> <h2>Connecting the dots <em>is</em> important</h2> <p>You know those links at the bottom of product pages in an online store: “people who bought this item also bought X, Y and Z”. In our case it’s more like “Things seen <em>here</em> are configured <em>there</em>.</p> <p>I noticed a sort of similar pattern in the Android OS settings pages, where the screen ends with suggestions of related topics to the ones already shown. It’s a way to provide meaningful next places to go if the current page didn’t offer what you were looking for (and is of course a symptom of how many settings there are in the first place).</p> <p><em>“Things seen <strong><em>here</em></strong> are defined <strong><em>there</em></strong>.</em></p> <p>If we can find more examples of where this would be meaningful and helpful then we might have a good case for introducing a new user interface pattern. See image for some initial examples.</p></div> <div class="field field--name-taxonomy-vocabulary-1 field--type-entity-reference field--label-inline"> <div class="field__label">Tags</div> <div class="field__items"> <div class="field__item"><a href="http://default/tag/drupal" hreflang="en">Drupal</a></div> <div class="field__item"><a href="http://default/drupal" hreflang="en">drupalplanet</a></div> </div> </div> <span class="hidden"><a href="https://brid.gy/publish/twitter"></a></span> <div class="node__links"> <ul class="links inline"><li class="comment-forbidden"></li></ul> </div> </div> Fri, 10 May 2019 14:05:23 +0000 Roy 446 at http://default Implementing IndieWeb on your personal Drupal site, part 1 http://default/2018/implementing-indieweb-your-personal-drupal-site-part-1 <div data-history-node-id="417" class="h-entry node node--type-piece node--view-mode-fulltext ds-1col clearfix"> <div class="clearfix text-formatted field field--name-field-sub-title field--type-text field--label-above"> <div class="field__label">Sub title</div> <div class="field__item"><p>Laying the foundations for POSSE</p> </div> </div> <div class="field field--name-field-image field--type-image field--label-hidden field__item">/sites/default/files/styles/large/public/20180610-indieweb.png?itok=bFJfMCXu</div> <div class="clearfix text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__item"><p><em>This is my version of the steps you need to take to make your site part of the indie web community. <a href="http://realize.be/">Swentel</a> helped me getting it all setup on this here Drupal site using his <a href="https://www.drupal.org/project/indieweb">indieweb module</a>. It’s all a bit complicated still, so this is mostly me trying to retroactively understand what’s going on.</em></p> <p>As it says on the site, the <a href="https://indieweb.org/">IndieWeb</a> is a people-focused alternative to the corporate web. Its main tenets:</p> <ol> <li><strong>Ownership</strong> – your content is yours, it should not belong to a corporation.</li> <li><strong>Connection</strong> – starting from your own site you can share your content to all other services.</li> <li><strong>Control</strong> – post what you want, in the format you prefer, using your own URLs that you keep permanent.</li> </ol> <p>While 1 and 3 are essential and relatively easy to achieve (use your own domain and post your content there), it’s number 2 that is the most alluring.</p> <p>Owning your stuff <em>and</em> being able to share it across multiple platforms combines ownershop with reach. This is what “POSSE” is all about: Publish (on your) Own Site, Syndicate Elsewhere. Drupal lead Dries Buytaert has written several <a href="https://dri.es/tag/posse">posts outlining his POSSE plan</a>.</p> <h2>Getting started</h2> <p>This “Connection” part of indieweb publishing is also the most complicated. There are quite a few moving parts to getting it all up and running.</p> <p>For Drupal sites, the setup for the community/sharing/syndication parts of indieweb publishing has gotten much more accessible with the release of the <a href="https://www.drupal.org/project/indieweb">IndieWeb module</a> created by <a href="http://realize.be/">swentel</a>. It doesn’t necessarily reduce the number of things to set up, but it provides a centralized UI for all of them: Webmentions, Microformats, Feeds, Micropub, IndieAuth and Microsub.</p> <p>Before going over the details of configuring the indieweb module itself, we have to take care of some basics first.</p> <h2>Introduce yourself (right on)</h2> <p>To own your content on the web, you have to establish that you are in fact, you. That’s why IndieWeb starts with having your own domain and posting some initial content there. Important part of this initial content is a specific bit of HTML that establishes you as the author and owner of things published on this particular domain:</p> <p><code><a class="h-card" href="http://www.yoroy.com"><img src="/photo.png" alt="This is me" /> Roy Scholten</a> </code></p> <p>The <em>specific</em> part here is that “h-card” class added to the anchor tag. This “h-card” is one of a collection of so-called <a href="http://microformats.org/wiki/microformats2">microformats</a>. With microformats you give more structure and semantics to information presented in HTML. In this case, h-card is the microformat to use for publishing information about people or organisations. We’ll need to add other microformats to (blog) posts you publish on the site, but that’s for later.</p> <h3>To do in Drupal</h3> <p>The indieweb module does not (yet?) handle adding this information to your site. Add your version of the HTML snippet above to a (new or existing) Drupal block. Place that block to be visible on your homepage. The site footer or maybe a sidebar are obvious places you can put it. Mine’s in the footer below.</p> <p>You can check if all is fine with <a href="https://indiewebify.me/validate-h-card/">https://indiewebify.me/validate-h-card/</a>. Enter your domain name there and it will report back with what it found and suggest additional elements you could add to enhance your h-card.</p> <p>Even without posting any other content to your own site, you now have your own space on the indie web and setup your identity in a way that you own and control.</p> <h2>Next: add links to your existing social media accounts</h2> <p>You’ve seen those signup forms that let you create an account by using your existing Google, Facebook or Twitter account details. In this step, you configure your own domain to be your <a href="https://indieweb.org/IndieAuth">IndieAuth</a> identity. This lets you use your own domain to sign in to other sites and services.</p> <p>There are not many sites outside the indieweb circles itself that offer this, I think. It’s still useful to do this though. You’ll likely want to use some of these indieweb services, especially to automatically share (links to) your content on other platforms like Twitter or Facebook.</p> <h3>To do in Drupal</h3> <p>Detailed instructions are <a href="https://indieweb.org/How_to_set_up_web_sign-in_on_your_own_domain">here</a>. In short:</p> <p>Add links to your other profiles and add the <code>rel="me"</code> attribute. Might as well add this to that h-card block you created in the first step. For example:</p> <p><code><a href-"https://www.twitter.com/royscholten" rel="me">@royscholten on Twitter</a> </code></p> <p>If you have a Github account, that’s also a good one to add.</p> <h3>To do on the external sites you link to</h3> <p>Link back to your homepage from your profile page on these services. The indieweb wiki has <a href="https://indieweb.org/How_to_set_up_web_sign-in_on_your_own_domain">direct links to edit your Twitter and Github profile</a>.</p> <p>Then, try logging in to indieweb.org to see if it all works.</p> <h2>So far, so good,</h2> <p>So what? By establishing your identity on your own domain you stake out your own spot on the internet that you control. With this set up, you have created an environment for publishing on your own site and syndicating elsewhere.</p> <p>Next time: configuring the <a href="https://www.drupal.org/project/indieweb">indieweb module</a> to start sending and receiving <a href="https://indieweb.org/Webmention">webmentions</a>, the indieweb catch-all term for comments, likes, reposts and the like.</p> </div> <div class="field field--name-taxonomy-vocabulary-1 field--type-entity-reference field--label-inline"> <div class="field__label">Tags</div> <div class="field__items"> <div class="field__item"><a href="http://default/taxonomy/term/153" hreflang="en">indieweb</a></div> <div class="field__item"><a href="http://default/tag/posse" hreflang="en">posse</a></div> <div class="field__item"><a href="http://default/drupal" hreflang="en">drupalplanet</a></div> </div> </div> <span class="hidden"><a href="https://brid.gy/publish/twitter"></a></span> <div class="node__links"> <ul class="links inline"><li class="comment-forbidden"></li></ul> </div> </div> Sun, 10 Jun 2018 21:53:30 +0000 Roy 417 at http://default Design system principles http://default/2018/design-system-principles <div data-history-node-id="396" class="h-entry node node--type-piece node--view-mode-fulltext ds-1col clearfix"> <div class="clearfix text-formatted field field--name-field-sub-title field--type-text field--label-above"> <div class="field__label">Sub title</div> <div class="field__item"><p>Defining aspirations and the building blocks and guidelins to achieve them.</p> </div> </div> <div class="clearfix text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__item"><p>Reviewed a list of design system sites today. </p> <ul> <li>Google’s <a href="http://material.io/">Material</a></li> <li><a href="http://lightningdesignsystem.com/">Lightning</a> for Salesforce</li> <li><a href="https://fluent.microsoft.com/">Fluent</a> by Microsoft</li> <li><a href="https://polaris.shopify.com">Polaris</a> for Shopify</li> <li><a href="https://design.firefox.com/photon/welcome.html">Photon</a> for Firefox</li> <li><a href="https://www.ibm.com/design/language/">IBM design language</a></li> <li><a href="https://designsystem.gov.au/">Australian Government Design System</a></li> <li><a href="https://design.trello.com/">Nachos</a> for Trello</li> </ul> <p>Not super strict, but mostly these are design systems that aim to support multiple apps, tools and services on multiple platforms.</p> <p>I specifically looked at:</p> <ol> <li>The guiding design principles: which ones and why</li> <li>Top level sections for exploring the full system</li> </ol> <h2>Top level sections</h2> <p>Can be short on this: a quite consistent pattern of entries for "Getting started, Styleguide, Resources/downloads. What’s behind there varies a lot in depth and quality, mostly depending on the size of the organisation behind it. IBM goes very deep, Nachos understandably less so.</p> <h2>Design system principles</h2> <p>The most common pattern is to list a noun or short statement that expresses a characteristic of the type of designs the system wants to support. “Clarity”, “Empower but dont’t overwhelm”, “Universal”, “Engaging and immersive”, “Approachable”, etc. <a href="https://material.io/guidelines/#introduction-principles">Material</a> only lists 3 high-level ones but has more per section below. <a href="https://design.trello.com/principles">Nachos</a> maybe goes a bit long with 10.</p> <p>Not many of the systems listed mention content, text, words as an important part of a design. Shopify says: “Thoughtful, consistent interface content is a core element of a well-designed user experience.” IBM puts “Defer to content” as the first guiding principle for their <em>visual</em> design guidelines.</p> <p>Even less mentions of designing for people. This may be inherent to what these sites do: describing the aspects of the system itself. Most of the times the human centered part is put under a usability or accessibility section further down the hierarchy.</p> <h3>One interesting outlier</h3> <p><a href="https://www.ibm.com/design/language/">IBM design language</a> takes a different approach. Instead of listing the high level characteristics the systems aspires to, it defines <a href="https://www.ibm.com/design/language/experience">6 universal experiences</a>:</p> <ol> <li>Discover, try and buy – Meet users where they are. Show, don’t tell. Create a seamless transition from “try” to “buy.”</li> <li>Get started – Invite users in and show them what they can do.</li> <li>Everday use – Users should get personal value every time they interact with your product.</li> <li>Manage and upgrade – Upkeep and receiving the newest improvements should be as elegant and predictable as using the product every day.</li> <li>Leverage and extend – Everything wants to be mashed up. Each part of your offering should be available as an API.</li> <li>Get support – Support users in the ways they want to get help. Expand their knowledge and encourage them to share.</li> </ol> <p>These put user-centered design center stage, using a life cycle approach. It acknowledges that there are different stages in familiarity with the product and identifies different clusters of scenarios and tasks. Everyday use is something else than Manage and upgrade. Different frames or lenses for looking at the same product(s). This also implies that the same app, product, or even a single new feature has to worked on from all these perspectives.</p> <p>Thinking about first time use (getting started), regular use (typical tasks), advanced use (extending, customizing) and managing/upgrading are all very relevant perspectives on how people work with Drupal. One example: “Getting started” currently gets special attention, see improving the <a href="https://dri.es/three-ways-we-can-improve-drupal-evaluator-experience">Drupal evaluator experience</a>.</p> </div> <div class="field field--name-taxonomy-vocabulary-1 field--type-entity-reference field--label-inline"> <div class="field__label">Tags</div> <div class="field__items"> <div class="field__item"><a href="http://default/drupal" hreflang="en">drupalplanet</a></div> </div> </div> <span class="hidden"><a href="https://brid.gy/publish/twitter"></a></span> <div class="node__links"> <ul class="links inline"><li class="comment-forbidden"></li></ul> </div> </div> Wed, 02 May 2018 22:18:41 +0000 Roy 396 at http://default Idea: a data & content modelling UX sprint http://default/2018/idea-data-content-modelling-ux-sprint <div data-history-node-id="389" class="h-entry node node--type-piece node--view-mode-fulltext ds-1col clearfix"> <div class="clearfix text-formatted field field--name-field-sub-title field--type-text field--label-above"> <div class="field__label">Sub title</div> <div class="field__item"><p>Who’s in?</p> </div> </div> <div class="clearfix text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__item"><p>During <a href="https://youtu.be/BechK49LvY4?t=31m14s">this weeks UX meeting</a> we explored what it would mean to redesign the core Field UI. It’s definately in need of an update.</p> <p>Currently all mashed together in a couple of tabs on Field UI:</p> <ul> <li><strong>Data modelling</strong> – Define data types and storage formats for individual fields & their relationships</li> <li><strong>Content modelling</strong> – Compiling individual fields into appropriate content (entity) types and configuring <em>the input form</em> for creating content items</li> <li><strong>Display modelling</strong> – Configuring different ways to <em>display</em> these created content items</li> </ul> <p>One of the first steps towards a new and improved user interface for Field UI would be to unbraid these different types of tasks. Take it apart and put it together again in more user friendly ways.</p> <p>Would be nice to kick this off with some kind of (virtual) <a href="https://www.drupal.org/project/drupal/issues/2944689#comment-12492973">UX design sprint</a>, no?</p> </div> <div class="field field--name-taxonomy-vocabulary-1 field--type-entity-reference field--label-inline"> <div class="field__label">Tags</div> <div class="field__items"> <div class="field__item"><a href="http://default/tag/drupal" hreflang="en">Drupal</a></div> <div class="field__item"><a href="http://default/taxonomy/term/146" hreflang="en">content modeling</a></div> <div class="field__item"><a href="http://default/drupal" hreflang="en">drupalplanet</a></div> </div> </div> <span class="hidden"><a href="https://brid.gy/publish/twitter"></a></span> <div class="node__links"> <ul class="links inline"><li class="comment-forbidden"></li></ul> </div> </div> Thu, 22 Feb 2018 01:19:16 +0000 Roy 389 at http://default Tweets starting from here http://default/2018/tweets-starting-here <div data-history-node-id="386" class="h-entry node node--type-piece node--view-mode-fulltext ds-1col clearfix"> <div class="clearfix text-formatted field field--name-field-sub-title field--type-text field--label-above"> <div class="field__label">Sub title</div> <div class="field__item"><p>Tweet-sized notes posted as content on yoroy.com that get pushed to Twitter via RSS and Zapier.</p> </div> </div> <div class="field field--name-field-image field--type-image field--label-hidden field__item">/sites/default/files/styles/large/public/20180219-notes-ui.png?itok=4rNLWr49</div> <div class="clearfix text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__item"><p>My <a href="http://default/2018/small-steps-towards-posse">previous post</a> inspired Joeri to some <a href="http://jpoesen.com/articles/self-publication-web-owning-controlling-simplifying-and-sharing-my-content">improvements on his site</a>. Nice!</p> <p>I built another step towards <a href="https://indieweb.org/POSSE">POSSE</a> this weekend: tweet-sized notes posted as content on yoroy.com that get pushed to Twitter via RSS and Zapier. Here’s how:</p> <p>Create a new content type “Note”. This one needs to only have a text area. And here we run into Drupal always requiring a title. We can’t create entities without giving it a title. The title itself is always a text field, so not ideal for writing 280 char bits of text. Two contrib modules to work around this:</p> <ul> <li><a href="https://www.drupal.org/project/auto_entitylabel">Auto entity label</a> to define an automatic pattern for the title of these Notes. I set it to use a simple timestamp.</li> <li><a href="https://www.drupal.org/project/exclude_node_title">Exclude node title</a> to actually hide the title field on the Note creation form and on display.</li> </ul> <p>Next I defined a new text format that does <em>not</em> use CKEditor but allows <a> tags and automatically transforms URLs into links. I set this to be the default text format for the text area on the Note using the Better Formats module (sadly currently only available as an old development release). This step is optional, it helps </a><a href="http://default/2018/experiment-removing-friction">remove user interface clutter</a>. This gives me a content creation form with just a single plain text text area, a “published” checkbox and a Save button.</p> <p>I updated the views that list blog content on this site to also include content of type “Note” and configured a <a href="http://www.yoroy.com/notes/rss.xml">Notes RSS feed</a> as well. I use this feed as an input on <a href="https://www.zapier.com">Zapier</a> where the Notes body is extracted and posted as a tweet.</p> </div> <div class="field field--name-taxonomy-vocabulary-1 field--type-entity-reference field--label-inline"> <div class="field__label">Tags</div> <div class="field__items"> <div class="field__item"><a href="http://default/tag/posse" hreflang="en">posse</a></div> <div class="field__item"><a href="http://default/tag/twitter" hreflang="en">twitter</a></div> <div class="field__item"><a href="http://default/tag/drupal" hreflang="en">Drupal</a></div> <div class="field__item"><a href="http://default/taxonomy/term/146" hreflang="en">content modeling</a></div> <div class="field__item"><a href="http://default/drupal" hreflang="en">drupalplanet</a></div> </div> </div> <span class="hidden"><a href="https://brid.gy/publish/twitter"></a></span> <div class="node__links"> <ul class="links inline"><li class="comment-forbidden"></li></ul> </div> </div> Sun, 18 Feb 2018 22:55:07 +0000 Roy 386 at http://default Drupal admin revamp UI research http://default/2018/drupal-admin-revamp-ui-research <div data-history-node-id="376" class="h-entry node node--type-piece node--view-mode-fulltext ds-1col clearfix"> <div class="clearfix text-formatted field field--name-field-sub-title field--type-text field--label-above"> <div class="field__label">Sub title</div> <div class="field__item"><p>Some links that might help sketch the outlines of what a “Drupal admin UI revamp” might involve.</p> </div> </div> <div class="field field--name-field-image field--type-image field--label-hidden field__item">/sites/default/files/styles/large/public/20180214-admin-revamp.png?itok=cQvydZqz</div> <div class="clearfix text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__item"><p>At Drupalcon Vienna there was a lot of interest and preparation work done around modernizing the Drupal administrative interface. I wrote up a <a href="http://default/2017/ux-notes-week-44">high level summary here</a>. As a result <a href="https://www.drupal.org/project/ideas/issues/2902399">this initial issue</a> was posted.</p> <p>My previous post with a <a href="http://default/2018/sneak-preview-new-drupal-ui-content-creation">small concept for the editor UX</a> triggered some <a href="https://twitter.com/wimleers/status/962733069345148928">interesting</a> <a href="https://twitter.com/wimleers/status/963768765728153601">discussion</a> on Twitter.</p> <p>We also discussed this topic during <a href="https://www.youtube.com/watch?v=8PxjE06aoRY">yesterdays UX meeting</a>.</p> <p>As a result, <a href="https://www.drupal.org/u/ckrina">ckrina</a> now proposes <a href="https://www.drupal.org/project/drupal/issues/2944689">an initial round of research</a> to learn and get inspiration from other systems. Mind you, this is the woman that brought us the redesigned status report page and is a member of the team that made the Umami demo that’s now in core. Good things can come from this!</p> <p>Your help in researching these topics is very welcome. <a href="https://www.drupal.org/project/drupal/issues/2944689">Have a look</a>.</p> </div> <div class="field field--name-taxonomy-vocabulary-1 field--type-entity-reference field--label-inline"> <div class="field__label">Tags</div> <div class="field__items"> <div class="field__item"><a href="http://default/tag/ui" hreflang="en">ui</a></div> <div class="field__item"><a href="http://default/taxonomy/term/147" hreflang="en">research</a></div> <div class="field__item"><a href="http://default/tag/drupal" hreflang="en">Drupal</a></div> <div class="field__item"><a href="http://default/drupal" hreflang="en">drupalplanet</a></div> </div> </div> <span class="hidden"><a href="https://brid.gy/publish/twitter"></a></span> <div class="node__links"> <ul class="links inline"><li class="comment-forbidden"></li></ul> </div> </div> Wed, 14 Feb 2018 21:56:58 +0000 Roy 376 at http://default An experiment in removing friction http://default/2018/experiment-removing-friction <div data-history-node-id="370" class="h-entry node node--type-piece node--view-mode-fulltext ds-1col clearfix"> <div class="clearfix text-formatted field field--name-field-sub-title field--type-text field--label-above"> <div class="field__label">Sub title</div> <div class="field__item"><p>A smoother path to posting pictures from phone to site</p> </div> </div> <div class="field field--name-field-image field--type-image field--label-hidden field__item">/sites/default/files/styles/large/public/form-display.png?itok=heIg7oII</div> <div class="clearfix text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__item"><p>An experiment triggered by Dries’s blog post <a href="https://dri.es/to-pesos-or-to-posse">To PESOS or to POSSE?</a> and <a href="https://dri.es/comment/134591#comment-134591">my comment</a> there about the friction in the UI’s for the POSSE approach. The Drupal content creation UI is not as optimized as the ones in native, mobile apps for Twitter, Instagram and the like.</p> <p>I was curious how far I could take things just by stripping down the default Drupal content creation UI, optimizing it for posting an image + caption as an entry to this here blog.</p> <h2>What I did:</h2> <ol> <li>Create a custom, stripped down content creation form</li> <li>Use evil CSS to hide superfluous items</li> </ol> <h3>Custom form mode</h3> <p>The first step was to remove most of the fields that are not required to create a post. The <a href="https://www.drupal.org/project/form_mode_manager">Form Mode Manager module</a> lets you do just that. I set up a “Minimal piece” form mode which hides the fields for inputs like a separate summary, tags, file attachments, url alias, author, date, sticky and the “promoted” checkbox. These are optional (not required) fields that can be left empty or provide sensible defaults (me as the author, use “now” for the publishing date).</p> <p>This alternative form comes with its own URL I can go to to create that new post.</p> <p><img alt="Phone screenshot 1: optional fields removed but still a long form" src="http://default/sites/default/files/piece-ui-1.png" /></p> <h3>Evil CSS</h3> <p>The stripped down form still shows bits and pieces I don’t really need to be reminded of every time I go to post something. Nothing a few display: none; CSS staments couldn’t fix. But, I’m using the default Seven admin theme here, which does not provide a body class to uniquely identify a specific page. I couldn’t add my CSS hacks to that theme’s (or sub theme’s) stylesheet because those would then apply to all admin pages.</p> <p>I use the Firefox browser on my Android phone. <a href="https://addons.mozilla.org/en-US/firefox/addon/stylish/">Stylish</a> to the rescue. We’re definately in proof-of-concept territory now! Stylish lets you define custom styling for all sites, a site or one or more specific URLs. I made one specifically for the URL where the minimal entry form lives to clean up that screen even more: hiding the header, breadcrumbs, form field descriptions, etc.</p> <p><img alt="phone screenshot 2 with CSS hacks applied. The save button is nowvisible in the intial viewport." src="http://default/sites/default/files/piece-ui-2.png" /></p> <h2>And, does it work?</h2> <p>Yes. It’s far from elegant but it’s already a much more focussed and faster experience. I <em>think</em> I already knew but was happily surprised to see that the regular image field does provide access to both the camera (for taking a new picture) and the gallery (for choosing an existing image).</p> <p><img alt="screenshot 3" src="http://default/sites/default/files/piece-ui-3.png" /></p> <h2>What could be next</h2> <p>One thing that makes the Drupal approach feel old school is the required title field. Twitter, Instagram, Tumblr all let you just type something into what basically amounts to a “body text” field. In Drupal it has to at least be just like email: a subject and a message: a title + a body. I can make the body optional but I want my text to go in there. Hiding the title field is not straightforward, I think because it is tightly coupled with the unique ID for that content item. There’s modules that let you hide the title input field but those still automatically generate a (gibberish) title.</p> <p>Still, my focus was on smoothing the path for posting an image to my blog from my phone. That “Browse…” button is old school too, but it does provide access to camera and camera roll. Saving a bookmark for this comes with the option to create a shortcut icon for it on the phone home screen for quick access. Not bad for an hour or two of experimenting without coding :)</p> <p>A couple of years ago swentel created <a href="https://github.com/swentel/Drupoid">Drupoid</a>, an Android app that let you save an image from your phone as a content item on a Drupal site. It would be an interesting exercise to recreate something like it with React, Drupal’s (future) JavaScript toolkit of choice and figure out how smooth and snappy we can make it there.</p> </div> <div class="field field--name-taxonomy-vocabulary-1 field--type-entity-reference field--label-inline"> <div class="field__label">Tags</div> <div class="field__items"> <div class="field__item"><a href="http://default/tag/drupal" hreflang="en">Drupal</a></div> <div class="field__item"><a href="http://default/drupal" hreflang="en">drupalplanet</a></div> <div class="field__item"><a href="http://default/tag/ux" hreflang="en">ux</a></div> <div class="field__item"><a href="http://default/tag/process" hreflang="en">process</a></div> </div> </div> <span class="hidden"><a href="https://brid.gy/publish/twitter"></a></span> <div class="node__links"> <ul class="links inline"><li class="comment-forbidden"></li></ul> </div> </div> Wed, 07 Feb 2018 22:28:07 +0000 Roy 370 at http://default Core strengths http://default/2018/core-strengths <div data-history-node-id="366" class="h-entry node node--type-piece node--view-mode-fulltext ds-1col clearfix"> <div class="clearfix text-formatted field field--name-field-sub-title field--type-text field--label-above"> <div class="field__label">Sub title</div> <div class="field__item"><p>“Plan and model digital products for today and tomorrow.”</p> </div> </div> <div class="field field--name-field-image field--type-image field--label-hidden field__item">/sites/default/files/styles/large/public/20180206-designing-connected-content_0.png?itok=wYpEKMo_</div> <div class="clearfix text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__item"><p>The <a href="http://www.peachpit.com/store/designing-connected-content-plan-and-model-digital-9780134763385">Designing Connected Content book has arrived</a>. “Plan and model digital products for today and tomorrow.” I have yet to dive in but I see Drupal screenshots and lists of field types like entity reference, long text (formatted), boolean, number (float), etc.</p> <p>Today a content strategist collegue asked me about that list builder thing in Drupal. Show items of type x, filtered by y, sorted by x and only show fields 1, 3 and 6 of each item. And is it available for Drupal 8 as well?</p> <p>Yes, that’s 1. Field UI and 2. Views module, which are both part of the Drupal core package.</p> <p>We take Drupal core features for granted that other systems are still struggling with. They are also features people struggle with in Drupal because of hard to use user interfaces. I would love to see research and design work happen around how we can improve Field UI and Views UI.</p> </div> <div class="field field--name-taxonomy-vocabulary-1 field--type-entity-reference field--label-inline"> <div class="field__label">Tags</div> <div class="field__items"> <div class="field__item"><a href="http://default/tag/book" hreflang="en">book</a></div> <div class="field__item"><a href="http://default/taxonomy/term/145" hreflang="en">designing connected content</a></div> <div class="field__item"><a href="http://default/drupal" hreflang="en">drupalplanet</a></div> <div class="field__item"><a href="http://default/taxonomy/term/146" hreflang="en">content modeling</a></div> </div> </div> <span class="hidden"><a href="https://brid.gy/publish/twitter"></a></span> <div class="node__links"> <ul class="links inline"><li class="comment-forbidden"></li></ul> </div> </div> Mon, 05 Feb 2018 23:28:07 +0000 Roy 366 at http://default 17 http://default/2018/17 <div data-history-node-id="348" class="h-entry node node--type-piece node--view-mode-fulltext ds-1col clearfix"> <div class="clearfix text-formatted field field--name-field-sub-title field--type-text field--label-above"> <div class="field__label">Sub title</div> <div class="field__item"><p>years of Drupal</p> </div> </div> <div class="field field--name-field-image field--type-image field--label-hidden field__item">/sites/default/files/styles/large/public/20180115-17.png?itok=5WAijQuS</div> <div class="clearfix text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__item"><p><a href="https://dri.es/happy-seventeenth-birthday-drupal">Drupal is 17 years old today</a>. Quite an achievement for a web software to stay around, let alone stay relevant for such a long time.</p> <p><a href="https://www.drupal.org/u/yoroy">I’ve been around for 12 years</a>. Quite a stretch as well. Getting involved in this open source project as a designer has taught and brought me a lot. I put quite a bit into it as well.</p> <p>I get a lot of benefits from things I learned in Drupal that I can apply in other contexts.</p> <ul> <li>Provide rationale for design decisions. So much typing in issue queue comments!</li> <li>Help people see the other’s point of view and then come to a shared decision.</li> <li>Or agree to disagree, then still make a choice.</li> <li>An appreciation and at least a “gist of things” knowledge of the complexity of software development. It helps with clarifying scope, finding a good place to start, and understanding what is difficult and what can be relatively straight forward.</li> <li>Pragmaticism over purism</li> <li>Edge cases are important</li> <li>There’s a difference between patience and stubborness</li> <li>Accessibility, multilingual, extensibility, modularity are hard but worth it</li> <li>If you can’t imagine why somebody would want do do X, it’s always from a lack of imagination from your part</li> <li>There’s always so much more to do</li> <li>There’s only so much you can do</li> <li>When you start taking things personal it’s probably time to take a break</li> <li>It’s amazing what people can get done when driven by a passion for doing a good thing and doing it well.</li> </ul> <p>… and many returns!</p> </div> <div class="field field--name-taxonomy-vocabulary-1 field--type-entity-reference field--label-inline"> <div class="field__label">Tags</div> <div class="field__items"> <div class="field__item"><a href="http://default/tag/drupal" hreflang="en">Drupal</a></div> <div class="field__item"><a href="http://default/drupal" hreflang="en">drupalplanet</a></div> <div class="field__item"><a href="http://default/tag/open-source" hreflang="en">open source</a></div> </div> </div> <span class="hidden"><a href="https://brid.gy/publish/twitter"></a></span> <div class="node__links"> <ul class="links inline"><li class="comment-forbidden"></li></ul> </div> </div> Mon, 15 Jan 2018 21:34:28 +0000 Roy 348 at http://default One to many or one to one, an example of a Drupal UX design decision http://default/2018/example-Drupal-ux-design-decision <div data-history-node-id="336" class="h-entry node node--type-piece node--view-mode-fulltext ds-1col clearfix"> <div class="clearfix text-formatted field field--name-field-sub-title field--type-text field--label-above"> <div class="field__label">Sub title</div> <div class="field__item"><p>Short recap of an interesting discussion during today’s UX meeting.</p> </div> </div> <div class="field field--name-field-image field--type-image field--label-hidden field__item">/sites/default/files/styles/large/public/media-upload-sketch.png?itok=ar3pBxzP</div> <div class="clearfix text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__item"><p>About inserting media items from within the WYSIWYG editor. These could be different types of media files, like images, video and audio. You could even have different flavours for the same file type. For example with images, you might want to store different information and metadata on product images than on images used in press releases or for the company blog posts.</p> <p>The question was how to provide the starting point(s) for this. Of course the goal would be to make this as transparent as possible, reducing the amount of administrative busy work to the required minimum. But, structured content does not yet create itself automatically, we do have to provide forms that present the required fields to fill out when adding a media item.</p> <h2>We discussed two basic approaches</h2> <p>There are likely more and there’s room for subtle variations inside these two as well.</p> <h3>Option 1: start with a single button to add media</h3> <p><img alt="Workflow sketch of option 1" data-entity-type="" data-entity-uuid="" src="http://default/sites/default/files/media-upload-1_0.png" /></p> <ol> <li>Click 1 generic “add media” button in the WYSIWYG editor that launches a media upload form</li> <li>Upload the media (image, video, audio, …) you want and save</li> <li>Figure out the media file type and present the corresponding form with the required (meta)data fields in a second step</li> <li>Save and return to the editor</li> </ol> <h3>Option 2: choose from multiple buttons to add a specific media item</h3> <p><img alt="Workflow sketch of option 2" data-entity-type="" data-entity-uuid="" src="http://default/sites/default/files/media-upload-2_0.png" /></p> <ol> <li>Find and click the add button for the media you want to create. There would be separate buttons for inserting an image, a video, an audio item</li> <li>Because the type is known we can directly show the form for the required (meta)data.</li> <li>Save and return to the editor.</li> </ol> <p>(Although this list only goes to 3 instead of 4, there is a bit more work for the user to do in step 1: finding the right media button to click)</p> <p>After a bit of back and forth we chose option 2, because:</p> <ul> <li>A one-on-one relationship between WYSIWYG button and media type to create is easier to understand</li> <li>The upload process can be contained within 1 step because the system knows upfront which form to show for the required info.</li> <li>With this one-to-one relationship, per media type permissions can be handled more elegantly (you either have a audio upload button or you don’t)</li> </ul> <p>The trade-offs are:</p> <ul> <li>it’s not super elegant to require the user to do the upfront work of explicitly choosing the type of media to create.</li> <li>With multiple types of media available we’ll have to see how to expose all those different options in the WYSIWYG editor toolbar.</li> </ul> </div> <div class="field field--name-taxonomy-vocabulary-1 field--type-entity-reference field--label-inline"> <div class="field__label">Tags</div> <div class="field__items"> <div class="field__item"><a href="http://default/tag/drupal" hreflang="en">Drupal</a></div> <div class="field__item"><a href="http://default/drupal" hreflang="en">drupalplanet</a></div> </div> </div> <span class="hidden"><a href="https://brid.gy/publish/twitter"></a></span> <div class="node__links"> <ul class="links inline"><li class="comment-forbidden"></li></ul> </div> </div> Tue, 02 Jan 2018 22:57:07 +0000 Roy 336 at http://default