Elsewhere

Drupal Association News: Honoring DrupalCon Volunteers

Planet Drupal - Mon, 11/04/2016 - 18:22

Hello, Drupal world! We are thrilled to be able to give you an inside peek at what goes into planning DrupalCons. Throughout 2016, we’ll share a series of posts, and a few webcasts, to show some behind-the-scenes aspects of DrupalCon. In honor of National Volunteer Week, this month's DrupalCon post highlights how an army of amazing, dedicated volunteers is behind every DrupalCon.

If you’ve ever attended a DrupalCon, you probably remember the Drupal Association standing onstage and saying that this event ‘couldn’t happen without our amazing volunteers.’ We normally have a round of applause for the volunteers at each particular Con, but that still doesn't fully convey how much of the Con is lead by some fantastic community members. In this blog we want to help quantify how much time and energy these volunteers give to help create a memorable and enriching Con for you.

Before you even know there is a Con happening in any city, volunteers are already on board helping to make it happen. Once the city has been decided and finalized by the Drupal Association, we loop in a small group of community leaders in the secret city to come together and help us make a splash when we announce the next year’s Con location.

Besfore the Con has even been announced, these 4-6 volunteers work to put together a document that guides our designer in the logo creation and branding of the still-secret event. The community gives input during the design process of the logo, sticker and splash page that goes live after the announcement. The announcement is another way that the volunteers make an impact by dreaming up an awesome way to tell you about how awesome their city is and why you should come to DrupalCon the next year.

Once we have publically announced a location, the Drupal Association reaches out to more volunteers to build the Program Team. This team includes various groups of volunteers who make a huge impact on your DrupalCon experience. Here is a quick rundown of how committed these volunteers are and how their contribution shapes the Con.

  • Track Team - with two to three volunteers per track, this is the team that sets the tone of what content you will be hearing in sessions. They begin thinking about this at least 5 months before the Con and meet weekly to move the session content forward. Between writing track descriptions, reaching out to speakers to curate sessions, reading every single session submission, helping build the schedule and later acting as coaches for their speakers, this team signs up for a long and heavy time commitment and the fruits of their labor results in amazing sessions. In New Orleans we have 130 hand-selected sessions thanks to this dedicated team. Additional Selection Committees - we also call on the help and expertise of various other community volunteers in selecting more things related to DrupalCon. For the incredible training course proposals that we get, we have a team dedicated to selecting the 15 that should be offered. We also have a team tasked with the duty of reading each grant and scholarship application and making the difficult decisions about who is given an award to come to the DrupalCon.
  • Summit Leads - each Summit is led by a small team who works to develop a full day of engaging and educational content that will allow attendees to get the most out of the Con by adding this Monday ticket event to their trip. Our Summit Leads begin working 4 months before the Con to line-up panel guest speakers, organize multiple round table topic leaders, create the flow of the day as well as emcee their event. If you’ve ever attended a Summit, we hope that you appreciate the time and energy that these Leads have committed to making your day great.
  • Sprint Leads - this team of leads works year-round to help create sprints that are welcoming and engaging and DrupalCons are no different. Beginning planning a few months in advance of the Con, this team takes on 9 days of sprint coordination (all those extended sprints on the weekends before and after the Con, Monday Contribution Sprints, Sprint Lounge during the week and Friday Sprint Day). They also have a booth in the Exhibit Hall where you can learn about sprinting, contributing and how you can get involved. They also work to lead an amazing group of additional volunteer Sprint Mentors who help make these sprints a learning experience for many newer contributors.
  • Sprint Mentors - this group of sometimes up to 75 is mainly recognizable in their bright colored Con shirts on Fridays - helping to make sure new contributors are set-up to learn how to give back to Drupal. These mentors come from around the world and attend a training on being mentors to hundreds of DrupalCon attendees and truly dedicate their time and energy to the community with this role.
  • Community Leaders - after helping plan the big reveal of their city, the community leaders stay throughout the months before the Con to make sure that the Con gets an injection of the host city into the fun-filled week. If you’ve ever found a blog about local restaurants or learned about a popular app in a new country, the local community leads are more than likely to thank as the work to provide helpful content that makes your time in their city the best ever.
  • Prenote Performers - now an institution at DrupalCon, the Prenote has become a staple of Con content. The known suspects as well as local participants put in countless hours of time to craft a script, original songs and multiple antics that share the story of Drupal while making us laugh -- kicking the Con off right.

Apart from the Program Team, there are still many more volunteers who give time and knowledge to making DrupalCon special. Below are some of the many ways that volunteers are involved with shaping the Con:

  • Speakers - although the speakers get a free ticket to the Con, we consider them volunteers because in choosing to speak at DrupalCon they are providing us with an incredible session that takes a lot of time and energy to create. Many hours go into a single presentation before you hear it at the Con, and with over 150 speakers at DrupalCon New Orleans, we are thankful to have so many talented volunteers sharing their experience with our Drupalistas.
  • On-site Volunteers - the days before the Con involve over 50 volunteers who help us prepare for the barrage of Drupalers who arrive to enjoy a week of all things Drupal. From organizing over 3,000 t-shirts to stuffing that tote bag you get with multiple sponsor goodies, this power-team of volunteers are like a machine and deserve a huge round of applause for hard work. Once those tasks are complete, we have many volunteers who also help at the registration desk, counting session room attendance, and checking in with sponsors. There is literally of sea of volunteers at all times making sure DrupalCon is going smoothly.
  • Recurring Con Volunteers - some volunteers take on an element of the Con and just own it. Group photos and photography shots come from an amazing photography team composed of new volunteer photographers and some that have been taking photos at Drupal events for years. Our social media team is on point year-round to make sure that you’re always getting the most up-to-date info about the next Con. These volunteers have become almost permanent extensions of our Drupal Association team. We're grateful to work with our recurring volunteers because not only do they rock at what they do, but gosh, they're fun!
  • The Community Working Group - with the Code of Conduct in effect at every Con, this group might go unnoticed but plays a huge role in making DrupalCon welcoming and inclusive for all attendees. Available to mediate and work through incidents, this group is an important part of making a Con a Con.

