Code Karate: Drupal 7 PRLP: An easier way to resetting Drupal passwords

Planet Drupal - Wed, 17/12/2014 - 13:40
Episode Number: 187

The Password Reset Landing Page or PRLP module is honestly one of the simplest modules you have come across. The sole purpose of the module is to provide the ability for users who request a new password to be able to reset their password on the password reset landing page instead of having to do so on the user edit page.

Tags: DrupalDrupal 7Drupal PlanetEmailSite Administration
Categories: Elsewhere

Keith Packard: MST-monitors

Planet Debian - Wed, 17/12/2014 - 10:36
Multi-Stream Transport 4k Monitors and X

I'm sure you've seen a 4k monitor on a friends desk running Mac OS X or Windows and are all ready to go get one so that you can use it under Linux.

Once you've managed to acquire one, I'm afraid you'll discover that when you plug it in, you're limited to 30Hz refresh rates at the full size, unless you're running a kernel that is version 3.17 or later. And then...

Good Grief! What Is My Computer Doing!

Ok, so now you're running version 3.17 and when X starts up, it's like you're using a gigantic version of Google Cardboard. Two copies of a very tall, but very narrow screen greets you.

Welcome to MST island.

In order to drive these giant new panels at full speed, there isn't enough bandwidth in the display hardware to individually paint each pixel once during each frame. So, like all good hardware engineers, they invented a clever hack.

This clever hack paints the screen in parallel. I'm assuming that they've got two bits of display hardware, each one hooked up to half of the monitor. Now, each paints only half of the pixels, avoiding costly redesign of expensive silicon, at least that's my surmise.

In the olden days, if you did this, you'd end up running two monitor cables to your computer, and potentially even having two video cards. Today, thanks to the magic of Display Port Multi-Stream Transport, we don't need all of that; instead, MST allows us to pack multiple cables-worth of data into a single cable.

I doubt the inventors of MST intended it to be used to split a single LCD panel into multiple "monitors", but hardware engineers are clever folk and are more than capable of abusing standards like this when it serves to save a buck.

Turning Two Back Into One

