Inhalt abgleichen
Drupal.org - aggregated feeds in category Planet Drupal
Aktualisiert: vor 5 Minuten 35 Sekunden

Lullabot: Drupal 8 Composer Best Practices

31. Januar 2018 - 19:45

Whether you are familiar with Composer or not, using it to manage dependencies on a Drupal project entails its own unique set of best practices. In this article, we will start by getting a Composer-managed Drupal project set up, and highlight some common questions and issues you may have along the way.

Before we dive in, though, you may be asking yourself, “Why Composer? Can’t I just download Drupal and the modules I need without requiring another tool?” Yes you can, but you will quickly realize it’s not a simple task:

  1. Contributed modules or themes often depend on third-party libraries installed via Composer. Without using Composer for the project, you’ll need to manage these individually when downloading, which can be quite a chore.
  2. Some packages and modules only work with certain versions of PHP or Drupal. While Drupal core does help you identify these issues for modules and themes, it’s still a manual process that you’ll need to work through when choosing which versions to download.
  3. Some packages and modules conflict with other packages. You’ll need to read the composer.json files to find out which.
  4. When you upgrade a package or a version of PHP, you’ll need to do all the above over again.
  5. If you’re thinking you’ll use drush dl and friends, they’ve been removed in favor of Composer.

Dependency management is complicated, and it’s not going to get any easier. As Ryan Szrama put it , “if you’re not using a dependency manager [like Composer], then you’re the dependency manager, and you are unreliable.”

Where do I start?

To begin, it’s good to familiarize yourself with the fantastic documentation on Drupal.org . If you haven’t already, install Composer in your development environment. When getting started, it’s extremely important that your development environment is using the same version of PHP that the target production environment will use. Otherwise Composer may download packages that won’t work in production. (With larger development teams, using something like Vagrant or Docker for local development can help ensure compatibility between local development instances and the production stack, but that’s a separate topic).

To start with, you need to get Drupal core installed. If you are familiar with using starter-kits like Drupal Boilerplate in Drupal 7, there is a Composer template for Drupal projects called, well, drupal-project. It’s the recommended starting place for a Composer-based Drupal 8 installation. Before you create it—again—be sure you are using the production version of PHP. Once you’ve confirmed that, run:

$ composer create-project drupal-composer/drupal-project:8.x-dev \ example --stability dev --no-interaction

This will copy the drupal-project to the example directory, and download Drupal core and some handy packages. This is a good point to cd into the example directory, run git init , and to then create your initial commit for your project.

This also might be a good time to pop open the composer.json file that was created in there (which should look a lot like this). This file serves as your “recipe” for the project.

How do I download modules and themes?

If you are familiar with using drush dl in Drupal 7 to download contributed modules and themes, it can be a bit of a shift switching to a Composer workflow. There is a different syntax for selecting the version you’d like, and in some cases it’s best to not commit the actual downloaded files to your repository (more on that to follow).

For most instances, you can use composer require [vendor]/[packagename] to grab the package you’d like. Most Drupal modules and themes are hosted on a custom Composer repository, which drupal-project configures for us out of the box. That means we can use drupal as the vendor to download Drupal modules and themes that are maintained on drupal.org. If you aren’t using drupal-project, you may need to add the Drupal.org Composer repository yourself.

For example, if you were wanting to download the Devel module, you would run the following command:

$ composer require drupal/devel

For most cases, that would download the most recent stable version of the Devel module that is compatible with your version of Drupal and PHP. If you used drupal-project above, it would download the module to web/modules/contrib. If you want to change the download destination, you can alter the paths in your composer.json. Look for the installer-paths under extra and adjust to your liking.

Development Dependencies

The Devel module is a good example to use, as it brings up a few other things to note. For example, since the Devel module shouldn’t be used in a production environment, you may only want it to get downloaded on development environments. With Composer, you can achieve this by passing the --dev flag to the composer require command.

$ composer require --dev drupal/devel

This will ensure that the Devel module is available for your developers when they run composer install , but that it won’t ship with your production release (which should get built using composer install --no-dev ). This is just an example, and your project needs may differ, but the use of --dev to specify dependencies only needed during development is a recommended best practice.

As a side note, if you are committing your exported Drupal 8 configuration to code, you may want to use the Configuration Split module to ensure that the Devel module’s enabled status doesn’t get pushed to production by mistake in a release.

Nested Dependencies

Another thing to note is that the Devel module ships with its own composer.json file. Since we used Composer to download Devel, Composer will also read in Devel’s composer.json and download any dependencies that it may have. In this case (at the time of this writing), Devel doesn’t have any required dependencies, but if you were to use Composer to download, say Address module, it would pull in its additional dependencies as well, as Address module uses Composer to specify some additional dependencies .

Downloading specific versions

While it’s most often fine to omit declaring a specific version like we did above, there still may come a time when you need to narrow the range of possibilities a bit to get a package version that is compatible with your application.