As you can see, when we say this couldn’t happen without the volunteers, we MEAN IT.

I consider myself very lucky to primarily work with volunteers around the world who are so passionate and invested in creating a DrupalCon for you. I spend a lot of time on Zoom calls and in Slack channels with many of these volunteers. During working hours, on weekends, and at the event itself, these volunteers put a lot of themselves into these Cons and I sometimes step back and appreciate how incredible the Drupal community is.

I do my best to thank these volunteers often, reminding myself that each and everyone of them has a life and other priorities and that they are choosing to make DrupalCon important, but as it is National Volunteer Week, I would like to take a moment to list the DrupalCon New Orleans volunteers below and specifically say THANK YOU for all of your hard work - it is valued and appreciated not only by the team at the Drupal Association but by the community as well.

Program Volunteers

Pamela Barone, Donna Benjamin, Pedro Cambra, Michael Cannon, Ian Carrico, Karyn Cassio, Stuart Clark, Matt Davis, Jess Dearie, Shawn DeArmond, Jeff Diecks, Mauricio Dinarte, Robert Douglass, Larry Garfield, Rob Gill, Becca Goodman, Paul Grotevant, Adam Hill, Lucas Hedding, David Hwang, Paul Johnson, Sherri Johnson, Adam Juran, Alex Laughnan, Dan Linn, Greg Lund-Chaix, Alina Mackenzie, Kathryn McClintock, Jeffrey McGuire, Ashok Modi, Diana Montalion, Mike Nielson, Steve Parks, Jon Peck, Joel Pittet, Koen Platteeuw, Tim Plunkett, Ryan Price, Justin Rhodes, Jason Savino, Michael Schmid, Sabrina Schmidt, Eric Schmidt, Eric Sembrat, Seth Silesky, Lauren Smith, Nikki Stevens, Joe Stewart, Ashleigh Thevenet, Cathy Theys, Campbell Vertesi, Shannon Vettes, Jason Want, Heather White, Jason Yee

Sprint Mentors

Alina Mackenzie (alimac), Adam Smeets (asmeets), Ravindra Singh (RavindraSingh), Cathy Theys (YesCT), Gobinath Mallaiyan (gobinathm), David Valdez (gnuget), Aman Kanoria (amankanoria), Joël Pittet (joelpittet), John Cook (John Cook), Chris McCafferty (cilefen), David Hernandez (davidhernandez), manmohan bisht (manmohandream), Mike Keran (mikeker), Ashwini Kumar (ashwinikumar), Eleanor Wai (eleanor_wai), Mauricio Dinarte (dinarcon), Prabhu Narayanpethkar (prabhurajn654), Maninder Singh (Maninders), Maninder Singh (Maninders), Lucas Hedding (heddn), Hitesh Jain (hitesh-jain), Steve Purkiss (stevepurkiss), Anto Jose (antojose), Piyuesh Kumar (piyuesh23), Saket Kumar (saki007ster), Manauwar Alam (manauwarsheikh), Les Lim (Les Lim), Ajit Shinde (AjitS), Marc Drummond (mdrummond), Nikki Stevens (drnikki), Neetu Morwani (neetu morwani), Prashant Goel (prashantgoel), Tim Erickson (stpaultim), Daniel Carvalhinho (dscl), Lalit Nirban (lalit3007), Joaz Rivera (m3chas), Junaid Masoodi (junaidmasoodi), Christian Manalansan (cmanalansan), Blake Hall (blakehall), Abhishek Anand (abhishek-anand), Amber Matz (Amber Himes Matz), Darryl Norris (darol100) David Needham (davidneedham), Kristin Bradham (kristink2), Diana VanRooy (thenyouDi), Marc Isaacson (vegantriathlete), Carlos Ospina (camoa), Patrick Storey (Patrick Storey), William Hetherington (willwh), Ravish Gupta (ravyg), Valery Lourie (valthebald) Seth Silesky (sethsilesky), Stuart Clark (Deciphered), Barbara Errickson (barbarae), Cristina Chumillas (ckrina)

Speakers