We've got lots of APIs that expose monitor information in the system, and across which we might be able to wave our magic abstraction wand to fix this:

  1. The KMS API. This is the kernel interface which is used by all graphics stuff, including user-space applications and the frame buffer console. Solve the problem here and it works everywhere automatically.

  2. The libdrm API. This is just the KMS ioctls wrapped in a simple C library. Fixing things here wouldn't make fbcons work, but would at least get all of the window systems working.

  3. Every 2D X driver. (Yeah, we're trying to replace all of these with the one true X driver). Fixing the problem here would mean that all X desktops would work. However, that's a lot of code to hack, so we'll skip this.

  4. The X server RandR code. More plausible than fixing every driver, this also makes X desktops work.

  5. The RandR library. If not in the X server itself, how about over in user space in the RandR protocol library? Well, the problem here is that we've now got two of them (Xlib and xcb), and the xcb one is auto-generated from the protocol descriptions. Not plausible.

  6. The Xinerama code in the X server. Xinerama is how we did multi-monitor stuff before RandR existed. These days, RandR provides Xinerama emulation, but we've been telling people to switch to RandR directly.

  7. Some new API. Awesome. Ok, so if we haven't fixed this in any existing API we control (kernel/libdrm/X.org), then we effectively dump the problem into the laps of the desktop and application developers. Given how long it's taken them to adopt current RandR stuff, providing yet another complication in their lives won't make them very happy.

All Our APIs Suck

Dave Airlie merged MST support into the kernel for version 3.17 in the simplest possible fashion -- pushing the problem out to user space. I was initially vaguely tempted to go poke at it and try to fix things there, but he eventually convinced me that it just wasn't feasible.

It turns out that all of our fancy new modesetting APIs describe the hardware in more detail than any application actually cares about. In particular, we expose a huge array of hardware objects:

  • Subconnectors
  • Connectors
  • Outputs
  • Video modes
  • Crtcs
  • Encoders

Each of these objects exposes intimate details about the underlying hardware -- which of them can work together, and which cannot; what kinds of limits are there on data rates and formats; and pixel-level timing details about blanking periods and refresh rates.

To make things work, some piece of code needs to actually hook things up, and explain to the user why the configuration they want just isn't possible.

The sticking point we reached was that when an MST monitor gets plugged in, it needs two CRTCs to drive it. If one of those is already in use by some other output, there's just no way you can steal it for MST mode.

Another problem -- we expose EDID data and actual video mode timings. Our MST monitor has two EDID blocks, one for each half. They happen to describe how they're related, and how you should configure them, but if we want to hide that from the application, we'll have to pull those EDID blocks apart and construct a new one. The same goes for video modes; we'll have to construct ones for MST mode.

Every single one of our APIs exposes enough of this information to be dangerous.

Every one, except Xinerama. All it talks about is a list of rectangles, each of which represents a logical view into the desktop. Did I mention we've been encouraging people to stop using this? And that some of them listened to us? Foolishly?

Dave's Tiling Property

Dave hacked up the X server to parse the EDID strings and communicate the layout information to clients through an output property. Then he hacked up the gnome code to parse that property and build a RandR configuration that would work.

Then, he changed to RandR Xinerama code to also parse the TILE properties and to fix up the data seen by application from that.

This works well enough to get a desktop running correctly, assuming that desktop uses Xinerama to fetch this data. Alas, gtk has been "fixed" to use RandR if you have RandR version 1.3 or later. No biscuit for us today.

Adding RandR Monitors

RandR doesn't have enough data types yet, so I decided that what we wanted to do was create another one; maybe that would solve this problem.

Ok, so what clients mostly want to know is which bits of the screen are going to be stuck together and should be treated as a single unit. With current RandR, that's some of the information included in a CRTC. You pull the pixel size out of the associated mode, physical size out of the associated outputs and the position from the CRTC itself.

Most of that information is available through Xinerama too; it's just missing physical sizes and any kind of labeling to help the user understand which monitor you're talking about.

The other problem with Xinerama is that it cannot be configured by clients; the existing RandR implementation constructs the Xinerama data directly from the RandR CRTC settings. Dave's Tiling property changes edit that data to reflect the union of associated monitors as a single Xinerama rectangle.

Allowing the Xinerama data to be configured by clients would fix our 4k MST monitor problem as well as solving the longstanding video wall, WiDi and VNC troubles. All of those want to create logical monitor areas within the screen under client control

What I've done is create a new RandR datatype, the "Monitor", which is a rectangular area of the screen which defines a rectangular region of the screen. Each monitor has the following data:

  • Name. This provides some way to identify the Monitor to the user. I'm using X atoms for this as it made a bunch of things easier.

  • Primary boolean. This indicates whether the monitor is to be considered the "primary" monitor, suitable for placing toolbars and menus.

  • Pixel geometry (x, y, width, height). These locate the region within the screen and define the pixel size.

  • Physical geometry (width-in-millimeters, height-in-millimeters). These let the user know how big the pixels will appear in this region.

  • List of outputs. (I think this is the clever bit)

There are three requests to define, delete and list monitors. And that's it.

Now, we want the list of monitors to completely describe the environment, and yet we don't want existing tools to break completely. So, we need some way to automatically construct monitors from the existing RandR state while still letting the user override portions of it as needed to explain virtual or tiled outputs.

So, what I did was to let the client specify a list of outputs for each monitor. All of the CRTCs which aren't associated with an output in any client-defined monitor are then added to the list of monitors reported back to clients. That means that clients need only define monitors for things they understand, and they can leave the other bits alone and the server will do something sensible.

The second tricky bit is that if you specify an empty rectangle at 0,0 for the pixel geometry, then the server will automatically compute the geometry using the list of outputs provided. That means that if any of those outputs get disabled or reconfigured, the Monitor associated with them will appear to change as well.

Current Status

Gtk+ has been switched to use RandR for RandR versions 1.3 or later. Locally, I hacked libXrandr to override the RandR version through an environment variable, set that to 1.2 and Gtk+ happily reverts back to Xinerama and things work fine. I suspect the plan here will be to have it use the new Monitors when present as those provide the same info that it was pulling out of RandR's CRTCs.

KDE appears to still use Xinerama data for this, so it "just works".

Where's the code

As usual, all of the code for this is in a collection of git repositories in my home directory on fd.o:

git://people.freedesktop.org/~keithp/randrproto master git://people.freedesktop.org/~keithp/libXrandr master git://people.freedesktop.org/~keithp/xrandr master git://people.freedesktop.org/~keithp/xserver randr-monitors RandR protocol changes

Here's the new sections added to randrproto.txt

❧❧❧❧❧❧❧❧❧❧❧ 1.5. Introduction to version 1.5 of the extension Version 1.5 adds monitors • A 'Monitor' is a rectangular subset of the screen which represents a coherent collection of pixels presented to the user. • Each Monitor is be associated with a list of outputs (which may be empty). • When clients define monitors, the associated outputs are removed from existing Monitors. If removing the output causes the list for that monitor to become empty, that monitor will be deleted. • For active CRTCs that have no output associated with any client-defined Monitor, one server-defined monitor will automatically be defined of the first Output associated with them. • When defining a monitor, setting the geometry to all zeros will cause that monitor to dynamically track the bounding box of the active outputs associated with them This new object separates the physical configuration of the hardware from the logical subsets the screen that applications should consider as single viewable areas. 1.5.1. Relationship between Monitors and Xinerama Xinerama's information now comes from the Monitors instead of directly from the CRTCs. The Monitor marked as Primary will be listed first. ❧❧❧❧❧❧❧❧❧❧❧ 5.6. Protocol Types added in version 1.5 of the extension MONITORINFO { name: ATOM primary: BOOL automatic: BOOL x: INT16 y: INT16 width: CARD16 height: CARD16 width-in-millimeters: CARD32 height-in-millimeters: CARD32 outputs: LISTofOUTPUT } ❧❧❧❧❧❧❧❧❧❧❧ 7.5. Extension Requests added in version 1.5 of the extension. ┌─── RRGetMonitors window : WINDOW ▶ timestamp: TIMESTAMP monitors: LISTofMONITORINFO └─── Errors: Window Returns the list of Monitors for the screen containing 'window'. 'timestamp' indicates the server time when the list of monitors last changed. ┌─── RRSetMonitor window : WINDOW info: MONITORINFO └─── Errors: Window, Output, Atom, Value Create a new monitor. Any existing Monitor of the same name is deleted. 'name' must be a valid atom or an Atom error results. 'name' must not match the name of any Output on the screen, or a Value error results. If 'info.outputs' is non-empty, and if x, y, width, height are all zero, then the Monitor geometry will be dynamically defined to be the bounding box of the geometry of the active CRTCs associated with them. If 'name' matches an existing Monitor on the screen, the existing one will be deleted as if RRDeleteMonitor were called. For each output in 'info.outputs, each one is removed from all pre-existing Monitors. If removing the output causes the list of outputs for that Monitor to become empty, then that Monitor will be deleted as if RRDeleteMonitor were called. Only one monitor per screen may be primary. If 'info.primary' is true, then the primary value will be set to false on all other monitors on the screen. RRSetMonitor generates a ConfigureNotify event on the root window of the screen. ┌─── RRDeleteMonitor window : WINDOW name: ATOM └─── Errors: Window, Atom, Value Deletes the named Monitor. 'name' must be a valid atom or an Atom error results. 'name' must match the name of a Monitor on the screen, or a Value error results. RRDeleteMonitor generates a ConfigureNotify event on the root window of the screen. ❧❧❧❧❧❧❧❧❧❧❧
Categories: Elsewhere

Code Drop: Upgrade Path: Drupal 6 to Drupal 8 using the Migrate API - Video Demo

Planet Drupal - Wed, 17/12/2014 - 09:57

It's the final week of work before Christmas and Code Drop have sponsored me to work on core for the whole week :). I've been working towards a successful end to end migration from Drupal 6 to Drupal 8 and after debugging 5 core bugs, I finally have a working solution. Checkout the video!

The video shows an out the box Drupal 6 website with a bunch of fields, taxonomies and settings created. Most of the stuff comes across to Drupal 8 but there are still a few issues that need work.

Current Core Bugs

These are the core bugs that are required to get this demo working.

Categories: Elsewhere

Drupal Association News: Meeting Personas: The Drupal Learner

Planet Drupal - Wed, 17/12/2014 - 04:58

In April of 2014, the Japanese Drupal community gathered in Kyoto for their first ever DrupalCamp. Individuals came from other countries to attend the conference, and that was how Keiko Kanda was first introduced to the project.

“I think it might be a bit unusual to get involved the way I did,” Keiko said. “My cousin who lives in Sydney, Australia, married an Australian man. He came to Japan to attend the DrupalCamp in Kyoto and he asked me to accompany him… though some people were presenting in English, he was concerned that he might need a translator.”

“I knew almost nothing about Drupal, even though he had introduced me to what he was working on at that time. But I thought, I would be glad if I could help him out. So I went to the DrupalCamp in Kyoto and it turned out to be a very interesting experience for me.”

“To be perfectly honest with you, when I decided to tag along with my cousin’s husband, Colin Watson, I didn’t realize how fun it would be. I never thought my involvement would last this long,” Keiko said.

Serving an Immediate Need

At the camp, Keiko quickly found herself enlisted as a translator for some of the sessions, and was surprised by the number of foreign attendees at the conference.

“They were all very nice people, and there was much more international attendance than I expected. There were maybe fifteen or twenty international attendees there, and probably ten or fewer were giving presentations in English. Some were able to give parts of their Drupal explanations in Japanese, but they needed a translator to help introduce themselves. So when I arrived at the venue, the camp organizer asked me to translate the introductions from English to Japanese."

That was how Keiko met Chris Luckhardt, a Drupal Master that we will hear from later in the week.

"Chris was one of the speakers... though he had another translator to translate the technical parts of his presentation, when he spoke about himself and other innocent, casual stuff, he needed someone to translate. So that's how I got involved."

Stayed For the Community

"After the Drupal camp in Kyoto, the organizers — Satoshi Kino and Kyoto Ohtagaki — they asked me to do the translation stuff not only at DrupalCamp but at the meet-ups and meetings. According to them, many Japanese Drupal developers can understand when they read English, but when they have something to express it’s very hard to write or speak whole thing in English.

"Kino-san says it’s hard for Japanese developers to catch up with the latest information on Drupal.org,” Keiko continued, “So he and some other Japanese community members are trying to translate some of the useful English information into Japanese, though it takes time.

"I was — still am — studying to be a translator,” Keiko added, "and I thought it would be a good experience for me to help them. But many of Drupal technical terms... for me, they are gibberish. It’s not a language problem, it’s a problem with Drupal technical terms. So even though at DrupalCamp Kyoto they were talking in Japanese, I often couldn’t understand what they were talking about."

"I refer to Drupal.org occasionally when the community members talk about something very complicated— something about Drupal or what they were doing with Drupal… [translation is] hard for me but it’s fun, and in the process I can learn not only Drupal technical terms, but also what is going on in the Drupal world, learn about the problems the Drupal Japanese community has, and so on."

Ways of Mastering Drupal

When it comes to her current work with Drupal, Keiko is more focused on supporting the CMS than using it.

“When Kino-san organizes Drupal meetings, like monthly meetings, he will post the venue and time and date on Facebook in Japanese, and I will translate that into English and spread the word. When Kino-san or Kyoto-san works with Chris [or other English-speaking Drupal users], I facilitate the meeting on Skype. Though they understand English, it is hard for them to speak in English so I translate from Japanese to English for them."

Keiko has plans to help with translating quite a bit of technical material in the future. She has already agreed to assist Chris Luckhardt with translating a Drupal 8 tutorial video into Japanese, and has volunteered to help translate several books as well. In the meantime, she wishes there was a better way to get ahold of other translators like herself.

“I’m not sure because I’ve never thoroughly searched around Drupal.org, but it would be great if there were resources for people who aren't developers,” Keiko said. “I wish there was a better way to find translators, or event organizers— maybe people who don't create websites but instead help to build the project and the community — not only local communities but worldwide communities too. It would be good if there was a place I could go to find people with experience that might be helpful when organizing DrupalCamps, DrupalCons, and Drupal meetups."

Finding a Common Vocabulary

Keiko has a few other pain points, but they mostly revolve around language.

“As a community member, I think so many challenges I have, are… well, first I’m trying to understand what other community members are talking about as accurately, correctly as I can. That’s the first challenge. And I’m trying to learn more Drupal technical terms so that I can understand people's conversations more easily, but oftentimes… it might appear to be an innocent conversation, but behind the ordinary conversation sometimes there are subtexts… you imagine that someone is talking about an innocent topic but when you try to read between the lines there are implications of bigger problems they have.

“For instance, many people in the Japanese Drupal community are spending incredible amounts of time trying to understand what’s written on Drupal.org, because it’s written in English. It’s my impression — and it might be wrong — that the Japanese Drupal community falls into one of two categories: either they catch up with latest information using Drupal.org frequently, or they are totally left behind, staying within only Japanese-written world, because it is so difficult to read English.

"It’s my impression and opinion too that the Japanese community members are trying to attract more people who maybe did not have anything to do with Drupal, but are good with English. For me, I would be happy to find someone who speaks English and Japanese better than I do... the workload can be overwhelming sometimes, but if I could share the task for someone, that would be very helpful for me. "

Personal blog tags: drupal.org user researchpersona interviews
Categories: Elsewhere

Blink Reaction: Creatin Custom Search Pages with Search404 and Apache Solr Search

Planet Drupal - Wed, 17/12/2014 - 02:56

Imagine somewhere deep in your site that you have a page with the alias:


Now, let’s imagine this page is not a link in your site’s menu. Your visitor remembers that they have seen this page on your site and starts typing in the address line:


Categories: Elsewhere

Gregor Herrmann: GDAC 2014/16

Planet Debian - Tue, 16/12/2014 - 23:46

today I met with a young friend (attending the final year of technical high school) for coffee. he's exploring free software since one or two years, & he's running debian jessie on his laptop since some time. it's really amazing to see how exciting this travel into the free software cosmos is for him; & it's good to see that linux & debian are not only appealing to greybeards like me :)

