Newsfeeds

Lullabot: Drupal 8 Composer Best Practices

Planet Drupal - 31 January 2018 - 9:45am

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.

Categories: Drupal

Level up your skills at the GDC 2018 Technical Artist Bootcamp!

Social/Online Games - Gamasutra - 31 January 2018 - 9:12am

The GDC 2018 Technical Artist Bootcamp is shaping up to be a fantastic day-long learning opportunity, with expert sessions that offer deep dives into different facets of art & tech in game production. ...

Categories: Game Theory & Design

Way of the Fighter Available For Pre-Order

Tabletop Gaming News - 31 January 2018 - 9:00am
I’ve got friends who have been showing off that they’ve been getting their Kickstarter editions of Way of the Fighter. They’re excited about the old-school fighting game feel right on their tabletop. Well, for those that weren’t part of the Kickstarter campaign, their wait is almost over, too. Soda Pop is celebrating Valentine’s Day with […]
Categories: Game Theory & Design

Fantasy Flight Announces Pre-order Bonus For Star Wars: Legion

Tabletop Gaming News - 31 January 2018 - 8:00am
We all know gamers want to be the first ones with the new toys when they’re released. Nobody likes to wait for their awesome figures. So pre-ordering is a good way to make sure you get yours first. Well, those that are pre-ordering Star Wars: Legion through Fantasy Flight’s website will get an extra bonus. […]
Categories: Game Theory & Design

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

Planet Drupal - 31 January 2018 - 7:46am

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. 

 

Categories: Drupal

Infinity Cargo Box Giveaway Happening Today

Tabletop Gaming News - 31 January 2018 - 7:00am
Corvus Belli is having the first of their giveaways for the year. This time, they’re teaming up with Bandua Wargames to give you a free Infinity Cargo Box. I mean, who doesn’t like getting things for free? Check out their page so you can enter your name into the drawing. From the announcement (note: all […]
Categories: Game Theory & Design

InternetDevels: Passing the baton of your contrib module

Planet Drupal - 31 January 2018 - 6:55am

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
Categories: Drupal

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

Planet Drupal - 31 January 2018 - 6:38am

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.

Categories: Drupal

Commerce Import

New Drupal Modules - 31 January 2018 - 6:34am
Categories: Drupal

The Road To War | The AI of Total War (Part 1) - by Tommy Thompson

Gamasutra.com Blogs - 31 January 2018 - 6:14am
Real-time strategy games are some of the most taxing for AI systems to build responsive and dynamic opponents. In this first in a series I look at the AI innovations and features of The Creative Assembly's 'Total War' franchise.
Categories: Game Theory & Design

Meeple Like Us, January 2017 - by Michael Heron

Gamasutra.com Blogs - 31 January 2018 - 6:10am
This is what's been going on in the world of Meeple Like Us in January of 2018.
Categories: Game Theory & Design

Game Idea a Day: Technoconway - by Greg Costikyan

Gamasutra.com Blogs - 31 January 2018 - 6:09am
A two-player game based on Conway's Game of Life, with emergent aspects of techno music.
Categories: Game Theory & Design

Cuphead, Cruelty, and Selling Unfairness to You. - by Jeff Vogel

Gamasutra.com Blogs - 31 January 2018 - 6:09am
A breakdown of the many different ways Cuphead uses randomness to create unpredictable exciting fights. This and other example show how randomness, unpredictability, and unfairness can make a game very tempting to a certain (large) class of gamer.
Categories: Game Theory & Design

Looking for inspiration? Here are some great ways for gamers to give back - by Lottie Wilson

Gamasutra.com Blogs - 31 January 2018 - 6:08am
Read about how you can get involved in charity work and still pursue your passion for gaming!
Categories: Game Theory & Design

Asmodee And Rebel Games Form Partnership

Tabletop Gaming News - 31 January 2018 - 6:00am
Asmodee has created another partnership with a gaming company, adding to their already impressive resume of those under their umbrella. In this case, it’s Rebel Games from Poland. From the announcement (sorry about the Google Translate, the original’s in Polish): The Asmodee Group today announced that talks on the takeover of Rebel Sp. z o. […]
Categories: Game Theory & Design

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

Planet Drupal - 31 January 2018 - 6:00am
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.
Categories: Drupal

Augmented reality helps surgeons to 'see through' tissue and reconnect blood vessels

Virtual Reality - Science Daily - 31 January 2018 - 5:58am
Using augmented reality in the operating theatre could help surgeons to improve the outcome of reconstructive surgery for patients.
Categories: Virtual Reality

Entity theme suggestions

New Drupal Modules - 31 January 2018 - 4:33am

This module provides a plugin which can define new theme suggestions for entities. It replaces hook_theme_suggetions_alter(). The module provides a base suggestions class, "EntityThemeSuggestionsBase", that can be extended by any plugin so that it inherits the most common theme suggestions.

Usage

Create a class in "Plugin/ThemeSuggestions" directory structure of your module,
that implements "EntityThemeSuggestionsInterface" interface. The
"alterSuggestions" function should return all the theme suggestions for your entity.

Categories: Drupal

Entity resource layer

New Drupal Modules - 31 January 2018 - 4:02am

Provides plugins that can operate above the default core REST resource plugins specifically for entities. By this allows you to easily serve and create your entities the way that you want. But this is not all, read on!

This module is provided solely for developers and has no use for end users as is. The documentation below assumes you have a basic knowledge and experience with the core REST API.

Categories: Drupal

Image Wrapper

New Drupal Modules - 31 January 2018 - 3:54am

Image Wrapper helps you to add wrapper to images which are already uploaded through CKEditor, IMCE. Image wrapper will be applied based on the content type selected in back-end configuration.

NOTE: Please don't use Body style Image while using this module.

INSTALLTION

  • Copy image_wrapper directory to your modules directory.
  • Enable the module at module configuration page.

CONFIGURATION

Categories: Drupal

Pages

Subscribe to As If Productions aggregator