Hussain Abbas, Mary Albert, John Albin Wilkins, Kelly Albrecht, Greg Anderson, Geoff Appleby, Ronald Ashri, Ryan Aslett, Morten Birch, Kristina Bjoran, Abe Brewster, Jesse Browne, Amitai Burstein, Angie Byron, Ian Carrico, Leigh Carver, Karyn Cassio, Marji Cermak, Matt Cheney, Gus Childs, Chaz Chumley, Courtney Clark, Casey Cobb, Ashish Dalvi, Matt Davis, Aimee Degnan, George Demet, Alex Dergachev, Suzanne Dergacheva, Nikhil Deshpande, Frederic Dewinne, Jeff Diecks, Daniel Dreier, Marc Drummond, Jeff Eaton, Stephanie El-Hajj, Adam Englander, Brad Erickson, Lauri Eskola, Edward Faulkner, Mark Ferree, John Ferris, Jessi Fischer, Fabian Franz, Pieter Frenssen, Larry Garfield, Yuriy Gerasimov, Aditya Ghan, Mike Gifford, Matt Glaman, Micah Godbolt, Drew Gorton, Nicolas Grekas, Rudy Grigar, Jody Hamilton, Mike Herchel, David Hernandez, Michael Hess, Jason Hibbets, Amber Himes Matz, Mikkel Høgh, Gábor Hojtsy, Chris Hoult, David Hwang, Marcus Iannozzi, Allie Jones, Adam Juran, Adam Kapp, John Kary, John Kennedy, Greg Knaddison, Randall Knutson, Josh Koenig, Charles Kreitzberg, Michelle Krejci, Kat Kuhl, Ashwini Kumar, Saket Kumar, Piyuesh Kumar, Wim Leers, Brian Lewis, Les Lim, Dan Linn, Clay Marshall, Tom Martin, Sophie Matson, Jeffrey McGuire, Catharine McNally, Oscar Merida, Steven Merrill, Brett Meyer, Michael Miles, Josh Miller, Tim Millwood, Igor Minar, Gaurav Mishra, Jesus Molivas, John Money, Jess Mybro, David Needham, Narayan Newton, Dani Nordin, Darryl Norris, Ron Northcutt, Dick Olsson, John Ouellet, Jason Pamentalm, Jon Peck, Steve Persch, Piyush Poddar, Kristen Pol, Fabien Potencier, Alex Pott, Taco Potze, Ellie Power, Luke Probasco, Ilan Rabinovitch, Scott Reeves, Dave Reid, Adrian Rollett, Chris Rooney, Chris Russo, Susan Rust, Terrence Ryan, Peter Sawczynec, Dave Sawyer, Michael Schmid, Roy Scholton, Michael Sherron, Joe Shindelar, Sebastian Siemssen, Michael Silverman, Preston So, David Spira, Anne Stefanyk, Nikki Stevens, Karen Stevenson, Nick Stielau, Matt Stratton, David Strauss, Ryan Szrama, Patrick Teglia, Chris Teitzel, Dave Terry, Kyle Theobald, Ashleigh Thevenet, Bjorn Thomson, Travis Tidwell, Matthew Tift, Howard Tizzo, Vanessa Turke, Tatiana Ugrimova, Chris Urban, Kristof Van Tomme, Jeff Walpole, Ryan Weaver, Daniel Wehner, Moshe Weitzman, Lynn Winter, Peter Wolanin, Chris Wright, Bojan Živanović, Helena Zubkow

Image credit goes to the following photographers:
DrupalCon Asia Volunteer Selfie : Michael Cannon
Education Summit Meeting : Paul Johnson
Zoom Screenshot Photo : David Hwang
DrupalCon Los Angeles Sprint Mentors: Jared Smith

Categories: Elsewhere

Drupal @ Penn State: Lower the Drupal 8 development barrier to entry by using the Drupal Console to generate boiler plate code.

Planet Drupal - Mon, 11/04/2016 - 18:06

I admit that I haven't really looked at Drupal 8 too much yet. There is a variety of reasons why I haven't and I surely don't want this to turn into a forum listing the pros and cons of D8. We can leave that for another post. 

Categories: Elsewhere

The Sego Blog: Drupal 8 Module Development Resources

Planet Drupal - Mon, 11/04/2016 - 15:54
04/11/2016Drupal 8 Module Development Resources

This past weekend we were honored to co-host the Drupal Global Training day at DoSomething.org in NYC. This training was focused on Drupal 8 module development. We have been training on the ins and out of Drupal 8 module development for over a year now but this time we changed the format, considerably. I think for the better! 

Using the Role Notices module, developed by Ted Bowman, we put together an exercise that walks you through building the functionality it exposes step by step. We also built a list of resources chock full of links pertaining to various tools and docs for getting your chops up with D8 development. 

All this work is open source and available at this link. I am really hoping that this content can serve as a valuable resource for folks looking to learn the proper flow of developing a Drupal 8 module.

There are so many exciting concepts and programming patterns to explore in D8, we hope you continue to join us during this jounrney. 

Mega thanks to everyone that helped make this happen! 

Categories: Elsewhere

Acquia Developer Center Blog: The Faichi Story: From Unknown Drupal Shop to Top 10 in 6 months

Planet Drupal - Mon, 11/04/2016 - 15:21

It all started at DrupalCon Barcelona, when Shailesh Gogate, VP at Faichi Solutions, met Johanna Boel Bergmann, the Account Manager, Drupal Businesses at the Drupal Association.

Johanna had never heard of Faichi; she had never seen it in the Drupal.org Marketplace. This even though our company has been working with big enterprise clients for the past five years, as well as contributing to Drupal.org.

That was an eye­-opener for Shailesh. When he returned to India, he shared his findings with Faichi’s engineers and senior management. They took the feedback very seriously. They decided to create a plan to show their presence: not only in the Drupal Marketplace, but to the whole Drupal community.

Tags: acquia drupal planet
Categories: Elsewhere

Peter Eisentraut: Some git log tweaks

Planet Debian - Mon, 11/04/2016 - 14:00

Here are some tweaks to git log that I have found useful. It might depend on the workflow of individual projects how applicable this is.

Git stores separate author and committer information for each commit. How these are generated and updated is sometimes mysterious but generally makes sense. For example, if you cherry-pick a commit to a different branch, the author information stays the same but the committer information is updated. git log defaults to showing the author information. But I generally care less about that than the committer information, because I’m usually interested in when the commit arrived in my or the public repository, not when it was initially thought about. So let’s try to change the default git log format to show the committer information instead. Again, depending on the project and the workflow, there can be other preferences.

To create a different default format for git log, first create a new format by setting the Git configuration item pretty.somename. I chose pretty.cmedium because it’s almost the same as the default medium but with the author information replaced by the committer information.

[pretty] cmedium="format:%C(auto,yellow)commit %H%C(auto,reset)%nCommit: %cn <%ce>%nCommitDate: %cd%n%n%w(0,4,4)%s%n%+b"