this posting is part of GDAC (gregoa's debian advent calendar), a project to show the bright side of debian & why it's fun for me to contribute.

Categories: Elsewhere

Drupal Watchdog: The Angry Themer

Planet Drupal - Tue, 16/12/2014 - 16:38

Sometimes CSS feels like it stands for “Complete Sh*t Show.”

Lucky for us, there’s a tool to help get our CSS under control. This tool is Sass; Simply Awesome Style Sheets. Well, actually: Syntactically Awesome Stylesheets.

Sass is a preprocessor for CSS. Just like PHP & Drupal create Drupal’s Very Rich and Enhanced Markup™, Sass does the same for CSS, but properly, by taking your .scss (sass) files and turning them into super .css files, with variables, functions, and other fancy powers.

.sass files -> [magic thingie] -> .css

Install Sass

Installing Sass on your machine is straightforward, if you’re not afraid of the terminal. Simply do a "sudo gem install sass".


You’re ready to get Sassy.

But if the terminal gives you agita, you can install Sass with a GUI, a complete list can be found on sass-lang.com/install or LiveReload.com.

Here’s a video showing how this process works: http://wdog.it/4/1/video

Setup your Drupal theme

In order to make Sass work in your theme, you need:

  • a Ruby config.rb file, for configuration;
  • a Sass folder for all your Sass files;
  • a CSS folder where all your compiled CSS files will be created.
Say Good-bye to Your CSS Files

First, accept that once you convert your CSS files to Sass, you will never again have to look into the CSS folder.

Your days of fiddling directly with CSS are over, and everything is gonna be OK.

Categories: Elsewhere

3C Web Services: Creating a Faceted Search View in Drupal

Planet Drupal - Tue, 16/12/2014 - 15:43
Faceted Searching is a method that allows a user to apply multiple filters of varying dimensions to a list of items on your website. In this tutorial we'll show you how create basic search facets in Drupal using the Search API module.
Categories: Elsewhere

Digett: Which Base Theme We Use (and Why)

Planet Drupal - Tue, 16/12/2014 - 15:34

There are so many website themes, frameworks and opinions out there ... how do you decide which is the best foundation for your next project?

read more

Categories: Elsewhere

Drupalize.Me: Embed YouTube Videos with Media and Media Internet Sources

Planet Drupal - Tue, 16/12/2014 - 15:30

YouTube is a great service for storing and managing your videos. While this is handy, many people want to be able to display their videos within their own website as well. In this tutorial we'll see how the Media, Media Internet Sources, and Media: YouTube modules can help give you a nice, seamless way to integrate YouTube videos into your site, and give really nice control over how those videos look, along with some built-in media management tools.

Categories: Elsewhere

Paul Booker: Hiding view records based on the value of a new field

Planet Drupal - Tue, 16/12/2014 - 13:36
function mymodule_views_query_alter(&$view, &$query) { global $user; if (($view->name === 'coaches') || ($view->name === 'trainers')) { if (!in_array('trainer', $user->roles) && !in_array('admin', $user->roles)) { $view->query->fields['field_data_field_profile_hidden'] = array( 'field' => 'field_profile_hidden_value', 'table' => 'field_data_field_profile_hidden', 'alias' => 'field_data_field_profile_hidden' ); $join = new views_join; $join->table ='field_data_field_profile_hidden'; $join->left_table = 'users'; $join->left_field = 'uid'; $join->field = 'entity_id'; $join->extra = array( 0 => array('field' => 'entity_type', 'value' => 'user'), ); $join->type = "LEFT"; $join->extra_type = 'AND'; $join->adjusted = 'TRUE'; // add the join $view->query->table_queue['field_data_field_profile_hidden'] = array( 'table' => 'field_data_field_profile_hidden', 'num' => 1, 'alias' => 'field_data_field_profile_hidden', 'join' => $join, 'relationship' => 'users' ); $view->query->tables['node']['field_data_field_profile_hidden'] = array( 'count' => 1, 'alias' => 'field_data_field_profile_hidden' ); $view->query->where[2]['conditions'][] = array( 'field' => 'field_profile_hidden_value', 'value' => 0, 'operator' => '=' ); } } } /** * Implements hook_update_N(). */ function mymodule_update_7001(&$sandbox) { $uids = db_select('users', 'u') ->fields('u', array('uid')) ->execute() ->fetchCol(); foreach ($uids as $uid) { db_insert('field_data_field_profile_hidden') ->fields(array( 'entity_type' => 'user', 'bundle' => 'user', 'entity_id' => $uid, 'revision_id' => $uid, 'language' => 'und', 'delta' => 0, 'field_profile_hidden_value' => 0, )) ->execute(); } } Tags:
Categories: Elsewhere

Raphael Geissert: Editing Debian online with sources.debian.net

Planet Debian - Tue, 16/12/2014 - 09:00
How cool would it be to fix that one bug you just found without having to download a source package? and without leaving your browser?

Inspired by github's online code editing, during Debconf 14 I worked on integrating an online editor on debsources (the software behind sources.debian.net). Long story short: it is available today, for users of chromium (or anything supporting chrome extensions).

After installing the editor for sources.debian.net extension, go straight to sources.debian.net and enjoy!

Go from simple debsources:

To debsources on steroids:

All in all, it brings:
  • Online editing of all of Debian
  • In-browser patch generation, available for download
  • Downloading the modified file
  • Sending the patch to the BTS
  • Syntax highlighting for over 120 file formats!
  • More hidden gems from Ace editor that can be integrated thanks to patches from you

Clone it or fork it:
git clone https://github.com/rgeissert/ace-sourced.n.git

For example, head to apt's source code, find a typo and correct it online: open apt.cc, click on edit, make the changes, click on email patch. Yes! it can generate a mail template for sending the patch to the BTS: just add a nice message and your patch is ready to be sent.

Didn't find any typo to fix? how sad, head to codesearch and search Debian for a spelling mistake, click on any result, edit, correct, email! you will have contributed to Debian in less than 5 minutes without leaving your browser.

The editor was meant to be integrated into debsources itself, without the need of a browser extension. This is expected to be done when the requirements imposed by debsources maintainers are sorted out.

Kudos to Harlan Lieberman who helped debug some performance issues in the early implementations of the integration and for working on the packaging of the Ace editor.
Categories: Elsewhere

Code Drop: Thoughts on taking the Acquia Drupal certification exam

Planet Drupal - Tue, 16/12/2014 - 02:52

Earlier this week I had the opportunity to be the first developer at Code Drop to sit an exam to become an "Acquia Certified Developer". I managed to clear the exam with the following results:

  • Section 1 - Fundamental Web Development Concepts: 87%
  • Section 2 - Site Building: 87%
  • Section 3 - Front end development (Theming) : 92%
  • Section 4 - Back end development (Coding) : 81%

Like many others who have done the exam, I will briefly run over my experience and thoughts on the whole process.

Categories: Elsewhere

Gustavo Noronha Silva: Web Engines Hackfest 2014

Planet Debian - Tue, 16/12/2014 - 00:20

For the 6th year in a row, Igalia has organized a hackfest focused on web engines. The 5 years before this one were actually focused on the GTK+ port of WebKit, but the number of web engines that matter to us as Free Software developers and consultancies has grown, and so has the scope of the hackfest.

It was a very productive and exciting event. It has already been covered by Manuel RegoPhilippe Normand, Sebastian Dröge and Andy Wingo! I am sure more blog posts will pop up. We had Martin Robinson telling us about the new Servo engine that Mozilla has been developing as a proof of concept for both Rust as a language for building big, complex products and for doing layout in parallel. Andy gave us a very good summary of where JS engines are in terms of performance and features. We had talks about CSS grid layouts, TyGL – a GL-powered implementation of the 2D painting backend in WebKit, the new Wayland port, announced by Zan Dobersek, and a lot more.

With help from my colleague ChangSeok OH, I presented a description of how a team at Collabora led by Marco Barisione made the combination of WebKitGTK+ and GNOME’s web browser a pretty good experience for the Raspberry Pi. It took a not so small amount of both pragmatic limitations and hacks to get to a multi-tab browser that can play youtube videos and be quite responsive, but we were very happy with how well WebKitGTK+ worked as a base for that.

One of my main goals for the hackfest was to help drive features that were lingering in the bug tracker for WebKitGTK+. I picked up a patch that had gone through a number of iterations and rewrites: the HTML5 notifications support, and with help from Carlos Garcia, managed to finish it and land it at the last day of the hackfest! It provides new signals that can be used to authorize notifications, show and close them.

To make notifications work in the best case scenario, the only thing that the API user needs to do is handle the permission request, since we provide a default implementation for the show and close signals that uses libnotify if it is available when building WebKitGTK+. Originally our intention was to use GNotification for the default implementation of those signals in WebKitGTK+, but it turned out to be a pain to use for our purposes.

GNotification is tied to GApplication. This allows for some interesting features, like notifications being persistent and able to reactivate the application, but those make no sense in our current use case, although that may change once service workers become a thing. It can also be a bit problematic given we are a library and thus have no GApplication of our own. That was easily overcome by using the default GApplication of the process for notifications, though.

The show stopper for us using GNotification was the way GNOME Shell currently deals with notifications sent using this mechanism. It will look for a .desktop file named after the application ID used to initialize the GApplication instance and reject the notification if it cannot find that. Besides making this a pain to test – our test browser would need a .desktop file to be installed, that would not work for our main API user! The application ID used for all Web instances is org.gnome.Epiphany at the moment, and that is not the same as any of the desktop files used either by the main browser or by the web apps created with it.

For the future we will probably move Epiphany towards this new era, and all users of the WebKitGTK+ API as well, but the strictness of GNOME Shell would hurt the usefulness of our default implementation right now, so we decided to stick to libnotify for the time being.

Other than that, I managed to review a bunch of patches during the hackfest, and took part in many interesting discussions regarding the next steps for GNOME Web and the GTK+ and Wayland ports of WebKit, such as the potential introduction of a threaded compositor, which is pretty exciting. We also tried to have Bastien Nocera as a guest participant for one of our sessions, but it turns out that requires more than a notebook on top of a bench hooked up to   a TV to work well. We could think of something next time ;D.

I’d like to thank Igalia for organizing and sponsoring the event, Collabora for sponsoring and sending ChangSeok and myself over to Spain from far away Brazil and South Korea, and Adobe for also sponsoring the event! Hope to see you all next year!

Web Engines Hackfest 2014 sponsors: Adobe, Collabora and Igalia

Categories: Elsewhere

Gregor Herrmann: GDAC 2014/15

Planet Debian - Mon, 15/12/2014 - 22:58

nothing exciting today in my debian life. just yet another nice example of collaboration around an RC bug where the bug submitter, the maintainer & me investigated via the BTS, & the maintainer also got support on IRC from others. – now we just need someone to come up with an actual fix for the problem :)

this posting is part of GDAC (gregoa's debian advent calendar), a project to show the bright side of debian & why it's fun for me to contribute.

Categories: Elsewhere

Tag1 Consulting: yumrepos Puppet Module

Planet Drupal - Mon, 15/12/2014 - 21:12

Earlier this year we undertook a project to upgrade a client's infrastructure to all new servers including a migration from old Puppet scripts which were starting to show their age after many years of server and service changes. During this process, we created a new set of Puppet scripts using Hiera to separate configuration data from modules.

read more

Categories: Elsewhere

Holger Levsen: 20121214-not-everybody-is-equal

Planet Debian - Mon, 15/12/2014 - 20:25
We ain't equal in Debian neither and wishful thinking won't help.

"White people think calling them white is racist." - "White people think calling them racist is racist."

(Thanks to and via 2damnfeisty and blackgirlsparadise!)

Posted here as food for thought. What else is invisible for whom? Or hardly visible or distorted or whatever shade of (in)visible... - and how can we know about things we cannot (yet) see...

Categories: Elsewhere

Drupal Association News: Meeting Personas: The Drupal Newcomer

Planet Drupal - Mon, 15/12/2014 - 20:01

 This post is part of an ongoing series detailing the new personas that have been drawn up as part of our Drupal.org user research.

Bronwen Buswell is a newcomer to Drupal. Based out of Colorado Springs, Colorado, Bronwen works as a Conference and Communications Coordinator at a nonprofit called PEAK Parent Center, which is dedicated to supporting the families of children with disabilities. While Bronwen’s role isn’t technical, she needs to use her company’s website as part of getting her work done.

“We’re federally designated by the US Department of Education, so we try to be a total one-stop shop information and referral center,” Bronwen said. “Families can call us about any situation related to their child, and we will either refer them to the right agency or provide what they need. We’re focused on helping families navigate the education and special education systems, and we serve families with children ages birth through 26, with all sorts of disabilities, including autism, down syndrome, learning disabilities, and so on."

Keeping Up With Technology

In the past few years, PEAK Parent Center’s website became very outdated, and this was a problem. Bronwen’s clients were very dependent on being able to receive assistance over the phone, as many of the resources that the center provides are not readily available online. When updates needed to be made, Bronwen and her company were forced to rely on their tech vendors to make changes to the website, as they were working with a custom solution rather than a CMS.

“Our website was pre-cutting edge, made by local vendors, all in HTML code and SQL database. We had excellent tech vendors who helped us create what we needed, and this was before the CMS options came along so it was really good at first. However, in the past 5 to 6 years, it has gotten really archaic, and we’re super reliant upon our vendors for updating our website. What’s simple in a CMS is complex for us,” Bronwen said.

After doing lots of research and working with the federal government to find the best solution for PEAK Parent Center and other centers like it, Bronwen and her colleagues decided to explore using Drupal to create a site template that could be deployed for PEAK Parent Center  and for other similar centers that it supports across the country.

“We're the technical assistance center for parent centers like ours in a 12 state region,” said Bronwen. “When [Drupal Association Executive Director] Holly Ross was at NTEN we started going to their conferences, which led us to launch a tech leadership initiative where we supported participating parent centers across the nation. As part of that, we got connected with great consultants and thinkers in tech, and we were asked by the US Department of Education to participate in the creation of website templates in 2 content management systems — Wordpress and Drupal — that could be used in other parent centers in the future."

Getting Experienced Assistance

With help from Aaron Pava and Nikki Pava at Alegria Partners, the staff at PEAK Parent Center has been learning to use their new Drupal website. Aaron has advised Bronwen and her colleagues every step of the way, from proposing solutions in the discovery process to walking Bronwen and her coworkers through specific tasks.

Occasionally, Bronwen encounters small problems due to updates or little glitches with distributions, which is why Aaron has encouraged her to get involved and do some training on Drupal. Unfortunately, most of Bronwen’s time is spent trying to get the website ready to launch, as she’s under pressure from the federal government and her board of directors to deploy the new site. Though Bronwen isn’t working on the technical side of the website, she’s busy populating it with content and making sure that it will be a useful tool for her clients.

“What I haven’t done is specific Drupal training,” said Bronwen. “I know about Lynda and Build A Module, but I’ve only had time to do sessions one-on-one with Aaron, for example, ‘Here’s how to upload content in this template.’

"I have learned a lot on Drupal.org, but it’s been primarily through Aaron sending me a link— for example, he’ll send me links about Red Hen since we’re exploring our CRM options— but I haven’t surfed around it much,” Bronwen added.

Areas For Improvement

Bronwen wishes there was a recommended Drupal 101 section on Drupal.org, something that would help content editors like herself learn to use the CMS better, but for now, she is limited to relying on more educated ambassadors for Drupal to point her in the right direction.

“It’s delicate to recommend vendors,” said Bronwen, "but it seems that the community is really powerful, and is certainly one of the most unique aspects that sets Drupal aside from other CMS options. Even a few vendors recommended by the community, or a recommend Drupal 101 lesson where you can go through it, go off and work in Drupal, and come back and get Drupal 201 would be really valuable for me.

“I know that there are local Drupal meet-ups that happen all over the country” Bronwen added. “[One group we talked with] told us that nonprofits can go to these events and say “I need this or that,” and some hardcore Drupal techie will take the work on pro bono. That was another factor that helped draw us to using Drupal — the availability of the community. It would be useful if there was more information on how to tap into those meetups, perhaps, when they’re happening."

Bronwen knows that the Drupal community is really powerful, and considers it one of the most unique aspects that sets Drupal aside from other CMS options. She is excited by the availability of the Drupal community, and is looking forward to interacting with it and working with them as she continues to run and improve PEAK Parent Center’s website.

Personal blog tags: drupal.org user researchpersona interviews
Categories: Elsewhere

Midwestern Mac, LLC: Highly-Available PHP infrastructure with Ansible

Planet Drupal - Mon, 15/12/2014 - 17:03

I just posted a large excerpt from Ansible for DevOps over on the Server Check.in blog: Highly-Available Infrastructure Provisioning and Configuration with Ansible. In it, I describe a simple set of playbooks that configures a highly-available infrastructure primarily for PHP-based websites and web applications, using Varnish, Apache, Memcached, and MySQL, each configured in a way optimal for high-traffic and highly-available sites.

Here's a diagram of the ultimate infrastructure being built:

Categories: Elsewhere


Subscribe to jfhovinne aggregator - Elsewhere