Judging by the length of the Composer documentation on Versions and constraints, this is no small topic, and you should definitely read through that page to familiarize yourself with it. For most cases, you’ll want to use the caret constraint (e.g., composer require drupal/foo:^1.0 means the latest release in the 8.1 branch), but here’s some more details about versions and constraints:

  1. Read up on Semantic Versioning if you aren’t familiar with it. Basically, versions are in the x.y.z format, sometimes described as MAJOR.MINOR.PATCH , or BREAKING.FEATURE.FIX . Fixes increment the last number, new features increment the middle number, and refactors or rewrites that would break existing implementations increment the first number.
  2. Use a colon after the vendor/package name to specify a version or constraint, e.g. composer require drupal/foo:1.2.3 (which would require that exact version (1.2.3) of the foo package). If you’re used to drush syntax (8.x-1.2.3), the Composer syntax does not include the Drupal version (i.e., there's no 8.x).
  3. Don’t specify an exact version unless you have to. It’s better to use a constraint.
  4. The caret constraint (^): this will allow any new versions except BREAKING ones—in other words, the first number in the version cannot increase, but the others can. drupal/foo:^1.0 would allow anything greater than or equal to 1.0 but less than 2.0.x . If you need to specify a version, this is the recommended method.
  5. The tilde constraint (~): this is a bit more restrictive than the caret constraint. It means composer can download a higher version of the last digit specified only. For example, drupal/foo:~1.2 will allow anything greater than or equal to version 1.2 (i.e., 1.2.0, 1.3.0, 1.4.0,…,1.999.999), but it won’t allow that first 1 to increment to a 2.x release. Likewise, drupal/foo:~1.2.3 will allow anything from 1.2.3 to 1.2.999, but not 1.3.0.
  6. The other constraints are a little more self-explanatory. You can specify a version range with operators, a specific stability level (e.g., -stable or -dev ), or even specify wildcards with *.
What do I commit?

Now that we’ve got a project started using Composer, the next question you may have is, “What files should I commit to my repository?” The drupal-project will actually ship a default .gitignore file that will handle most of this for you. That said, there are a few things that may be of interest to you.

You may have noticed that after running some of the above commands, Composer created a composer.lock file in your repository. The composer.lock file is a very important file that you want to commit to your repository anytime it changes. When you require a new package, you may have omitted a version or a version constraint, but Composer downloaded a specific version. That exact version is recorded in the composer.lock file, and by committing it to your repository, you then ensure that anytime composer install is run on any other environment, the same exact code gets downloaded. That is very important from a project stability standpoint, as otherwise, Composer will download whatever new stable version is around based on what’s in composer.json.

Now that we understand more about what composer.lock is for, here’s a list of what to commit and what not to commit:

  1. Commit composer.json and composer.lock anytime they change.
  2. There’s no need to commit anything in ./vendor , Drupal core (./web/core), or contributed modules and themes (./web/modules/contrib or ./web/themes/contrib). In fact, it’s recommended not to, as that ensures the same code is used on all environments, and reduces the size of diffs. If you really want to (because of how your code gets deployed to production, for example), it is possible, you’ll just need to change the .gitignore, and always make sure the committed versions match the versions in composer.lock.
  3. Commit any other custom code and configuration as usual.
How do I keep things up to date?

Updating modules, themes, and libraries downloaded with Composer is similar to installing them. While you can run composer update to update all installed packages, it’s best to save that for the beginning of a sprint, and update individual projects as needed after that. This ensures you only update exactly what you need without risking introducing bugs from upstream dependencies. If you aren’t working in sprints, set up a regular time (weekly or monthly) to run composer update on the whole project.

To update the Devel module we installed earlier, you could run:

$ composer update --with-dependencies drupal/devel

You might be wondering what that --with-dependencies option is. If you run the update command without it, composer will update just the module, and not any packages required by that module. In most circumstances, it’s best to update the module’s dependencies as well, so get used to using --with-dependencies.

You can also update multiple packages separated by spaces:

$ composer update --with-dependencies drupal/foo drupal/bar

For a more aggressive approach, you can also use wildcards. For example, to update all drupal packages, you could run:

$ composer update --with-dependencies drupal/*

Once complete, be sure to commit the changes to composer.lock.

What about patches?

Inevitably, you’ll need to apply some patches to a Drupal module, theme, or possibly Drupal core. Since you aren’t committing the actual patched modules or themes with a Composer workflow, you’ll need some way to apply those patches consistently across all environments when they are downloaded. For this we recommend composer-patches. It uses a self-documenting syntax in composer.json to declare your patches. If you’re using drupal-project mentioned above, composer-patches will already be installed and ready to use. If not, adding it to your project is as simple as:

$ composer require cweagans/composer-patches

While it’s installing, take this time to go read the README.md on GitHub.

Once installed, you can patch a package by editing your composer.json . Continuing with our example of Devel module, let’s say you wanted to patch Devel with a patch from this issue. First step?—copy the path to the patch file you want to use. At the time of this writing, the most recent patch is https://www.drupal.org/files/issues/2860796-2.patch .

Once you have the path to the patch, add the patch to the extras section of your composer.json like so:

"extra": { "patches": { "drupal/devel": { "2860796: Create a branch of devel compatible with Media in core": "https://www.drupal.org/files/issues/2860796-2.patch" } } }

You can see that in the above example, we used the node id (2860796) and title of the Drupal.org issue as the key, but you may decide to also include the full URL to the issue and comment. It’s unfortunately not the easiest syntax to read, but it works. Consistency is key, so settle on a preferred format and stick to it.

Once the above has been added to composer.json, simply run composer update drupal/devel for the patch to get applied.

$ composer update drupal/devel Gathering patches for root package. Removing package drupal/devel so that it can be re-installed and re-patched. Deleting web/modules/contrib/devel - deleted > DrupalProject\composer\ScriptHandler::checkComposerVersion Loading composer repositories with package information Updating dependencies (including require-dev) Package operations: 1 install, 0 updates, 0 removals Gathering patches for root package. Gathering patches for dependencies. This might take a minute. - Installing drupal/devel (1.2.0): Loading from cache - Applying patches for drupal/devel https://www.drupal.org/files/issues/2860796-2.patch (2860796: Create a branch of devel compatible with Media in core)

And finally, commit the changes to both composer.json and composer.lock .

If any of your dependencies declare patches (for example, let’s say a module requires a patch to Drupal core to work properly), you’ll need to explicitly allow that in your composer.json. Here’s a quick one-liner for that:

$ composer config extra.enable-patching true How do I remove a module or theme?

Removing a module or theme using Composer is fairly straightforward. We can use composer remove for this:

$ composer remove drupal/devel

If you added drupal/devel with the --dev flag, you might get a prompt to confirm the removal from require-dev . If you want to avoid that prompt, you can use the --dev flag in your remove command as well:

$ composer remove --dev drupal/devel

Once it’s done, commit your composer.json and composer.lock file.

Anything else to watch out for? Removing patches

If you need to remove a module or theme that has patches, the patches don’t automatically get removed from the composer.json file. You can either remove them by hand in your editor, or run:

$ composer config --unset extra.patches.drupal/devel Lock hash warnings

On a related note, any time you manually edit composer.json in this way without a subsequent composer update, the hash in composer.lock will be out of date, throwing warnings. To fix that without changing the code you have installed, run composer update --lock. That will just update the hash in the lock file without updating anything else. Once complete, commit the composer.json and composer.lock.

PHP Versions…again

As mentioned early on, it’s very important with a Composer-based workflow that the various environments use the same major and minor release of PHP. If you aren’t using Vagrant or Docker for local development and are finding it difficult to standardize, you can enforce a specific PHP version for Composer to adhere to in composer.json.

$ composer config platform.php 7.1

Once added, don’t forget to update your lock file and commit the resulting composer.json and composer.lock .

$ composer update --lock Speeding things up

There are some Composer operations that can be slow. To speed things up, you can install Prestissimo, which will allow Composer to run operations in parallel. It’s best to do this globally:

$ composer global require hirak/prestissimo It’s not perfect

You will inevitably run into some frustrating issues with a Composer workflow that will cause you to question its wisdom. While there may be scenarios where it might make sense to abandon it for other options, you will bear the burden of managing the complexities of your project’s dependencies yourself. If you stick with Composer, the good news for you is that you are not alone, and these issues promise to improve over time because of that. Think of it as an investment in the long-term stability of your project.

Collage of JoAnn Falletta by Mark Dellas.

DrupalEasy: Top 5 List of Top Ten Lists about Drupal Talent & Careers in the U.S.

31. Januar 2018 - 17:46

As trainers, feeders of the Drupal Talent pipeline, and researchers of strategies to attract and build the numbers and excellence of Drupal talent across the world, we spend a lot of time finding and training people in the ways of Drupal. Through resources, Mike Anello's many sessions and trainings at Camps and Cons, and through our flagship Drupal Career Technical Education program, we pursue our passion to teach more people Drupal. We think we have the training side of this down, but like the Drupal Community's general shortage of talent, it’s finding more people that is the challenge.

Why is that? And why aren’t there people coming in droves to this opportunity-rich, community-based vocation? We think it has a lot to do with a lack of the right information getting to the right people. Here at DrupalEasy, we fill a lot of (sometimes too much) time observing and noodling the various paths people take to find Drupal, aspects of Drupal as a career and reaching those who could benefit. We think if Drupal opportunities were presented more broadly, a bit better, and were more accessible to those who are not aware (especially those who historically have not embraced IT careers,) the floodgates (or at least a stream) might start to bolster up the Drupal talent pipeline.  

Drupal's foundations are really quite inspiring.  A vocation built on sharing - open source, an engaged community and building and developing the means upon which our societies connect, build relationships, find information, and buy & sell. The story is also quite practical; well-paying jobs a-plenty. According to Indeed.com, the average salary for "Drupal" ranges from approximately $59,980 per year for Web Designer to $110,572 per year for Full Stack Developer. 

In addition, the US Department of Labor Occupational Outlook, which provides official salary, job growth statistics and job descriptions for just about any career you might want to pursue, has some pretty convincing numbers as well. According to the DoL, Software Developer, Applications positions have a 30% growth rate, rank in the top 10 for job growth in the US, and have the third highest estimated salary! For web developers in particular, the DoL puts job growth at 15% over the next 8 years, which they cite as much faster than average. To put it in perspective, electrical engineerin job growth is predicted to be 7% – less than half of that of web developers.  

So with all of this opportunity, where are all the aspiring Drupal developers? Apparently somewhere they are privy to neither the Drupal narrative nor Web developer job stats.  We have several ideas, some big, others not too difficult, on how to overcome our shortage of talent, as we outline in List #5 to provoke some thought and perhaps follow up from those who feel the pain of the Drupal talent shortage.  We'd love to hear from you. 

But perhaps we can all give small efforts a go to see where it might improve things on a smaller scale; beginning with awareness we can build within and on the fringes of our personal and professional networks. So, in the spirit of spreading the word about how great the opportunities are in Drupal, we thought we would compile a few easily shareable lists you may want to dole out to those around you. We'd also love for you to share with us your lists (and ideas) that may make Drupal a bit more accessible to those who may become a part of this engaging community. 

#1  Top 10 Drupal Talent-Starved States

If you live in one of the 10 states listed below, especially near the major metropolitan areas, your outlook for finding a Drupal job is pretty positive. Likewise if you are looking for talent in these places, we feel your pain. The list includes the highest number of open positions we found on Indeed. (To be fair, if you live in Idaho, Mississippi, Nebraska, South Dakota or Wyoming, the chances of finding a commuter/non-distributed position in Drupal is pretty slim, considering we could not find a single open position in any of these states using a pretty comprehensive list of job search sites.)  

  1. California: 270

  2. New York: 233

  3. Virginia: 130

  4. Maryland: 118

  5. Massachusetts: 106

  6. Pennsylvania: 95

  7. Texas: 85

  8. Washington: 60

  9. (tie)Florida: 55

  10. (tie) Illinois: 55

[*Source, Indeed.com, as of January 29, 2018. (Indeed has the greatest number, therefore the most complete list, of Drupal job openings. It also provides the tools to ensure accuracy. The other sites support these rankings, ] # 2 Top 10 Jobs Sites to find Drupal Positions (by number of Drupal jobs and ease of calculation!)

We went on a job finding expedition earlier this week to see where people looking for Drupal jobs or just gauging the opportunities have the best shot. Indeed.com won by shear numbers, but also because they make searching, and compiling information like these lists the easiest. The list includes the site and the number of Drupal and Drupal related jobs in the United States as of January 29, 2018. 

1 Indeed; 2,015

2 Glass Door; 2,012

3 Simplyhired;1,798

4 Monster; 1,164

5 job.net ~500

6 ihiretechnology; 491

7 Justtechjobs; 273

8 Dice; 259

CareerBuilder; 135

10 DrupalJobs; 80

*Of note:  I tried not to use sites that compile listings from other sites, like Ziprecruiter, but many sites now share listings. Also, if you are looking specifically for a federal government job, try USAjobs.gov #3 Top 10 Drupaliest Companies in the US

For those who wish to get into larger organizations (by Drupal size standards of course) with lots of Drupal people to associate with throughout the day, the companies who have the greatest number of employees registered on Drupal.org, and have headquarters or major facilities in the US are listed in order of Drupaliness, which means according to the number staff members on Drupal.org.

  1. Acquia; 618

  2. FFW; 231

  3. CI&T; 220

  4. Cognizant; 117

  5. Phase2; 92

  6. Pantheon; 86

  7. Booz Allen Hamilton; 74

  8. Appnovation; 69

  9. Epam; 68

  10. Mediacurrent; 67

[Source Drupal.org: Organizations using Drupal: United States which shows the number of employees who are on Drupal.org.] # 4. Top Ten Articles to Guide Aspiring Drupal Developers

OK, so we’ll preface this by again explaining that we spend a lot of time thinking about, researching, interviewing, writing and presenting a lot of materials on Drupal careers and jobs. That said, you’ll see quite a few entries below with our fingerprints on them. Not sure how to shed the cloak of shameless promotion, but avoiding it does not seem like a good reason to leave out helpful information (we’ll take whatever sneers you'd like to offer.) The list was compiled from a variety of Google searches using several key words and variations, and based on our impressions of the credibility and helpfulness of the information.  If you have any additional materials that we missed and you’d like to share, please let us know and we’ll add it to our Career Resources Page.

  1. How Do I Start a Career in Drupal? DrupalEasy Academy Resources page

  2. Why Become a Drupal Developer? Drupal Partners, August 2015

  3. How Do I get a Job in Drupal?; OSTraining’s March, 2015

  4. Become a Drupal Developer, Drupalize.me

  5. What Does it Mean to Be a Drupal Developer?; Promet Source, August 2016

  6. How to Become a Successfull Web Developer; Mobomo, August  2016

  7. How to Become a Successful Web Developer, Zyware; 2015

  8. 6 Steps for New Drupal 8 Developers; Web Omlette

  9. What Skills should a Drupal Developer Have? ValueBound, February 2017

  10. Drupal Career Resources; DrupalEasy Academy

# 5. Top 10 ways to grow Drupal Talent

This one is for all of us, especially the folks on the #3 list, who, we noticed are among many of the companies tallying up the numbers for states on list #2. Since we started Drupal Career Training, we have met with dozens of people, educational institutions, workforce boards, other Drupal training companies and all sorts and sizes of companies about the Drupal talent shortage issues, the lack of diversity issue, and the "lack of experience" issue for those new to Drupal. We feel like if just a few in the community, together or independently, start any of these initiatives, it will go a long way in ensuring that the 15% growth in web developer positions is not lost on Drupal in the future. The only resource for this list is the collection of ideas we have heard, discussed, conceptualized, written into white papers and schemed up during DrupalEasy lunches. If you have another idea, or want our help getting one of these concepts going, let us know.

  1. Collaborate with other companies, especially in the states that made the #2 list, to reach out to regional workforce agencies to get them involved in finding and underwriting training for potential Drupal hires.

  2. Develop geographic mentoring networks for those considering and new to Drupal through the local users’ groups.

  3. Take on Interns (Contact DrupalEasy for well-trained candidates or find them at local meetups.)

  4. Develop a Drupal community scholarship fund for under-represented groups to use one of the many Drupal Training organizations to get skilled up in Drupal.

  5. Partner with Not-For-Profits to fund Drupal training, mentoring and internship programs for women, minorities, veterans, and other underutilized populations.

  6. Promote Drupal as a career in your local and non-Drupal community outreach. 

  7. Reach out to contacts at local colleges about adding Drupal to their curriculum (DrupalEasy’s state licensed Career Technical Education program is an option.)

  8. Host/sponsor beginner information nights at Meetups.

  9. Share these lists to spark interest and action.

  10. Contact DrupalEasy to help with these or any other ideas you may have!

 

The Spring 2018 session of DrupalEasy's Drupal Career Online training begins on March 26th, with two more free informational webinars about the course in February and March. Registration is also open for the Spring Session of Mastering Professional Drupal Developer Workflows with Pantheon, which starts on February 28th. 

 

InternetDevels: Passing the baton of your contrib module

31. Januar 2018 - 16:55

This was a blog post written by guest author Martin Postma (lolandese).
He usually writes directly on Drupal.org as an author of documentation.
Documentation is however not included on Drupal Planet so he asked us
to publish it on our blog to give it more exposure to stimulate the kick-off of this new initiative.

Read more

Drupal Association blog: Summary of the December 12, 2017 Board Meeting

31. Januar 2018 - 16:38

On December 12, 2017, the board met virtually to close out final topics for the year ranging from board governance to reviewing the 2018 operational focus. You can find the meeting minutes, board packet and video recording here.

The board unanimously voted to approve changes to the Drupal Association bylaws. The main changes were:

  • The ability to pay an Officer. This allows us to pay Adam Goodman, our past board advisor, to serve as interim chair of the Board of Directors. In response to the community’s request for a neutral chair, Adam agreed to step into this role and will continue to help the board evolve strategically and orient itself around a chair that is not the founder of the project. The nominating committee will focus this year on finding a permanent chair. 

  • Update of the list of committees. The bylaws now reflect the committees that are in place today.

  • Clarity on meeting tools. This allows the board to meet virtually using more modern tools like video conferencing rather than conference lines.

The board also voted to approve the extention of  community elected board members’ seats so their term ends in November of their last year on the board rather than January. Shyamala Rajaram’s seat was extended from January 2018 to November 2018 and Ryan Szrama’s seat was extended from January 2019 to November 2019. We made this change so that community elected board member start and end their terms in the same month as the nominated members. This will provide smoother onboarding for our community elected board members.

Now that community elected board members will join the Board of Directors in November rather than January, community elections will be held this summer.

Additionally, Megan Sanicki, Drupal Association Executive Director, provided an update on 2017 staff achievements and shared the team’s 2018 goals and focus areas. The 2018 goal is to help grow adoption of Drupal 8 ambitious digital experiences including API-first solutions. We will do this by focusing our efforts in the following areas:

  1. Accelerate the adoption journey of ambitious digital experiences including API-first solutions

    • By inspiring & informing evaluators with case studies and other resources to help convert them into users faster/easier

    • By improving Drupal’s TCO and ease of use

  2. Strengthen the User Journey: Continue to delight existing users and help them expand Drupal usage

  3. Support community health

    • Support diversity with DrupalCon inclusion programs and by expanding the personas we serve as well as providing more global support

    • Strengthen the connection between BDFL and community through roundtable discussions and amplifying his messages to the community

    • Support community governance improvements as needed / requested

  4. Build a stronger foundation of support

    • Ensure staff satisfaction

    • Ensure organizational and financial health

    • Create better understanding, collaboration between DA & community

Specific details of the Drupal Association’s 2018 execution plan will be shared in a future blog post.

We hope you can join us for our 2018 board meetings, which will be announced soon.

Matt Glaman: Running Behat tests from CircleCI to a Platform.sh environment

31. Januar 2018 - 16:00
Running Behat tests from CircleCI to a Platform.sh environment mglaman Wed, 01/31/2018 - 08:00 In client projects, I push for as much testing as possible. In Drupal 8 we finally have PHPUnit, which makes life grand and simpler. We use Kernel tests to run through some basic integration tests using a minimally bootstrapped database. However, we need Behat to cover behavior and functional testing on an existing site for speed and sanity reasons.

Mark Shropshire: Announcing the 2018 Charlotte Drupal Drive-in!

31. Januar 2018 - 5:04

After two successful Charlotte Drupal Drive-in events in 2014 and 2015, the Charlotte Drupal User Group (CharDUG) is bringing it back on March 3rd, 2018. The format of the event is unconference style, allowing for a relaxed atmosphere where beginner and seasoned Drupalers alike are able discuss their projects, ideas, and ask questions.

Whether you want to discuss your projects with others, have an impromptu talk you would like to give, or a polished slide-deck presentation, you will be given the chance to pitch your idea(s). Once the pitches are made, every attendee will get to vote on the ones they find most interesting. This setup makes the event informal, the schedule fluid, and the topics dynamic. Most of all we have a lot of fun!

While Drupal is the focus, we will also welcome talks on development tools, JavaScript frameworks, decoupled Drupal, SEO, web marketing, hosting, and more. Bring a talk idea or just come and hangout! This year’s event will be at Charlotte North Carolina’s awesome Hygge Coworking at Camp North End. Thanks to our sponsors, we will have door prizes, coffee, snacks, and lunch provided free of charge! Did I tell you the event is free? Yep, it is!

Register for the March 3rd Charlotte Drupal Drive-in today! Hope to see you there!

Thank you to our fine sponsors!

If you want to learn more about the origins of the Charlotte Drupal Drive-in and what others think of past events, check out the links below!

Blog Category: 

Jacob Rockowitz: WTF: What's The Future Drupal?

31. Januar 2018 - 1:11

I love these lyrics from "Talkin’ World War III Blues" because it reminds us that it’s impossible to get all of the people to agree on what is “right”. The best we can hope for is a fair and reasonable discussion followed by a compromise.

Two weeks ago, I published a blog post that stated the Webform module now depends on the Contribute module with a reasonable explanation as to why I was making the change. Some people aggressively pushed back about this approach, especially in the Webform module's issue queue. I completely agree that long-term change on what message is communicated as well as how the Drupal community presents itself in the actual software is going to happen in the issue queue on Drupal.org and at DrupalCon. The fact that people consider me promoting the concept of joining Drupal.org, becoming a member of the Drupal Association, and contributing back to Drupal an "ad" or "SPAM" is a troubling. I view "code as content". I feel that the Drupal community and Open Source needs a push in a more sustainable direction and I’ve used the Webform module and my two years of hard work as a 'soapbox' to make an important statement, which is "WTF: What's The Future Drupal?

"WTF?: What's the Future and Why It's Up to Us

So I just finished Tim O'Reilly's book titled "WTF?: What's the Future and Why It's Up to Us" and in his book, he passionately talks about how Open Source has shaped the world we see today and the future we see before us. O’Reilly says that Facebook and Google would not exist at the scale they are today without Open Source because both platforms are built on an open source stack of software. To me, that’s huge. O’Reilly’s book explores the key defining technology moments in our past, and how technology in the future is...Read More

Jeff Geerling's Blog: Drupal VM 4.8 and Drush 9.0.0 - Some major changes

31. Januar 2018 - 0:34

tl;dr: Drupal VM 4.8.0 was just released, and it uses Drush 9 and Drush Launcher to usher in a new era of Drush integration!

Drush has been Drupal's stable sidekick for many years; even as Drupal core has seen major architectural changes from versions 4 to 5, 5 to 6, 6 to 7, and 7 to 8, Drush itself has continued to maintain an extremely stable core set of APIs and integrations for pretty much all the time I've been using it.


New Drush version, new Drush website!

Drupal Association blog: A look back at Global Training Days in 2017

30. Januar 2018 - 21:35

Drupal Global Training Days (GTD) is an initiative of the community to introduce people to Drupal. The first events of the year were held just last Friday-Saturday, but more on that after we reflect on last year's progress. In 2017, GTD was held in 86 locations around the world. A lot of behind the scenes work happened last year to keep the project going, including the convening of a working group of trainers who had been participants in GTD in different regions of the world.


Here's what Drupical looks like when a GTD event is about to take place. So much yellow-orange!

Other noteworthy things happened in 2017 for Global Training Days. At DrupalCon Baltimore, the community included two BoFs where GTD history and challenges were discussed and progress was made to address the issues. In spring 2017 a survey was conducted to better understand the needs of the training hosts so improvements can be made in the future and 400 trainers were invited to participate. A new Twitter account @DrupalGTD was also started to keep the community informed and engaged on the project.

Highlights from the organizers

I invited three GTD hosts to answer some questions about their events to give us a view into what's happening in their local communities. Thanks Kirsten, Ildephonse, and Mauricio for participating.

Kirsten Burgard (bendygirl) from GovCon (Washington DC)

How did you get started in Global Training Days?

"We've been hosting D4G half days for several years, this year we started incorporating GTD into these events.  We were looking to get more structure into our training offerings and heard about the GTD project.  During DrupalCon Baltimore, a couple of our organizers were able to attend the Drupal Global Training Days BoF, and after that initial briefing on the project, we jumped right in. Drupal4Gov uses the GTD dates to coordinate community based training, extending our regular half-day events. Our goal is to offer a beginner session, but take advantage of the pre-coordinated space and time to offer intermediate and advanced sessions or additional topics like a Devops half day.  Drupal4Gov has hosted a training event on every GTD since attending the BoF at DrupalCon Baltimore, and we are committed to continuing that trend."

Who helped to make your training happen?

"Multiple speakers, organizers and hosts. Last year, we had National Agricultural Library (in spring), Taoti (in June), Chief (in September), and Department of Interior and Debug Academy (in December). This month, Booz Allen Hamilton and Government CIO Magazine hosted us January 26th and 27th.

Maurcio Dinarte (dinarcon) allowed us the use of his “Understanding Drupal” material for our very first official GTD at Taoti and since then we’ve used the free D8 Site Building training videos provided by Acquia in coordination with OSTraining.  Our wonderful community speakers provide additional training material that expand on the GTD efforts."

How many attended your training events in 2017 and what did they say they wanted to learn?

Our class sizes are limited by the spaces we are able to secure and the course material we are looking to teach.

Here are the number of people that registered for our events:

2017

  • April - 78

  • June - 30

  • September - 20

  • December - 33

2018

  • January - 78 (plus speakers), 8 (including host and speaker)

We have surveyed our users and the responses are always positive.  When asked about future trainings, most attendees simply asked for more of the same and/or a continuation to build on what they just learned.

What new knowledge did attendees receive from you?

"We do a decompress at the end of our events and at the beginning, we ask how many Drupal4Gov events they’ve attended. At our April DevOps event I asked the usual, ‘How many of you are at your 1st Drupal4Gov event’ and nearly 80% of attendees had never heard of us much less worked with Drupal. This was their first ever Drupal event. They stayed the entire time and most have come back for other events over the past year. Typically, less than half are brand new to a Drupal4Gov event. My favorite comment from any event also came from that, at the end, we ask, ‘What one thing did you learn here” and one of the speakers turned to the other two speakers and said ‘I met the other speakers and I think I can incorporate parts of their work into mine’ which is seriously awesome. We bring together people who didn’t know each other and when they leave, they feel empowered to work together to make Drupal and the Web better!

It’s probably important to explain what one of our events looks like. Please note, we limited seating to 70 and had 78 in attendance., we work really hard at not turning people away even when at capacity. So, here’s an example of the highly technical DevOps event we hosted with Zivtech, Mindgrub and the US Department of Agriculture at the National Agricultural Library:

Join Drupal4Gov for another of our Quarterly Half Day events.

This time around, we will limit to 70 attendees and spend 90 minutes each with Zivtech, Mindgrub and USDA Office of Communications about DevOps. And please note...NO COMPUTER NEEDED!

Zivtech will provide an in depth training on Probo.CI which provides environments for quality assurance and testing using the LAMP stack, complete with selenium testing and Solr search.

Mindgrub will discuss the internal processes that caused them to embrace the robot overlords and start to investigate devops automation.

USDA will close us out with how USDA.gov is using a combination of PHP7, MariaDB v10.1.21, and Varnish 4 deployed on the USDA Enterprise Platform Shared Service (available to all government agencies) which leverages Salt, Rancher, and Docker. Coupled with CDNs they had around 50k/requests per minute to the backend servers.

So, join local govies, contractors, private sector, non profits and more for amazing discussion about DevOps and testing. You have options, let's explore them together."

Maurcio Dinarte (dinarcon) from Nicaragua

Who helped to make your training happen?

"For the first edition of the training, it took Lucas Hedding and myself several months to create the curriculum. We were also supported by Norman García, who let us use a lab of his computer science institute several times. Over the years, various people helped to improve the curriculum. Many of them were students who attended one of our trainings and got Drupal jobs afterwards."

How many attended your training events in 2017 and what did they say they wanted to learn?

"About 70 people attended our trainings in 2017. To date, the trainings have covered intro to Drupal material for the most part. Many attendees want to continue learning and they have asked for more advanced site building, theming, and module development material. We are going to start doing that with our next workshop which will focus on Views."

What new knowledge did attendees receive from you?

"In our trainings, we cover basic site building material: how to create nodes, content types, and fields; basic Views set up; block creation and placement; and some general CMS topics and Drupal practices. Most people who attend are completely new to Drupal or web development in general. They are generally impressed by how much can be done without writing a single line of code."

Ildephonse Bikino (bikilde) from Rwanda

Who helped to make your training happen?

"Our Rwanda Drupal Community is at its beginning. During 2017, I was assisted by one of my community members named Diane. The trainings were hosted by KLAB which provides an open space for IT entrepreneurs to collaborate and innovate in Kigali, Rwanda. It was initiated by the government. So they gave us space, projector and internet access at the venue."

How many attended your training events in 2017 and what did they say they wanted to learn?

"This year we had one series of trainings, were we got approximately 388 participants organized in 8 groups 50 each. We expected only 50 people, but we got such large number of people interested. This story was written on Drupal Community Spotlight.

The second GTD had only around 45 participants for a half-day session. We limited the number of applications, as I didn't have time to make a series again by that time."

What new knowledge did attendees receive from you?

"Drupal is not popular in Rwanda and 2017 was the first time we organized GTD. So the training included basics like: introduction to Drupal, Drupal installation, Drupal opportunities, and what is the Drupal community and how does it works. We used 6 hours per day for this training."

2018 is off to a great start

It's exciting to consider the momentum created at the 17 different locations that held GTD events this past weekend. Thanks to all the organizers and groups/companies who made these events possible! Here goes a lot of thanks in no particular order:

In Chisinau, Moldova, Drupal Moldova Association, Sergiu Nagailic (nikro), Anya Abchiche (anyaabchiche), Nicoleta Nagailic (afinika), Irina Basiul, Vladimir Melnic (vladimir-m), Alexei Seremet (alexeiseremet), Alex Goja (agoja), Mihaela Mirza, USAID Moldova and the Swedish Government, Adyax, and iHUB Chisinau.

Online, Wayne Eaker (zengenuity) at DrupalTutor.

Also online, David Needham (davidneedham) along with Drew Gorton (dgorton), Tessa Kriesel (tessak22), and Dwayne McDaniel (mcdwayne) at Pantheon.

In Managua, Nicaragua, Drupal Nicaragua along with Maurcio Dinarte (dinarcon) at Agaric.

In Eger, Hungary, Roland Molnár (roland.molnar) and Labor Association.

In Leeds, UK, Crispin Read (crispin) at Drupal Apprenticeship Scheme and Rachel Lawson (rachel_norfolk).

In Munich, Germany, Johannes Haseitl (derhasi), Jörg Matheisen (joergM), Serhad Serhad Güldürsün (D_D), Rouven Volk (rvolk), and Inviqa and undpaul.

In Porto, Lisbon, Drupal Porto, Omibee, Ricardo Marcelino (rfmarcelino), Adriana Vaz (adrianavaz), Beatriz Cunha (beatriz-cunha), João Machado (joum), and Filipe Pereira (fmfpereira).

In Tokyo, Japan, Kazu Hodota (hodota) at Gennai3 Corporation.

In Conil, Spain, Drupal Conil, 1xINTERNET and Forcontu.

In Peshawar, Pakistan, S M Azmat Shah (Drupak) at Drupak.

In Brisbane and Melbourne, Australia, Vladimir Roudakov (vladimiraus) at TEstudIO.

In Boston, Kay VanValkenburgh (kay_v) and Leslie Glynn (leslieg) and the Boston Drupal Group.

In Stanford, everyone at Stanford Open Source Lab.

In Washington DC, Kirsten Burgard (bendygirl) of the Drupal4Gov team, along with Arash Farazdaghi (afarazdaghi), Virginia Nguyen (v7nguyen) (also Drupal4Gov), Eric Robbins (erobbins), Alek Snyder (alsnyder), Sara Kieffer-Hess (sarakh), Nick Massa (nxmassa), Alexandra Screven (ascreven), Heting Li, and Connor Hoehn, all from Booz Allen Hamilton. Gerardo Maldonado (g3r4), John Shortess (johnshortess), Carla Briceno (chbriceno), and Rich Allen (richardcallen2386), all from Bixal. Jerome Wiley (jeromewiley) from Government CIO Magazine. Dan Schiavone (schiavone) from Snakehill/Drupal4Gov. Matt Mendonca (mattmendonca) at NIST. Jessica Dearie (jdearie) at EPA/Drupal4Gov.

GTD is happening again in March, June, September, and December. Anyone in the community can participate, and if you want a little advice on getting started, check out the GTD group where you can find the GTD Working Group if you need help.

Acro Media: Migrate Drupal Sprint Recap - Almost There!!!

30. Januar 2018 - 18:41

Sprint Date: January 11 & 12, 2018

I knew it was going to be a good few days of sprinting when the first of our team (Vicki Spagnolo) pinged the group in IRC saying she was getting started. You see, this was a virtual sprint and Vicki, being in New Zealand, starts well before the rest of us. The excitement she had going into the sprint was contagious.

Bright and early, we had our first stand-up call on Google Hangouts. We discussed all of the tasks for the next few days and dove right into working on code. A lot of the benefit of a sprint is having others around with focus to review code, so we did a lot of reviews of each other's work. Lots of issues made it from “Needs Review” to “Reviewed and Tested by the Community” (RTBC), and we had several Core committers hanging out to assist us. Special thanks to Gabor Hojtsoy, Lee Rowlands and Jess Myrbo for all their commits over the 2 day sprint.

Some progress stats. We went into the sprint with 3 Core migrate modules that weren't marked as stable. The Migrate API module went stable during the sprint. The Migrate Drupal User Interface module had one blocking issues resolved, leaving a single blocker remaining (UPDATE: this has been resolved, too). Finally, the big one, the Migrate Drupal module itself has only a few limited blockers remaining, all related to i18n/multilingual use cases.

A great benefit of sprinting with a group is that we had people available who can provide guidance and direction on architecture. With the group, we landed on a good plan of action for all the remaining i18n/multilingual issues. We opened the sprint and saw significant progress on the first step in that plan. It isn't RTBC yet, but it should go soon. After which, we have to leverage the building blocks it provides for the remaining i18n/multilingual issues.

Yes, it's down to just a few issues. Once they are wrapped up (and we saw great progress, so I'm hoping soon), all of Migrate Drupal will go stable. I also expect that the Migrate Drupal UI module will go stable at the same time.

Summary:
  • 5 Critical blockers across the entire Migrate sub-system.
  • Migrate API module went stable! Only two more to go.
  • 25 issues worked on; all with significant progress seen during the sprint.
  • 15 commits, of which 10 were serious improvements in API documentation.
  • Remaining release blockers can be found here. Filter issue priority to ‘critical’. Feel free to jump in and help!
Modules involved: Special thanks:

A huge thanks to all the sprinter: GaborHojtsy (Gabor Hojtsy), heddn (Lucas Hedding), xjm (Jess Mybro), larowlan (Lee Rowlands), masipila (Markus Sipilä), maxocub (Maxime Turcotte), phenaproxima (Adam Hoenich), quietone (Vicki Spagnolo).

Another big thanks to all the corporate sponsors: Acquia, Acro Media and Savoir-Faire Linux.

Migrate your site!

Do you have an ecommerce site that you want to migrate to Drupal 8, but not sure how? We can help! Contact us to discuss your migration with one of our experts, no strings attached.

Web Wash: How to Implement Layouts using Bootstrap Layouts in Drupal 8

30. Januar 2018 - 18:00

If you're planning to use Bootstrap on your Drupal 8 site, the first obvious thing to do is download and set up the Bootstrap theme. Then, during the site building process, there will come the point where you need to create a few layouts. These layouts could be used for content types with Display Suite, or for custom pages using Panels.

Implementing layouts using the Bootstrap grid system is simple thanks to the Bootstrap Layouts module.

Bootstrap Layouts is a module that ships a bunch of prebuilt layouts using the grid system in Bootstrap. Best of all, these layouts can be used between Display Suite and Panels, or any module which supports the Layout Discovery module

The layouts are configurable through Drupal's administrative UI. For example, you can adjust the width of a two column layout by choosing grid CSS classes from a multi-select field.

Valuebound: An overview of Modules & Controllers in AngularJs

30. Januar 2018 - 12:25

(This is the third post in my series on the AngularJS; check out my initial piece covering ‘An intro to AngularJS’ and ‘Data-binding methods in AngularJS’.

Before having a look at AngularJS’ components, terms and terminologies, let’s make sure everyone is on the same page. If not then you can go through our previous blogs “Introduction to AngularJs” and “…

Amazee Labs: Recap of our Zurich Drupal Meetup 2018

30. Januar 2018 - 11:50
Recap of our Zurich Drupal Meetup 2018

Two weeks ago the first edition of the Drupal meetup 2018 (also my first ever) took place at our office. Besides discussing Drupal Community activities for 2018 in Switzerland,  Amazee Group CTO and Partner, Michael Schmid gave a presentation on «The possible future of React, GraphQL, and Drupal».

Vijay Dubb Tue, 01/30/2018 - 10:50

It was great to learn about how Amazee both tackled and created a decoupled Frontend and Backend Drupal site, and inspiring to have met so many great people from the Drupal community.

Presentation Recap

Especially for someone like me, who is new to the Drupal world, the presentation gave some significant insight. Here's how it helped me to further develop my understanding of all things Drupal, React and GraphQL.

GraphQL and Starwars

The first part was all about GraphQL and Star Wars, well, the Star Wars part was the API used for the demo. Having never used GraphQL much before, I appreciated the brief introduction to GraphQL and how much better it is to the regular rest API. You are welcome learn more about GraphQL from our blog posts.

Frontend tools

The second part was about the Frontend tools used: React, Apollo, and Redux. I knew at least 40% of this section already, thus having experience in this area, helped me feel comfortable. By implementing further education into our average working day, Amazee Labs is looking to become one of the leading agencies using React and Drupal.

It all comes together

After an introduction as to how both tools work separately, we now got to the most exciting part: understanding how both GraphQL and React work together with Drupal. During this section, I came to learn that there was an open source demo application that had been created by Amazee Labs. This got me excited, as it meant that I could not just use at Amazee Labs but am able to play with it in my own projects. Personally, I think it is pretty awesome when any company open sources everything, as it allows the community to both learn and contribute. Anyways, back to the point: is React and GraphQL with Drupal in a decoupled ecosystem the future? It for sure could be, what I know for sure, is that it is Amazee Labs’ future, and we are very excited about it.

If you would like to play around with the demo application, then feel free to clone the repository. Trust me you won’t be disappointed.

Also, feel free to watch the full presentation, including question and answers below.

About the future

There were many suggestions after the presentation. Heres a summary of the most notable discussion points.

Upcoming Meetups

A few meetups were arranged for the following dates.

  • Tuesday 20th of February at Liip
  • Wednesday 21st of March at Attribute
  • Wednesday 25th of April at Unic

There was also a discussion regarding meetups in other locations within Switzerland. Car sharing was suggested, to make this a feasible possibility. Fun. Right? 

The timing for the next meetup was another suggestion, where the Doors could open at 18:30 and the meetup start at 19:00.

Other topics we discussed
  • The next Drupal Mountain Camp
  • Drupal Switzerland Association

Including new conference topics, collaborations, case studies, and even a suggestion to redesign the current Drupal Switzerland site. After everything considered, I believe that the near future for the Local Drupal Community looks bright.

Thank you to all who participated and attended our meetup.

So what’s next?

Well, that would be our next meetup, which will be about the Ultimate Drupal Reference and will take place at Liip AG. Sign up here at meetup.com. See you there.

Jim Birch: I would like to nominate Kevin Thull for this year's Aaron Winborn Award

30. Januar 2018 - 5:03

I would like to nominate Kevin Thull (kthull on Drupal.org) for this year's Aaron Winborn Award.  

If you have been to a Drupal camp in the last few years, you may have seen Kevin sprinting...  

...Sprinting from session room to session room making sure the speaker hit the big red record button.  

Kevin contributes to the Drupal community in a way that is different and unique, he helps record the sessions on video and posts them for free online.  If you haven't been to one of these camps, I hope you have taken the opportunity to watch some of the over 500 session recordings that he has posted online for all of us to learn from and advance our careers.

You can find a majority of the videos linked here:
https://www.youtube.com/channel/UCWf6JWaRR8GIHbrZyDFhV3A/channels

You can find a listing of the camps he has recorded here:
https://www.drupal.org/u/kthull

I first met Kevin in 2013 at the first Drupal Camp Fox Valley.  A mutual friend asked if they could borrow a video camera as a backup to their session recording setup.  Turns out, they didn't need it as Kevin had already started dialing in his system.

He has a great series of blog posts at his personal site documenting his recording kit at http://www.bluedropshop.com/

Read more

Jim Birch: I would like to nominate Kevin Thull for this year's Aaron Winborn Award

30. Januar 2018 - 5:03

I would like to nominate Kevin Thull (kthull on Drupal.org) for this year's Aaron Winborn Award.  

If you have been to a Drupal camp in the last few years, you may have seen Kevin sprinting...  

...Sprinting from session room to session room making sure the speaker hit the big red record button.  

Kevin contributes to the Drupal community in a way that is different and unique, he helps record the sessions on video and posts them for free online.  If you haven't been to one of these camps, I hope you have taken the opportunity to watch some of the over 500 session recordings that he has posted online for all of us to learn from and advance our careers.

You can find a majority of the videos linked here:
https://www.youtube.com/channel/UCWf6JWaRR8GIHbrZyDFhV3A/channels

You can find a listing of the camps he has recorded here:
https://www.drupal.org/u/kthull

I first met Kevin in 2013 at the first Drupal Camp Fox Valley.  A mutual friend asked if they could borrow a video camera as a backup to their session recording setup.  Turns out, they didn't need it as Kevin had already started dialing in his system.

He has a great series of blog posts at his personal site documenting his recording kit at http://www.bluedropshop.com/

Read more

Agiledrop.com Blog: AGILEDROP: The quality of life and the effect it has on work performance

30. Januar 2018 - 4:00
The way we work is constantly changing. The possibility to work remotely or distributed is something that has been with us for a long time. Even before the industrial revolution people tended to work at home. All professions we knew back in the time were working from their home. With the advent of the industrial revolution that has begun to change. Our ancestors were starting to work in organisations. The divide between what is home and what is workplace was getting deeper. As we developed more and more, our needs were bigger and bigger.    From shoes to cars  It may sound a little bit… READ MORE

Drupal Association blog: 2016 990 and Audit

29. Januar 2018 - 23:46

Last year, the Drupal Association committed to not only providing more transparency into our financials, but also more clarity about where our funds come from and what they fund.

We completed our 2016 Audit and official financial reporting at the end of 2017. This post gives insight into 1) the audit 2) the 990s (our official financial report for the year) and 3) a new financial report called the “Weather Report”. 990s provide a one-year snapshot of program financials, but some of our programs have two years of expenses, like DrupalCon, so just looking at the 990s never gives the exact insight into how our events perform. The weather report provides this clarity. It will expand over time to provide clarity for more of our programs as well.

We did a financial audit for 2016

Audits are a good thing. In fact, our operations department welcomes them and appreciates the feedback.

To assist our board in their fiduciary obligations, we strive to conduct audits every other year. In the years that we don’t do an audit, we contract with our CPA firm, McDonald Jacobs, to do a financial review.

We conduct an audit for several reasons:

  • to demonstrate our commitment to financial transparency.
  • to assure our community that we follow appropriate procedures to ensure that the community funds are being handled with care.
  • to give our board of directors outside assurance that the financial statements are free of material misstatements.

For our 2016 audit, our auditors focused on three points:

  • Proper recording of income and expense: our auditors ensure that our financial statements are an accurate representation of the business we have conducted. Did we record transactions on the right date, to the right account, and the right class? In other words, if we said that 2016 revenue was a certain amount, is that really true?
  • Financial controls: preventing fraud is an important part of the audit. It is important to put the kinds of controls in place that can prevent common types of fraud, such as forged checks and payroll changes. Our auditors looked to see that there are two sets of eyes on every transaction, and that documentation is provided to verify expenses and check requests.
  • Policies and procedures: there are laws and regulations that require we have certain policies in place at our organization. Our auditors looked at our current policies to ensure they were in place and, in some cases, had been reviewed by the board and staff.

The primary goal of this audit is for our auditor to express an opinion on two aspects of the financial statements of the Association: the financial statements are fairly presented, and they are in accordance with generally accepted accounting principles (GAAP). Generally accepted accounting principles are the accepted body of accounting rules and policies established by the accounting profession. The purpose of these rules is to promote consistency and fairness in financial reporting throughout the business community. These principles provide comparability of financial information.

Our audit for 2016 is complete and has been reviewed and approved by the board. The results of our audit can be found here

In short, we received a clean bill of health with one recommendation from our Auditors (which is VERY good).  It is in how we open and deposit incoming checks:

"Controls over Checks Received
With the elimination of our physical office during 2016, the control of segregating certain duties has been eliminated. The Accountant now processes checks received in the mail. In this situation where the Accountant has access to the physical asset and the accounting records, there is an opportunity to misappropriate a check and void or delete the invoice billing in the accounting system. To mitigate the risk of this occurring without detection, the following recommendations can provide additional control:

  • As part of the monthly reconciliation process performed by the outside CPA firm, a review of voided and/or deleted invoices can be done with appropriate follow up and resolution.
  • Consider using a lockbox with your bank."

While our security checks are tight, adding the bank lock box process was suggested by our auditors to add an additional layer of security to prevent potential fraudulent activity.

A lockbox is a physical post office box controlled by the bank.  Checks are directed to this post office box, or “lockbox”, and checks are opened and scanned by bank employees.  Those checks are deposited into our account, and scans of the checks are uploaded and recorded in our banking portal.  This can be accessed and seen by all members of our accounting team.  Checks are now recorded into our accounting system by a different team member, since checks are now digitized and deposited by the bank - and are no longer physically deposited by only one team member.

Tax filing: The IRS Form 990

Once the audit is finished, our CPA can complete the 990 tax return for the year.

All U.S.-based 501c3 exempt organizations are required to file a 990 each year. Additionally, this form is also filed with state tax departments as well. The 990 is used by the IRS and state regulators to ensure that non-profits continue to serve their stated charitable activities. The 990 can be helpful when you are reviewing our programs and finances, but know this is only a “snapshot” of our year.  

You can find our past 990s here.

Here are some general points, when reviewing our 990:

FORM 990, PART I—REVENUES, EXPENSES, AND CHANGES IN NET ASSETS OR FUND BALANCES

Lines 8-12 indicates our yearly revenue. Not only how much total revenue (line 12), but also where we have earned our income, broken out into four groups. Line 12 is the most important: total income for the year which ended at $5.1 million.

Lines 13-18 shows expenses for the year which totaled $6.1 million for the year.

Cash Reserves are noted on line 20 of page 1.  Our year ended with 186k in net assets. The 990 has a comparison of the net assets from last year (or the beginning of the year) and the end of the current year, as well as illustrates the total assets and liabilities of the Association.  We ended 2015 with -$92K, and with our refocus in 2016 we closed the year up, at $185k in net assets.

FORM 990, PART II—SIGNATURE BLOCK

Sign off on our 990 by our Treasurer Tiffany Farriss & CPA Representative McDonald Jacobs partner Sang Ahn.

FORM 990, PART III—STATEMENT OF PROGRAM SERVICE ACCOMPLISHMENTS

In Part III, we describe the activities performed in the previous year that adhere to our 501c3 designation.  You can see here that Drupal.org, DrupalCon and our Fiscal Sponsorship programs are highlighted noting the expenses and income for each program.  Keep in mind that this is only a year snapshot, as DrupalCons span a couple of years, ramping up and winding down.

FORM 990, PART IV -  CHECKLIST OF REQUIRED SCHEDULES

This is a checklist of schedules that must be completed and accompany the 990 filing.  Any “yes” answers checked here will produce a schedule to explain the “yes” answer in detail.

FORM 990, PART V - STATEMENTS REGARDING OTHER IRS FILINGS AND TAX COMPLIANCE

This is a place for statements about other IRS filings and tax compliance such as receiving tax deductible contributions, and noting that we have provided donors with required substantiation for their donations.

FORM 990, PART VI - GOVERNANCE, MANAGEMENT AND DISCLOSURE

This is for us to note detailed information regarding our governing body, management, and policies of our organization.

FORM 990, PART VII - LIST OF OFFICERS, DIRECTORS, TRUSTEES AND KEY EMPLOYEES

Part VII lists our board and staff who are responsible in whole or in part for the operations of an organization. These entries do include titles and compensation of key employees.

Section B—Compensation of the Five Highest Paid Independent Contractors for Professional Services
We list any of our contractors, if we have paid them more than $50,000, on this schedule.

FORM 990, PART VIII - Statement of Revenue

This is a snapshot of where our revenue comes from, what is exempt or not exempt as taxable income. For 2016, $573,247 was considered taxable.

FORM 990, Part IX Statement of Functional Expenses

This section classifies the total amount earned for the year into three different buckets; fundraising, general, and program expense. These are expenses related to running those three different types of programs.

FORM 990, Part X, XI and XII Balance Sheet

This is a comparison of our 2016 balance sheet from beginning of the year to the end of the year, along with notes about the account method we use (accrual) and independent auditor and who is responsible for oversight.

Additional Filing to the 990, Schedule A — Public Charity Status and Public Support

A tax exempt organization must meet certain public support tests in order to maintain its status as a public charity. Schedule A provides an opportunity to see the various sources of revenue have increased or declined over the last four or five years. Please be aware that the definitions of revenue for the purposes of the support schedule are not directly comparable to Part I of the Form 990.

Additional various schedules following the 990, show large contributions (5k +), activities outside of the United States (ie grants given outside of the US), assets depreciation and other various activities.

Now that our 2016 990 has been reviewed by the board and approved, we have filed it. From there we are required to post the return publicly, which we do here on our website. 

Weather Report — Review of 2016

As part of our work to ensure financial health, our virtual CPA firm Summit compiles a “weather report” monthly so we can compare particular data points and see if we are reaching to our set KPIs. 

In closing the year 2016, Summit prepared this report for the year.

Revenue —the Drupal Association creates income in four different ways:

  • Advertising, which consists of ad sales on Drupal.org.
  • Events - DrupalCon income
  • Fundraising consisting of any donations or membership sales
  • Other Income, which comprises income from digital sponsors, Supporting Partner sales and time and material projects.

The graph below shows the breakdown of revenue for 2016.

Expenses — The Drupal Association has expenses which are categorized in the following ways:

  • Production Expense:These are the costs associated directly with earning revenue (for example: paying employees who work directly with the revenue streams described above, direct event costs, marketing event costs, IT costs, etc.)
  • Administrative Costs: These are general costs associated with running the organization (for example: administrative employees, accounting fees, insurance, professional fees, etc)
  • Sales and Marketing Costs: These are costs for marketing the Drupal organization (mostly Marketing employees)
  • Facility Costs: These are costs associated with the physical office space employees work. (Drupal moved a distributed workforce in the end of 2016, so these costs will be minimal going forward.)

KPI Goals — Moving into 2017, we set the following goals for Drupal.org.

  • Cash Reserve – Have 30% of forecasted YTD revenue in the bank.  As of the end of 2016 we have $397K (27% of the goal) in the bank.
  • Net Income – Have a Year End Net Income greater than 10%.  In 2016 we achieved a Net Income margin of -1%.

Event Summary — The graphs below present the 2016 and 2015 DrupalCon events

2016 results show us in the middle of our financial recovery.  As we moved into 2017, we took deep looks into our operations and programs to ensure financial health and growth. We will have a 2017 update after we close our financial review and 990 filing for the year.

We are thankful for the great team work that went into new financial reporting process and the resulting data to help us push towards our financial goals. Additionally, and as always, we are truly thankful to our financial contributors who provide the financial fuel for us to do our mission work.

MTech, LLC: Two Down, One to Go

29. Januar 2018 - 18:02
Two Down, One to Go

Today, the final blocker for Migrate Drupal UI was committed. That leaves only a series of complicated internationalization (i18n) issues to get resolved for Migrate Drupal before all of migrate in all of Drupal core can be considered stable. Lots of effort by lots of people have gone into the UI. Thanks to each one of them.

If you have been on the fence, waiting to upgrade, now is the time to do that. 80 percent of all Drupal 6 and Drupal 7 sites do not use i18n features. If you are in that large camp, just waiting to upgrade, then the upgrade path for you is fully stable NOW.

Lucas Hedding Mon, 01/29/2018 - 10:02

Chapter Three: Dreditor Refresh: A New User Style for Dreditor

29. Januar 2018 - 16:26

Dreditor is a beloved and indispensable tool, in the form of a browser extension, that enhances project issue pages on Drupal.org. When it comes to reviewing patches, it turns what would just be a plain text file into a feature rich interface for reviewing patches, allowing users to easily select and comment on lines of code, which then get pasted into the comment form, as properly formatted HTML.

I've been lucky to have some extra community time here at Chapter Three over the past couple of weeks. While perusing the core issue queue, I decided to resurrect an old User Style I created for Dreditor back in 2009, and give Dreditor a little refresh. You can install the Dreditor Refresh style with Stylish here. Make sure you also have Dreditor installed, and have logged into Drupal.org.