Unfortunately, the default git log formats are not defined in terms of these placeholders but are hardcoded in the source, so this is my best reconstruction using the available means.

You can use this as git log --pretty=cmedium, and you can set this as the default using

[format] pretty=cmedium

If you find this useful and you’re the sort of person who is more interested in their own timeline than the author’s history, you might also like two more tweaks.

First, add %cr for relative date, so it looks like

[pretty] cmedium="format:%C(auto,yellow)commit %H%C(auto,reset)%nCommit: %cn <%ce>%nCommitDate: %cd (%cr)%n%n%w(0,4,4)%s%n%+b"

This adds a relative designation like “2 days ago” to the commit date.

Second, set

[log] date=local

to have all timestamps converted to your local time.

When you put all this together, you turn this

commit e2c117a28f767c9756d2d620929b37651dbe43d1 Author: Paul Eggert <eggert@cs.ucla.edu> Date: Tue Apr 5 08:16:01 2016 -0700

into this

commit e2c117a28f767c9756d2d620929b37651dbe43d1 Commit: Paul Eggert <eggert@cs.ucla.edu> CommitDate: Tue Apr 5 11:16:01 2016 (3 days ago)

PS: If this is lame, there is always this: http://fredkschott.com/post/2014/02/git-log-is-so-2005/

Categories: Elsewhere

Chapter Three: Javascript testing comes to Drupal 8

Planet Drupal - Mon, 11/04/2016 - 13:47

With the arrival of Drupal 8.1.0 finally you can test javascript interactions on Drupal.org. This is culmination of years of work by many developers to improve the testing API and infrastructure. Without the improvements delivered by Drupal 8 it'd be hard to leverage Mink, PhantomJS and PHPUnit to run our tests, and without the new DrupalCI infrastructure we'd have nowhere to run the tests.



Categories: Elsewhere

Drop Guard: Big update: the new onboarding process, improved patching workflow and more

Planet Drupal - Mon, 11/04/2016 - 12:14
Big update: the new onboarding process, improved patching workflow and more Igor Kandyba Mon, 11.04.2016 - 12:14

Today, we’re excited to introduce you to a number of new features, improvements and fixes for Drop Guard - the first update in the series of releases planned for 2016.  It includes many enhancements designed to improve user experience when creating projects in Drop Guard, support for the "Unsupported updates", and even smarter automated patching workflow. Read below to learn about the major improvements and don't forget to check your Drop Guard account to check it by yourself. Let's dive right in!

Drop Guard features Drupal Planet
Categories: Elsewhere

Kristof De Jaeger: Taking a (Drupal 8) website offline using AppCache

Planet Drupal - Mon, 11/04/2016 - 11:41
Written on April 11, 2016 - 11:41

A native mobile application which can cache the data locally is a way to make content available offline. However, not everyone has the time and/or money to create a dedicated app, and frankly, it's not always an additional asset. What if browsers could work without network connection but still serve content: Application Cache and/or Service Workers to the rescue!

For Frontend United 2016, Mathieu and I experimented to see how far we could take AppCache and make the sessions, speakers and some additional content available offline using data from within the Drupal site. There are a couple of pitfalls when implementing this, of which some are nasty (see the list apart link at the bottom for more information). Comes in Drupal which adds another layer of complexity, with its dynamic nature of content and themes. Javascript and css aggregation is also extremely tricky to get right. So after trial and error and a lot of reading, we came up with the following concept:

  1. Only add the manifest attribute to all "offline" pages which are completely separate from "online pages", even though they might serve the same content. In other words, you create a sandboxed version of some content of your site which can live on its own. Another technique is a hidden iframe which loads a page which contains the html tag with the manifest attribute. You can embed this iframe on any page you like. This gives you the option to create a page where you link to as an opt-in to get a site offline. Both techniques give us full control and no side affects so that when network is available the site works normally.
  2. You define the pages which you want to store in the cache. They are served by Drupal, but on a different route than the original (e.g. node/1 becomes offline/node/1) and use different templates. These are twig templates so you can override the defaults to your own needs. Other information like stylesheet and javascript files can be configured too to be included.
  3. The manifest thus contains everything that we need to create the offline version when your device has no network connection. In our case, it contains the list of speakers and sessions, content pages and some assets like javascript, stylesheet, logo and images.
Offline in the browser or on the homescreen

Go to the Offline homepage of Frontend United and wait until the 'The content is now available offline!' message appears, which means you just downloaded 672 kb of data - it is really really small, surprising no? Now switch off your network connection and reload the browser: still there! Click around and you'll be able to check the offline version at any time. If you're on a mobile device, the experience can be even sweeter: you can add this page to your homescreen, making it available as an 'app'. On iOS, you need to open the app once while still being connected to the network. We really do hope safari/iOS fixes this behavior since this is not necessary on Android. After that, turn off your network and launch the app again. Oh, and it works on a watch too if you have a browser on it. If that isn't cool, we don't know what else is! We have a little video to show you how it looks like. Watch (pun intended) and enjoy! Oh, in case we make changes to the pages, you will see a different notification telling you that the content has been updated - if your device has network of course.

Drupal integration

We've created a new project on Drupal.org, called Offline App, available for Drupal 8. The project contains the necessary code and routes for generating the appcache, iframe, pages (nodes and views) and settings to manipulate the manifest content. 3 new regions are exposed in which you can place the content for offline use. Those regions are used in offline-app-page.html.twig - but any region is available if you want to customize. Two additional view modes are created for content types and the read more link can be made available in the 'Offline teaser' mode. Formatters are available for long texts to strip internal links and certain tags (e.g. embed and iframe) and for images that will make sure that 'Link to content' is pointing to the 'Offline path'. Last, but not least, an 'Offline' Views display is available for creating lists. We're still in the process in making everything even more flexible and less error-prone when configuring the application. However, the code that is currently available, is used as is on the Fronted United website right now.

This module does not pretend to be the ultimate solution for offline content, see it as an example to quickly expose a manifest containing URL's from an existing Drupal installation for an offline version of your website. Other Drupal projects are available trying to integrate with AppCache or Service workers, however, some are unsupported or in a very premature state, apart from https://www.drupal.org/project/pwa. Note that I've been in contact with Théodore already and we'll see how we combine our efforts for coming up with one single solution instead of having multiple ones.

What about service workers ?

Not all browsers support the API yet. Even though AppCache is marked deprecated, we wanted to make sure everyone could have the same offline experience. However, we'll start adding support for service workers soon using the same concept.

We're also planning to start experimenting with delivering personal content as well, since that's also possible, yet a little trickier.

Links
Categories: Elsewhere

Matthew Garrett: Making it easier to deploy TPMTOTP on non-EFI systems

Planet Debian - Mon, 11/04/2016 - 07:59
I've been working on TPMTOTP a little this weekend. I merged a pull request that adds command-line argument handling, which includes the ability to choose the set of PCRs you want to seal to without rebuilding the tools, and also lets you print the base32 encoding of the secret rather than the qr code so you can import it into a wider range of devices. More importantly it also adds support for setting the expected PCR values on the command line rather than reading them out of the TPM, so you can now re-seal the secret against new values before rebooting.

I also wrote some new code myself. TPMTOTP is designed to be usable in the initramfs, allowing you to validate system state before typing in your passphrase. Unfortunately the initramfs itself is one of the things that's measured. So, you end up with something of a chicken and egg problem - TPMTOTP needs access to the secret, and the obvious thing to do is to put the secret in the initramfs. But the secret is sealed against the hash of the initramfs, and so you can't generate the secret until after the initramfs. Modify the initramfs to insert the secret and you change the hash, so the secret is no longer released. Boo.

On EFI systems you can handle this by sticking the secret in an EFI variable (there's some special-casing in the code to deal with the additional metadata on the front of things you read out of efivarfs). But that's not terribly useful if you're not on an EFI system. Thankfully, there's a way around this. TPMs have a small quantity of nvram built into them, so we can stick the secret there. If you pass the -n argument to sealdata, that'll happen. The unseal apps will attempt to pull the secret out of nvram before falling back to looking for a file, so things should just magically work.

I think it's pretty feature complete now, other than TPM2 support? That's on my list.

comments
Categories: Elsewhere

Evolving Web: Bringing files along for the ride to D8

Planet Drupal - Mon, 11/04/2016 - 03:24

We just upgraded our site to Drupal 8, and a big part of that was migrating content. Most content was in JSON files or SQL dumps, which are supported by Drupal's migrate module. But what about images and other files? How could we bring those along?

We'll show how to write a custom migrate process plugin!

read more
Categories: Elsewhere

Petter Reinholdtsen: Lets make a Norwegian Bokmål edition of The Debian Administrator's Handbook

Planet Debian - Sun, 10/04/2016 - 23:20

During this weekends bug squashing party and developer gathering, we decided to do our part to make sure there are good books about Debian available in Norwegian Bokmål, and got in touch with the people behind the Debian Administrator's Handbook project to get started. If you want to help out, please start contributing using the hosted weblate project page, and get in touch using the translators mailing list. Please also check out the instructions for contributors.

The book is already available on paper in English, French and Japanese, and our goal is to get it available on paper in Norwegian Bokmål too. In addition to the paper edition, there are also EPUB and Mobi versions available. And there are incomplete translations available for many more languages.

Categories: Elsewhere

Vincent Bernat: Testing network software with pytest and Linux namespaces

Planet Debian - Sun, 10/04/2016 - 16:30

Started in 2008, lldpd is an implementation of IEEE 802.1AB-2005 (aka LLDP) written in C. While it contains some unit tests, like many other network-related software at the time, the coverage of those is pretty poor: they are hard to write because the code is written in an imperative style and tighly coupled with the system. It would require extensive mocking1. While a rewrite (complete or iterative) would help to make the code more test-friendly, it would be quite an effort and it will likely introduce operational bugs along the way.

To get better test coverage, the major features of lldpd are now verified through integration tests. Those tests leverage Linux network namespaces to setup a lightweight and isolated environment for each test. They run through pytest, a powerful testing tool.

pytest in a nutshell

pytest is a Python testing tool whose primary use is to write tests for Python applications but is versatile enough for other creative usages. It is bundled with three killer features:

  • you can directly use the assert keyword,
  • you can inject fixtures in any test function, and
  • you can parametrize tests.
Assertions

With unittest, the unit testing framework included with Python, and many similar frameworks, unit tests have to be encapsulated into a class and use the provided assertion methods. For example:

class testArithmetics(unittest.TestCase): def test_addition(self): self.assertEqual(1 + 3, 4)

The equivalent with pytest is simpler and more readable:

def test_addition(): assert 1 + 3 == 4

pytest will analyze the AST and display useful error messages in case of failure. For further information, see Benjamin Peterson’s article.

Fixtures

A fixture is the set of actions performed in order to prepare the system to run some tests. With classic frameworks, you can only define one fixture for a set of tests:

class testInVM(unittest.TestCase): def setUp(self): self.vm = VM('Test-VM') self.vm.start() self.ssh = SSHClient() self.ssh.connect(self.vm.public_ip) def tearDown(self): self.ssh.close() self.vm.destroy() def test_hello(self): stdin, stdout, stderr = self.ssh.exec_command("echo hello") stdin.close() self.assertEqual(stderr.read(), b"") self.assertEqual(stdout.read(), b"hello\n")

In the example above, we want to test various commands on a remote VM. The fixture launches a new VM and configure an SSH connection. However, if the SSH connection cannot be established, the fixture will fail and the tearDown() method won’t be invoked. The VM will be left running.

Instead, with pytest, we could do this:

@pytest.yield_fixture def vm(): r = VM('Test-VM') r.start() yield r r.destroy() @pytest.yield_fixture def ssh(vm): ssh = SSHClient() ssh.connect(vm.public_ip) yield ssh ssh.close() def test_hello(ssh): stdin, stdout, stderr = ssh.exec_command("echo hello") stdin.close() stderr.read() == b"" stdout.read() == b"hello\n"

The first fixture will provide a freshly booted VM. The second one will setup an SSH connection to the VM provided as an argument. Fixtures are used through dependency injection: just give their names in the signature of the test functions and fixtures that need them. Each fixture only handle the lifetime of one entity. Whatever a dependent test function or fixture succeeds or fails, the VM will always be finally destroyed.

Parameters

If you want to run the same test several times with a varying parameter, you can dynamically create test functions or use one test function with a loop. With pytest, you can parametrize test functions and fixtures:

@pytest.mark.parametrize("n1, n2, expected", [ (1, 3, 4), (8, 20, 28), (-4, 0, -4)]) def test_addition(n1, n2, expected): assert n1 + n2 == expected Testing lldpd

The general plan for to test a feature in lldpd is the following:

  1. Setup two namespaces.
  2. Create a virtual link between them.
  3. Spawn a lldpd process in each namespace.
  4. Test the feature in one namespace.
  5. Check with lldpcli we get the expected result in the other.

Here is a typical test using the most interesting features of pytest:

@pytest.mark.skipif('LLDP-MED' not in pytest.config.lldpd.features, reason="LLDP-MED not supported") @pytest.mark.parametrize("classe, expected", [ (1, "Generic Endpoint (Class I)"), (2, "Media Endpoint (Class II)"), (3, "Communication Device Endpoint (Class III)"), (4, "Network Connectivity Device")]) def test_med_devicetype(lldpd, lldpcli, namespaces, links, classe, expected): links(namespaces(1), namespaces(2)) with namespaces(1): lldpd("-r") with namespaces(2): lldpd("-M", str(classe)) with namespaces(1): out = lldpcli("-f", "keyvalue", "show", "neighbors", "details") assert out['lldp.eth0.lldp-med.device-type'] == expected

First, the test will be executed only if lldpd was compiled with LLDP-MED support. Second, the test is parametrized. We will execute four distinct tests, one for each role that lldpd should be able to take as an LLDP-MED-enabled endpoint.

The signature of the test has four parameters that are not covered by the parametrize() decorator: lldpd, lldpcli, namespaces and links. They are fixtures. A lot of magic happen in those to keep the actual tests short:

  • lldpd is a factory to spawn an instance of lldpd. When called, it will setup the current namespace (setting up the chroot, creating the user and group for privilege separation, replacing some files to be distribution-agnostic, …), then call lldpd with the additional parameters provided. The output is recorded and added to the test report in case of failure. The module also contains the creation of the pytest.config.lldpd object that is used to record the features supported by lldpd and skip non-matching tests. You can read fixtures/programs.py for more details.

  • lldpcli is also a factory, but it spawns instances of lldpcli, the client to query lldpd. Moreover, it will parse the output in a dictionary to reduce boilerplate.

  • namespaces is one of the most interesting pieces. It is a factory for Linux namespaces. It will spawn a new namespace or refer to an existing one. It is possible to switch from one namespace to another (with with) as they are contexts. Behind the scene, the factory maintains the appropriate file descriptors for each namespace and switch to them with setns(). Once the test is done, everything is wipped out as the file descriptors are garbage collected. You can read fixtures/namespaces.py for more details. It is quite reusable in other projects2.

  • links contains helpers to handle network interfaces: creation of virtual ethernet link between namespaces, creation of bridges, bonds and VLAN, etc. It relies on the pyroute2 module. You can read fixtures/network.py for more details.

You can see an example of a test run on the Travis build for 0.9.2. Since each test is correctly isolated, it’s possible to run parallel tests with pytest -n 10 --boxed. To catch even more bugs, both the address sanitizer (ASAN) and the undefined behavior sanitizer (UBSAN) are enabled. In case of a problem, notably a memory leak, the faulty program will exit with a non-zero exit code and the associated test will fail.

  1. A project like cwrap would definitely help. However, it lacks support for Netlink and raw sockets that are essential in lldpd operations. 

  2. There are three main limitations in the use of namespaces with this fixture. First, when creating a user namespace, only root is mapped to the current user. With lldpd, we have two users (root and _lldpd). Therefore, the tests have to run as root. The second limitation is with the PID namespace. It’s not possible for a process to switch from one PID namespace to another. When you call setns() on a PID namespace, only children of the current process will be in the new PID namespace. The PID namespace is convenient to ensure everyone gets killed once the tests are terminated but you must keep in mind that /proc must be mounted in children only. The third limitation is that, for some namespaces (PID and user), all threads of a process must be part of the same namespace. Therefore, don’t use threads in tests. Use multiprocessing module instead. 

Categories: Elsewhere

Lullabot: Lullabot DrupalCon Sessions 2016

Planet Drupal - Sun, 10/04/2016 - 10:29

This year we have a stellar lineup of sessions by the Lullabot and Drupalize.Me teams which were accepted for DrupalCon North America being held in New Orleans. Take a look at who is presenting and read a short synopsis of what they’ll be talking about.

Coding and Development Altering, Extending, and Enhancing Drupal 8 - Joe Shindelar A large part of Drupal's appeal lies in its flexibility. The fact that a developer can alter, extend, and enhance almost any aspect of Drupal without having to hack core. Historically this versatility has been made possible through the existence of hooks. Specially named PHP functions that are executed at critical points during the fulfillment of a request. And they've served the framework well for years. But times are changing, and Drupal 8 offers a variety of new patterns that all module developers will be required to learn, and understand. Configuration Management for Developers in Drupal 8 - Matthew Tift Is the configuration system your favorite feature of Drupal 8? Are you interested in doing continuous integration? Do you want to easily export all of your Drupal configuration to code? Interested in building a best practice continuous integration and deployment solution? This session, hosted by co-maintainers of the configuration system, will focus on how Drupal 8's configuration management system works, how to integrate it with a continuous integration system, and what developers can do to extend its power through contributed modules and custom code. Come with your questions and learn more about this magical part of Drupal 8. Core Conversations Drupal (admin) as an application: More JavaScript in core? - Marc Drummond In recent months, much debate has revolved around the compelling user experiences increasingly accompanying the runaway growth of JavaScript frameworks. Some argue that Drupal already has many moving parts and should evolve toward more seamless user experiences with existing tools and better processes. Some argue that Drupal should address this trend with additional capabilities for JavaScript in the form of a JavaScript framework. Some argue we should look at using modern PHP and JavaScript technologies that don’t require a JavaScript framework. Others have positions that fall both inside and outside this spectrum! Learning to Let Go (Contrib Burnout) and Module Giveaway - Dave Reid How can someone deeply involved in the Drupal contributed module ecosystem start to step away? How do we handle burnout not just in Drupal core development, but in contrib? I'd like to engage a conversation based the challenges I have encountered and currently face personally/emotionally on my journey from being one of the top contributors to Drupal 7, prolific writer of modules, to someone starting a family and needing to rebalance their personal, work, and Drupal life. With so much focus on getting people involved in Drupal.org, are there technical solutions we can explore to help make active contributors happier? Drupal.org Documentation Is Getting An Overhaul - Joe Shindelar Having high-quality documentation available for Drupal.org is key to gaining wider adoption, growing the community, and the overall success of the Drupal project. I want to share the work related to documentation going on in the community, as well as some of our plans for continued improvement in the future. Front End Debugging, Profiling, & Rocking Out with Browser-Based Developer Tools! - Mike Herchel Browser based developer tools have become an indispensable tool for modern front-end web development. New features and changes are being added at a rapid pace, and keeping up with all of the changes is difficult, but well worth it! In this session, Mike will walk attendees through modern debugging techniques, tips and tricks, front-end profiling, and more! Sizing up responsive images: Make a plan before you Drupal - Marc Drummond Drupal 8 has built-in responsive images support based off of Drupal 7’s contributed Picture and Breakpoint modules. Understanding how to use those modules without first making a plan could easily lead to a cat-tastrophe! Horizons AMPing up Drupal - Karen Stevenson, Matthew Tift, and Marc Drummond In many cases, the mobile web is a slow and frustrating experience. The Accelerated Mobile Pages (AMP) Project which involves Google is an open source initiative that embodies the vision that publishers can create mobile optimized content once and have it load instantly everywhere. When AMP was first introduced last October 2015, many commentators immediately compared it to Facebook's Instant Articles and Apple's News app. One of the biggest differentiators between AMP and other solutions is the fact that AMP is open source. Beyond the Blink: Add Drupal to Your IoT Playground - Amber Himes Matz What does making a light blink have to do with Drupal? Come to this session to find out how you can add Drupal to your Internet of Things data playground. (THERE WILL BE BLINKING LIGHTS.) Site Building Recoupling: Bridging Design and Structured Content - Jeff Eaton For years we’ve talked about separating content and presentation. Structure, reuse, and standardization are the name of the game in a future-friendly, multi-channel world — aesthetics are someone else’s concern … right? UX Web Accessibility 101: Principles, Concepts, and Financial Viability - Helena Zubkow If your website wouldn't work for anyone living in the state of New York, would that be a launch-blocker? Of course! So why are we ignoring the even larger population of people with disabilities?

Photo by: Jeff Turner and used via Creative Commons License

Categories: Elsewhere

Russ Allbery: Largish haul

Planet Debian - Sun, 10/04/2016 - 05:42

Let's see if I can scrounge through all of my now-organized directories of ebooks and figure out what I haven't recorded here yet. At least the paper books make that relatively easy, since I don't shelve them until I post them. (Yeah, yeah, I should actually make a database.)

Hugh Aldersey-Williams — Periodic Tales (nonfiction)
Sandra Ulbrich Almazan — SF Women A-Z (nonfiction)
Radley Balko — Rise of the Warrior Cop (nonfiction)
Peter V. Brett — The Warded Man (sff)
Lois McMaster Bujold — Gentleman Jole and the Red Queen (sff)
Fred Clark — The Anti-Christ Handbook Vol. 2 (nonfiction)
Dave Duncan — West of January (sff)
Karl Fogel — Producing Open Source Software (nonfiction)
Philip Gourevitch — We Wish to Inform You That Tomorrow We Will Be Killed With Our Families (nonfiction)
Andrew Groen — Empires of EVE (nonfiction)
John Harris — @ Play (nonfiction)
David Hellman & Tevis Thompson — Second Quest (graphic novel)
M.C.A. Hogarth — Earthrise (sff)
S.L. Huang — An Examination of Collegial Dynamics... (sff)
S.L. Huang & Kurt Hunt — Up and Coming (sff anthology)
Kameron Hurley — Infidel (sff)
Kevin Jackson-Mead & J. Robinson Wheeler — IF Theory Reader (nonfiction)
Rosemary Kirstein — The Lost Steersman (sff)
Rosemary Kirstein — The Language of Power (sff)
Merritt Kopas — Videogames for Humans (nonfiction)
Alisa Krasnostein & Alexandra Pierce (ed.) — Letters to Tiptree (nonfiction)
Mathew Kumar — Exp. Negatives (nonfiction)
Ken Liu — The Grace of Kings (sff)
Susan MacGregor — The Tattooed Witch (sff)
Helen Marshall — Gifts for the One Who Comes After (sff collection)
Jack McDevitt — Coming Home (sff)
Seanan McGuire — A Red-Rose Chain (sff)
Seanan McGuire — Velveteen vs. The Multiverse (sff)
Seanan McGuire — The Winter Long (sff)
Marc Miller — Agent of the Imperium (sff)
Randal Munroe — Thing Explainer (graphic nonfiction)
Marguerite Reed — Archangel (sff)
J.K. Rowling — Harry Potter: The Complete Collection (sff)
K.J. Russell — Tides of Possibility (sff anthology)
Robert J. Sawyer — Starplex (sff)
Bruce Schneier — Secrets & Lies (nonfiction)
Mike Selinker (ed.) — The Kobold Game to Board Game Design (nonfiction)
Douglas Smith — Chimerascope (sff collection)
Jonathan Strahan — Fearsome Journeys (sff anthology)
Nick Suttner — Shadow of the Colossus (nonfiction)
Aaron Swartz — The Boy Who Could Change the World (essays)
Caitlin Sweet — The Pattern Scars (sff)
John Szczepaniak — The Untold History of Japanese Game Developers I (nonfiction)
John Szczepaniak — The Untold History of Japanese Game Developers II (nonfiction)
Jeffrey Toobin — The Run of His Life (nonfiction)
Hayden Trenholm — Blood and Water (sff anthology)
Coen Teulings & Richard Baldwin (ed.) — Secular Stagnation (nonfiction)
Ursula Vernon — Book of the Wombat 2015 (graphic nonfiction)
Ursula Vernon — Digger (graphic novel)

Phew, that was a ton of stuff. A bunch of these were from two large StoryBundle bundles, which is a great source of cheap DRM-free ebooks, although still rather hit and miss. There's a lot of just fairly random stuff that's been accumulating for a while, even though I've not had a chance to read very much.

Vacation upcoming, which will be a nice time to catch up on reading.

Categories: Elsewhere

Guido Günther: Debian Fun in March 2016

Planet Debian - Sat, 09/04/2016 - 22:00
Debian LTS

March was the eleventh month I contributed to Debian LTS under the Freexian umbrella. In total I spent 13 hours (of allocated 11.00 + 5.25h from last month) working on preparing for wheezy-lts:

  • Uploaded aptdaemon to {old-,}stable-proposed-updates (#818006, #818007)
  • Fix CVE-2012-6700, CVE-2012-6769 CVE-2012-6768, in Wheezy's dhcpcd resulting in DSA-3534
  • Reach out to Debian's Xen and KVM maintainers, Xen's community manager and several company to asses LTS maintainability
  • Research and propose a possible way forward for QEMU and libvirt
  • Upload a backport of libvirt to wheezy-backports for that
  • Prepare a fix for Wheezy's gtk+3.0 for CVE-2013-7447 (#818090) and propose it for oldstable-p-u (#819362)
  • Looked into Wheezy's lxc and CVE-2015-1335 specifically and marking it as no-dsa after discussion with the security-team.
  • Make bin/support-ended.py support EOL dates
  • Review Antiones nss work for Wheezy and work on the corresponding update for Jessie in order (to be finished this month).
Other Debian things
Categories: Elsewhere

Martín Ferrari: Come to SunCamp this May!

Planet Debian - Sat, 09/04/2016 - 18:45

Do you fancy a hack-camp in a place like this?

As you might have heard by now, Ana (Guerrero) and I are organising a small Debian event this spring: the Debian SunCamp 2016.

It is going to be different to most other Debian events. Instead of a busy schedule of talks, SunCamp will focus on the hacking and socialising aspect.

We have tried to make this event the simplest event possible, both for organisers and attendees. There will be no schedule, except for the meal times at the hotel. But these can be ignored too, there is a lovely bar that serves snacks all day long, and plenty of restaurants and cafés around the village.

One of the things that makes the event simple, is that we have negotiated a flat price for accommodation that includes usage of all the facilities in the hotel, and optionally food. We will give you a booking code, and then you arrange your accommodation as you please, you can even stay longer if you feel like it!

The rooms are simple but pretty, and everything has been renovated very recently.

We are not preparing a talks programme, but we will provide the space and resources for talks if you feel inclined to prepare one.

You will have a huge meeting room, divided in 4 areas to reduce noise, where you can hack, have team discussions, or present talks.

Of course, some people will prefer to move their discussions to the outdoor area.

Or just skip the discussion, and have a good time with your Debian friends, playing pétanque, pool, air hockey, arcades, or board games.

Do you want to see more pictures? Check the full gallery

Debian SunCamp 2016

Hotel Anabel, LLoret de Mar, Province of Girona, Catalonia, Spain

May 26-29, 2016

Tempted already? Head to the wikipage and register now, it is only 7 weeks away!

Please reserve your room before the end of April. The hotel has reserved a number of rooms for us until that time. You can reserve a room after April, but we can't guarantee the hotel will still have free rooms.

Comment

Categories: Elsewhere

Pages

Subscribe to jfhovinne aggregator - Elsewhere