Newsfeeds

The iMessage is the Medium - by William Volk

Gamasutra.com Blogs - 19 September 2016 - 7:14am
With iOS 10, iMessage now has 3rd party apps. Because these apps sit in the context of a chat session, and players can add apps during a chat session, this makes player to player social gaming far more appealing by removing friction in the process.
Categories: Game Theory & Design

From an opportunity to the final product. Tutorial Master Postmortem - Idea and Development - by Elmar Talibzade

Gamasutra.com Blogs - 19 September 2016 - 7:12am
Ideas come in various forms at various times. The idea of the Tutorial Master has come under rather unusual circumstances.
Categories: Game Theory & Design

Lessons from the Skulldug! ARG - by Jon Gill

Gamasutra.com Blogs - 19 September 2016 - 7:11am
Skulldug! designer Jon Gill shares what his two-man tabletop studio learned when they created and ran a promotional alternate reality game for their crowdfunding backers.
Categories: Game Theory & Design

Why The Video Game Console Refuses to Die - by Jerry Chew

Gamasutra.com Blogs - 19 September 2016 - 7:11am
We have predicted the death of consoles countless times ages  ago. But as the years pass by, we still see Sony & Microsoft announcing positive growth with their own game consoles. How is this possible?
Categories: Game Theory & Design

On the (Non) Resurgence of Couch Co-op Gaming - by Steve Bailey

Gamasutra.com Blogs - 19 September 2016 - 7:10am
In recent years, I've often heard mention that couch co-op is seeing a resurgence. From where I was sitting, it never went away in the first place.
Categories: Game Theory & Design

Showcasing your game at Super Smash Con - by Bogdan Iliesiu

Gamasutra.com Blogs - 19 September 2016 - 7:08am
I’d like to share with you our experience with showcasing our upcoming game at various gaming events. Some are huge, well known events, like Gamescom and PAX, while others are more focused, on fighting games in our case, like Super Smash Con.
Categories: Game Theory & Design

Gale Force Nice Previews Family Guy: Stewie’s Sexy Party Game

Tabletop Gaming News - 19 September 2016 - 7:00am
Giggity. Family Guy has been a cultural phenomenon since its original launch. How many quotes do you know from the show? I’m guessing a lot, and probably more than you even realize. Soon, Gale Force Nine will be bringing the irreverent and slightly raunchy humor to your living rooms via Stewie’s Sexy Party Game. They’ve […]
Categories: Game Theory & Design

Nuvole: Pimp your Behat Drupal Extension and rule the world

Planet Drupal - 19 September 2016 - 7:00am
Make the most out of your Behat tests by using custom contexts, dependency injection and much more.

This post is an excerpt from the topics covered by our DrupalCon Dublin training: Drupal 8 Development - Workflows and Tools.

At Nuvole we consider writing good tests as a fundamental part of development and, when it comes to testing a complex site, there is nothing better than extensive behavioral tests using Behat. The benefits of such a choice are quite obvious:

  • Tests are very easy to write.
  • Behat scenarios serve as a solid communication mean between business and developers.

As a site grows in complexity, however, the default step definitions provided by the excellent Behat Drupal Extension might not be specific enough and you will quickly find yourself adding custom step to your FeatureContext or creating custom Behat contexts, as advocated by all official documentation.

This is all fine except that your boilerplate test code might soon start to grow into a non-reusable, non-tested bunch of code.

Enter Nuvole's Behat Drupal Extension.

Nuvole's Behat Drupal Extension

Nuvole's Behat Drupal Extension is built on the shoulders of the popular Behat Drupal Extension and it focuses on step re-usability and testability by allowing developers to:

  • Organize their code in services by providing a YAML service description file, pretty much like we all are used to do nowadays with Drupal 8.
  • Override default Drupal Behat Extension services with their own.
  • Benefit of many ready-to-use contexts that are provided by the extension out of the box.
Installation and setup

Install Nuvole's Behat Drupal Extension with Composer by running:

bash $ composer require nuvoleweb/drupal-behat

Setup the extension by following the Quick start section available on the original Behat Drupal Extension page, just use NuvoleWeb\Drupal\DrupalExtension instead of the native Drupal\DrupalExtension in your behat.yml as shown below:

default:
  suites:
    default:
      contexts:
        - Drupal\DrupalExtension\Context\DrupalContext
        - NuvoleWeb\Drupal\DrupalExtension\Context\DrupalContext
        ...
  extensions:
    Behat\MinkExtension:
      goutte: ~
      ...
    # Use "NuvoleWeb\Drupal\DrupalExtension" instead of "Drupal\DrupalExtension".
    NuvoleWeb\Drupal\DrupalExtension:
      api_driver: "drupal"
      ...
      services: "tests/my_services.yml"
      text:
        node_submit_label: "Save and publish" "Service container"-aware Contexts

All contexts extending \NuvoleWeb\Drupal\DrupalExtension\Context\RawDrupalContext and \NuvoleWeb\Drupal\DrupalExtension\Context\RawMinkContext are provided with direct access to the current Behat service container. Developers can also define their own services by adding a YAML description file to their project and setting the services: parameter to point to its current location (as shown above).

The service description file can describe both custom services and override already defined services. For example, given a tests/my_services.yml containing:

services:
  your.own.namespace.hello_world:
    class: Your\Own\Namespace\HelloWorldService

Then all contexts extending \NW\D\DE\C\RawDrupalContext or \NW\D\DE\C\RawMinkContext will be able to access that service by just calling:

<?php
class TestContext extends RawDrupalContext {

  /**
   * Assert service.
   *
   * @Then I say hello
   */
  public function assertHelloWorld() {
    $this->getContainer()->get('your.own.namespace.hello_world')->sayHello();
  }

}
?>

The your.own.namespace.hello_world service class itself can be easily tested using PHPUnit. Also, since Behat uses Symfony's Service Container you can list services your service depends on as arguments so to remove any hardcoded dependency, following Dependency Injection best practices.

Override existing services

Say that, while working on your Drupal 7 project, you have defined a step that publishes a node given its content type and title and you want to use the same exact step on your Drupal 8 project, something like:

Given I publish the node of type "page" and title "My page title"

The problem here is that the actual API calls to load and save a node differs between Drupal 7 and Drupal 8.

The solution is to override the default Drupal core services specifying your own classes in your tests/my_services.yml:

parameters:
  # Overrides Nuvole's Drupal Extension Drupal 7 core class.
  drupal.driver.cores.7.class: Your\Own\Namespace\Driver\Cores\Drupal7
  # Overrides Nuvole's Drupal Extension Drupal 8 core class.
  drupal.driver.cores.8.class: Your\Own\Namespace\Driver\Cores\Drupal8

services:
  your.own.namespace.hello_world:
    class: Your\Own\Namespace\HelloWorldService

You'll then delegate the core-specific business logic to the new core classes allowing your custom step to be transparently run on both Drupal 7 and Drupal 8. Such a step would look like:

<?php
class TestContext extends RawDrupalContext {

  /**
   * @Given I publish the node of type :type and title :title
   */
  public function iPublishTheNodeOfTypeAndTitle($type, $title) {
    $this->getCore()->publishNode($type, $title);
  }

...
?> Ready to use contexts

The extension also provides some utility contexts that you can use right away in your tests. Below a quick overview of what's currently available:

Context Description NuvoleWeb\Drupal\DrupalExtension\Context\DrupalContext
Standard Drupal context. You want to use this one next to (and not instead of) Drupal\DrupalExtension\Context\DrupalContext. NuvoleWeb\Drupal\DrupalExtension\Context\ContentContext
Perform operations on Content. NuvoleWeb\Drupal\DrupalExtension\Context\CKEditorContext
Allows to interact with CKEditor components on your page. NuvoleWeb\Drupal\DrupalExtension\Context\ResponsiveContext:
  devices:
    mobile_portrait: 360x640
    mobile_landscape: 640x360
    tablet_portrait: 768x1024
    tablet_landscape: 1024x768
    laptop: 1280x800
    desktop: 2560x1440
Resize the browser according to the specified devices, useful for testing responsive behaviors. NuvoleWeb\Drupal\DrupalExtension\Context\PositionContext
Check position of elements on the page. NuvoleWeb\Drupal\DrupalExtension\Context\ChosenFieldContext
Interact with Chosen elements on the page.

We will share more steps in the future enriching the current contexts as well as providing new ones so keep an eye on the project repository!

Disclaimer

At the moment only Drupal 8 is supported but we will add Drupal 7 support ASAP (yes, it's as easy as providing missing Drupal 7 driver core methods and adding tests).

Tags: Drupal PlanetBehatTest Driven DevelopmentTrainingDrupalCon
Categories: Drupal

Showcasing your game at EVO - by Bogdan Iliesiu

Gamasutra.com Blogs - 19 September 2016 - 6:52am
I’d like to share with you our experience with showcasing our upcoming game at various gaming events. Some are huge, well known events, like Gamescom and PAX, while others are more focused, on fighting games in our case, like EVO.
Categories: Game Theory & Design

New Beyond the Gates of Antares Releases From Warlord Games

Tabletop Gaming News - 19 September 2016 - 6:00am
Monday morning and we’re headed for the stars. Warlord Games has a couple of new releases available for Beyond the Gates of Antares over in their webshop. You’ve got a Freeborn NuHu Renegade Meld as well as a Ghar Outcast Rebel Creeper. The new NuHu Renegade Meld comes in both male and female figures (nice […]
Categories: Game Theory & Design

Media entity Tumblr

New Drupal Modules - 19 September 2016 - 5:15am

Tumblr integration for Media entity module

Categories: Drupal

Media entity facebook

New Drupal Modules - 19 September 2016 - 5:14am

Facebook integration for Media entity module

Categories: Drupal

Steal This: No Forests On Flat Earth

Gnome Stew - 19 September 2016 - 1:21am

Fringe conspiracy theories are often fertile ground for gaming ideas, but the recent “no forests on flat earth” is so amazingly bizarre that it towers above the competition for material to steal for your game. The original video is an hour and a half long and a bit of a mess, but I’ve embedded it below. Of better value is an article from The Atlantic that sums up the “theory” and gives some interesting context that I won’t get into here but is worth reading.

The general gist of the theory is this: what we know as trees aren’t really trees. Real trees were sky scraping multi kilometer high colossi. In the primordial era they sustained all life on the flat earth. But, some unknown entity used massive machines to clear cut the planet, forever devastating our ecosystem. In the modern era, the only reminder of this past are the massive broken stumps of these world trees which we now call mountains.

Oddly enough it’s apparently gaining some real traction out there, which always weirds me out a little. I’m for spreading fantasy and whimsy in the world, but things like this give me pause. Could that many people really just be running with it as a joke? But they have to be, right?

Here’s a laundry list of elements ripe for the plucking:

  • A cataclysmic extinction event
  • An entire world of world trees
  • A live earth
  • Living information matrices in organic matter
  • Alien forces literally tearing apart a planet
  • An all-connecting life-force
  • A slowly spreading rot of the world
  • The planet is a corpse
  • Symbolic magic

This world is a perfect campaign setting no matter how you slice it.

  • Pre-apocalypse you have a surreal setting where people live in massive world trees, among the colossal fauna that must surely exist in such a forest. Magic is ubiquitous and tied into the bio-memory of trees and a connected life force.
  • Post-apocalypse you have survivors struggling to stay alive without the life sustaining trees, the grand cities are gone, the beasts that once thrived are starving, feral, and just outside your doorstep.
  • Or go with during the apocalypse where parts of the world have been ravaged, refugees are streaming in from their destroyed cities, tensions are high and resources are strained, and the brave, foolhardy, and grim are fighting the hopeless fight even knowing that if they succeed in driving back the forces destroying the world, it may be too late.

It’s bizarre and surreal, sort of Lin Carter’s Green Star meets Jack Vance’s Dying Earth and given the successful kickstarter for Monte Cook’s upcoming surreal Invisible Sun RPG, this couldn’t have come at a better time for gaming.

Categories: Game Theory & Design

Aurelien Navarre: How to return the path to an enabled Drupal module or theme?

Planet Drupal - 19 September 2016 - 12:33am

In Drupal 7, it was fairly easy to retrieve the filesystem path for, say, enabled modules.

mysql> SELECT filename, name FROM system WHERE status = 1 AND name = "xmlsitemap"; +--------------------------------------------------------+------------+ | filename | name | +--------------------------------------------------------+------------+ | sites/all/modules/contrib/xmlsitemap/xmlsitemap.module | xmlsitemap | +--------------------------------------------------------+------------+ 1 row in set (0.00 sec)

Why would you do that? Simply because sometimes you can run into issues caused by duplicate .info files in the filesystem. A common error is when you're deleting a duplicate module or changing directories in the filesystem but the module is still registered in the database in its original location. This will make Drupal sad when it bootstraps.

When this happens, you need to know where a particular module is being loaded from. You may compare the results of the above MySQL query with a simple Linux command to find all occurrences of those filenames in your Drupal docroot and try to narrow down the issue (e.g. is the filename being loaded still present on the filesystem?). This could be with the form:

$ find . -type f -name "*.info" | grep -oe "[^/]*\.info" | sort | uniq -d property_validation.info xmlsitemap.info

Let's say xmlsitemap.info is our culprit. We can refine the Linux find command accordingly:

$ find . -type f -name "xmlsitemap.info" ./sites/all/modules/xmlsitemap/xmlsitemap.info ./sites/all/modules/contrib/xmlsitemap/xmlsitemap.info

Which gives the full path to the duplicate .info file.

What matters the most here is we don't need to bootstrap Drupal, which can be a lifesaver in case the site is down.

Going forward with Drupal 8

In Drupal 8 we still have drupal_get_path() to help if we can bootstrap Drupal.

Psy Shell v0.7.2 (PHP 5.6.24 — cli) by Justin Hileman >>> drupal_get_path('module', 'xmlsitemap'); => "modules/xmlsitemap"

However, we can no longer query the {system} table. One workaround I found is to decode the corresponding {key_value} entry. E.g.:

$ drush sqlq "SELECT CONVERT(value USING utf8) FROM key_value WHERE collection = 'state' AND value LIKE '%xmlsitemap.info.yml%'" | grep --color=auto 'xmlsitemap.info.yml'

This will return a huge array, so, having a colored output for grep is helpful to get the filename to the loaded .info.yml file.

This gets the job done but not as cleanly as I would. Do you know of any better way to achieve this?

Categories: Drupal

Fuzzy Thinking: Drizzy Do\'Armyden

RPGNet - 19 September 2016 - 12:00am
Fuzzy muchkins.
Categories: Game Theory & Design

Repeat filter

New Drupal Modules - 18 September 2016 - 11:21pm
Categories: Drupal

Traveling through Tuscany

Dries Buytaert - 18 September 2016 - 6:38pm

Four weeks ago we went on a vacation in Tuscany. I finally had some time to process the photos and write down our memories from the trip.

Day 1

We booked a last-minute house in a vineyard called Fattoria di Fubbiano. The vineyard has been producing wine and olive oil since the 14th century. On the eastern edge of the estate, is Al Magrini, a Tuscan farmhouse surrounded by vines and olive trees.

When we arrived, we were struck by the remoteness. We had to drive through dirt roads for 10 minutes to get to our house. But once we got there, we were awestruck. The property overlooks a valley of olive groves and vines. We could have lunch and dinner outside among the rose bushes, and enjoy our own swimming pool with its own sun beds, deck chairs and garden umbrellas.

While it was full of natural beauty, it was also very simple. We quickly realized there was no TV or internet, no living room, and only a basic kitchen; we couldn't run two appliances at the same time. But nothing some wine and cheese can't fix. After some local cheese, olives and wine, we went for a swim in the pool. Vacation had started!

We had dinner in a great little restaurant in the middle of nowhere. We ate some local, traditional food called "tordelli lucchesi". Nearly every restaurant in Lucca serves a version of this traditional Lucchesan dish. Tordelli look like ravioli, but that is where the resemblance ends. The filling is savory rather than cheesy, and the cinnamon- and sage-infused ragù with which the tordelli are served is distinctly Tuscan. The food was exceptional.

Day 2

We were woken up by loud screaming from Stan: "Axl got hurt! He fell out of the window!". Our hearts skipped several beats because the bedrooms were on the second floor and we told them they couldn't go downstairs in the morning.

Turns out Axl and Stan wanted to surprise us by setting the breakfast table outside. They snuck downstairs and originally set the table inside, wrote a sweet surprise note in their best English, and made "sugar milk" for everyone -- yes, just like it sounds they added tablespoons full of sugar to the milk. Axl then decided he wanted to set the table outside instead. They overheard us saying how much we enjoyed eating breakfast outside last time we were in Italy. They couldn't open the door to the backyard so Axl decided to climb out of the window, thinking he could unlock the door from the outside. In the process, he fell out of the window from about one meter. Fortunately since it was a first floor window (ground level window), Axl got nothing but a few scratches. Sweet but scary.

Later on, we went to the grocery store and spent most of the day at the pool. The boys can't get enough of playing in the water with the inflatable crocodile "Crocky" raft Stan had received for his birthday two years ago. Vanessa can't get enough of the sun and she also confiscated my Kindle.

With no Kindle to read on, I discovered poop next to the pool. I thought it was from a wild horse and was determined to go to look for it in the coming days.

In the late afternoon, we had snacks and prosecco, something which became our daily tradition on vacation. The Italian cheese was great and the "meloni" was so sweet. The food was simple, but tasted so much better than at home. Maybe it's the taste of vacation.

Vanessa did our first load of laundry which needed to dry in the sun. The clothes were a little crunchy, but there was something fulfilling about the simplicity of it.

Day 3

In good tradition, I made coffee in the morning. As I head downstairs the morning light peeks through all the cracks of the house, and highlights the old brick and stone walls. The coffee machine is charmingly old school. We had to wait 20 minutes or so for the whole pot to brew.

Vanessa made french toast for breakfast. She liked to shout in Dutch "Het is vakantie!" during the breakfast preparation. Stan moaned repeatedly during breakfast - he loved the french toast! It made us laugh really hard.

Today was a national holiday in Italy so everything is closed. We decided to spend the time at the pool; no one was complaining about that. Most weeks feels like a marathon at work, so it was nice to do absolutely nothing for a few days, not keep track of time, and just enjoy our time together.

To take a break from the pool, we decided to walk through the olive groves looking for those wild horses. Axl and Stan weren't especially fond of the walk as it started off uphill. Stan told us "I'm sweating" as if we would turn back. Instead of wild horses we found a small mountain village. The streets were empty and the shutters were closed to keep the peak heat of the day out. It seemed like we had stepped back in time 30-40 years.

Sitting next to the pool gave me a lot of time to think and reflect. It's nice to have some headspace. Our afternoon treat by the pool was iced coffee! We kept the leftover coffee from the morning to pour over ice for a refreshing drink. One of Vanessa's brilliant ideas.

Our evening BBQs are pretty perfect. We made Spanish style bruschetta; first grilling the bread, then rubbing it with garlic and tomato, drizzle some local olive oil over it, and add salt and pepper. After the first bite it was requested we make this more often.

We really felt we're all connecting. We even had an outdoor dance party as the sun was setting. Axl wrote in our diary: "Vanessa laughed so hard she almost peed her pants. LOL.". Stan wanted to know if his moves made her laugh the hardest.

Every evening we would shower to wash off the bug spray, because mosquitos were everywhere. When it was finally my time to shower, we ran out of water -- just when I was all soaped up. Fortunately, we had a bottle of Evian that I could use to rinse off (just like the Kardashians).

Day 4

We set the alarm for 7:30am so we could head to Lucca, a small city 30 minutes from our house -- 15 minutes of that is spent getting out of the vineyard and mountain trails. We were so glad we rented "Renny", our 4x4 Jeep Renegade, as there are no real paved roads in the vineyard.

We visited "La Boutique Dei Golosi", a tiny shop that sold local wines, olive oils and other Italian goods. The shop owner, Alain, opened bottles of wine and let us taste different olive oils on bread. He offered the boys samples of everything the adults tried and was impressed that they liked it. Interestingly enough, all four of us preferred the same olive oil. We shipped 5 bottles home, along with several bottles of wine, limoncello and 3 jars of white truffle paste. It was fun knowing a big box of Italian goods would arrive once we were home.

When we got back from Lucca, we fired up the grill and drank our daily bottle of prosecco. Every hour we hear bells ring -- it's from the little town up on the hill. The bells are how we kept track of time. The go-at-your-own-pace lifestyle is something all North Americans should experience. The rhythm of Tuscany's countryside is refreshing -- the people there know how to live.

Axl and Stan enjoyed the yard. When they weren't playing soccer or hunting for salamanders, they played ninjas using broomsticks. Axl was "Poison Ivy" and Stan was "Bamboo Sham". Apparently, they each have special moves that they can use once every battle.

Day 5

Today we went wine tasting at our vineyard, Fattoria di Fubbiano, and got a tour of the cellar. It was great that the tour was in "inglese". We learned that they manage 45 hectares and produce 100,000 bottle of wine annually. We bought 21 of them and shipped them home so there is only 99,979 left. The best part? We could walk home afterwards. :)

Our charcoal reserves are running low; a sign of a great vacation.

Day 6

We visited Montecatini Alto, about a 40 minute drive from our house. To get to Montecatini Alto, we took a funicular built in 1898. They claim it is the oldest working cable car in the world. I believe them.

Montecatini Alto is a small medieval village that dates back to 1016. It's up on a hill. The views from the village are amazing, overlooking a huge plain. I closed my eyes and let my mind wonder, trying to image how life was back then over a thousand year ago.

At the very top there was an old church where we lit a candle for Opa. I think about Opa almost every day. I imagined all of the stories and historic facts he would tell if he were still with us.

The city square was filled with typical restaurants, cafes and shops. We poked around in some of the shops and Stan found a wooden sword he wanted, but couldn't decide if that's what he wanted to spend his money on. To teach Axl and Stan about money, we let them spend €20 of their savings on vacation. Having to use their own money made them think long and hard on their purchases. Since the shops close from 1pm to 2:30pm, we went for lunch in one of the local restaurants on the central square while Stan contemplated his purchase. It's great to see Axl explore the menu and try new things. He ordered the carbonara and loved it. Stan finally decided he wanted the sword bad enough, so we went back and he bought it for €10.

When we got back to our vineyard, we spotted wild horses! Finally proof that they exist. Vanessa quickly named them Hocus, Pocus and Dominocus.

In the evening we had dinner in a nearby family restaurant called "Da Mi Pa". The boys had tordelli lucchesi and then tiramisu for dessert. Chances are slim but I hope that they will remember those family dinners. They talked about the things that are most important in life, as well as their passions (computer programming for Axl and soccer for Stan). The conversations were so fulfilling and a highlight of the vacation.

Day 7

Spontaneous last minute decision on what to do today. We came up with a list of things to do and Axl came up with a voting system. We decided to visit the Leaning Tower of Pisa. We were all surprised how much the tower actually leans and of course we did the goofy photos to prove we were there. These won't be published.

Day 8

Last day of the vacation. We're all a bit sad to go home. The longer we stay, the happier we get. Happier not because of where we were, but about how we connected.

Today, we're making the trek to Florence. One of the things Florence is known for is leather. Vanessa wanted to look for a leather jacket, and I wanted to look for a new duffel bag. We found a shop that was recommended to us; one of the shop owners is originally from the Greater Boston area. Enio, her husband, was very friendly and kind. He talked about swimming in Walden Pond, visiting the Thoreau's House, etc. The boys couldn't believe he had been to Concord, MA. Enio really opened up and gave us a private tour to his leather workshop. His workshop consisted of small rooms filled with piles and piles of leather and all sorts of machinery and tools.

I had a belt made with my initials on it (on the back). Stan got a bracelet made out of the leftover leather from the belt. Axl also got a bracelet made, and both had their initials stamped on them. Vanessa bought a gorgeous brown leather jacket, a purse and funky belt. And last but not least, l found a beautiful handmade ram-skin duffel bag in a cool green color. Enio explained that it takes him two full days to make the bag. It was expensive but will hopefully last for many, many years. I wanted to buy a leather jacket but as usual they didn't have anything my size.

We strolled across the Ponte Vecchio and made some selfies (like every other tourist). We had a nice lunch. Pasta for Vanessa, Axl and myself. Stan still has an aversion to ragù even though he ate it 3 times that week and loved it every time. Then we had our "grand finale gelato" before we headed to the airport.

Categories: Drupal

Danny Englander: Drupal 8 Architecture: Video Tour for Designing Structured Modular Content Using Entity Construction Kit (ECK) & Inline Entity Form (IEF)

Planet Drupal - 18 September 2016 - 4:54pm

A few months back, I read an interesting blog post by Chapter Three about something they call the "Slice Template." I was really inspired after I read that, it struck me as a whole new paradigm for content creation, that of "structured modular content." At the same time, I was working on a new Drupal 8 theme and build where my objective was to create something that would give content creators lots of flexibility.

When I've had discussions with content creators in the past, more often than not, the one word that kept coming up was "flexibility." In turn, on site builds, this lead to doing some really wacky things all in one wysiwyg.

In the meantime, I had been playing around with the Paragraphs and Field Collection modules for Drupal 8 but after reading Chapter Three's post, I decided to go in different direction, that being Entity Construction Kit, "ECK."

One way of building with ECK is that you have "slices" which are entities that contain bundles and can also reference other entities that have their own bundles. On the content creation side, you can leverage the Inline Entity Form and Inline Entity Form Preview modules to create a minimalistic interface for content creators. It took me a long time to wrap my head around all this and lots of trial and error.

Now that I feel like I have a good handle on this, I decided to record a video tour of what I have been building. It's still a work in progress but I think it's well enough along to give a little demo.

Tags 
  • Drupal 8
  • Video
  • Tutorial
  • Drupal Planet
  • Theming
  • Architecture
Categories: Drupal

Red Route: Considerations for a Drupal 8 upgrade

Planet Drupal - 18 September 2016 - 4:00pm

This article was originally posted on the Capgemini Engineering blog

If you're migrating from a different CMS platform, the advantages of Drupal 8 seem fairly clear. But what if you're already on Drupal? There has been a lot of discussion in the Drupal community lately about upgrading to Drupal 8. When is the right time? Now that the contributed module landscape is looking pretty healthy, there aren't many cases where I'd recommend going with Drupal 7 for a new project. However, as I've previously discussed on this blog, greenfield projects are fairly rare.

Future proofing

One of the strengths of an open source project like Drupal is the level of support from the community. Other people are testing your software, and helping to fix bugs that you might not have noticed. Drupal 7 will continue to be supported until Drupal 9 is released, which should be a while away yet. However, if your site is on Drupal 6, there are security implications of remaining on an unsupported version, and it would be wise to make plans to upgrade sooner rather than later, even with the option of long term support. While the level of support from the community will no longer be the same, sites built on older versions of Drupal won't suddenly stop working, and there are still some Drupal 5 sites out there in the wild.

Technical debt

Most big systems could do with some refactoring. There's always some code that people aren't proud of, some decisions that were made under the pressure of a tight deadline, or just more modern ways of doing things.

An upgrade is a great opportunity to start with a blank piece of paper. Architectural decisions can be revisited, and Drupal 8's improved APIs are ideal if you're hoping to take a more microservices-oriented approach, rather than ending up with another MySQL monolith.

Drupal's policy of backward incompatibility means that while you're upgrading the CMS, you have the chance to refactor and improve the existing custom codebase (but don't be suckered in by the tempting fallacy that you'll be able to do a perfect refactoring).

There are no small changes

Don't underestimate how big a job upgrading will be. At the very least, every custom module in the codebase will need to be rewritten for Drupal 8, and custom themes will need to be rebuilt using the Twig templating system. In a few cases, this will be a relatively trivial job, but the changes in Drupal 8 may mean that some modules will need to be rebuilt from the ground up. It isn't just about development - you'll need to factor in the time it will take to define requirements, not to mention testing and deployment. If it's a big project, you may also need to juggle the maintenance of the existing codebase for some time, while working on the new version.

The sites that we tend to deal with at Capgemini are big. We work with large companies with complex requirements, a lot of third party integrations, and high traffic. In other words, it's not just your standard brochureware, so we tend to have a lot of custom modules.

If it ain't broke, don't fix it

Given the fact that an upgrade is non-trivial, the question has to be asked - what business value will an upgrade bring? If all you're doing is replacing a Drupal 7 site with a similar Drupal 8 site, is it really a good idea to spend a lot of time and money to build something that is identical, as far as the average end user can tell?

If the development team is focused on upgrading, will there be any bandwidth for bug fixes and improvements? An upgrade will almost certainly be a big investment - maybe that time, energy and money would be better spent on new features or incremental improvements that will bring tangible business value and can be delivered relatively quickly. Besides, some of the improvements in Drupal 8 core, such as improved authoring experience, are also available in the Drupal 7 contrib ecosystem.

On the other hand, it might make more sense to get the upgrade done now, and build those improvements on top of Drupal 8, especially if your existing codebase needs some TLC.

Another option (which we've done in the past for an upgrade from Drupal 6 to 7) is to incrementally upgrade the site, releasing parts of the new site as and when they're ready.

The right approach depends on a range of factors, including how valuable your proposed improvements will be, how urgent they are, and how long an upgrade will take, which depends on how complex the site is.

The upside of an upgrade

Having said all of that, the reasons to upgrade to Drupal 8 are compelling. One big plus for Drupal 8 is the possibility of improved performance, especially for authenticated users, thanks to modern features like BigPipe. The improved authoring experience, accessibility and multilingual features that Drupal 8 brings will be especially valuable for larger organisations.

Not only that, improving Developer Experience (DX) was a big part of the community initiatives in building Drupal 8. Adopting Symfony components, migrating code to object-oriented structures, improving the APIs and a brand new configuration management system are all designed to improve developer productivity and code quality - after the initial learning curve. These improvements will encourage more of an engineering mindset, and drive modern development approaches. The net benefit will be more testable (and therefore more reliable) features, easier deployment and maintenance methods and increase speed of future change.

Decision time

There is no one-size-fits-all answer. Your organisation will need to consider its own situation and needs.

Where does upgrading the CMS version fit into the organisation's wider digital roadmap? Is there a site redesign on the cards any time soon? What improvements are you hoping to make? What functionality are you looking to add? Does your site's existing content strategy meet your needs? Is the solution architecture fit for your current and future purposes, or would it make sense to think about going headless?

In summary, while an upgrade will be a big investment, it may well be one that is worth making, especially if you're planning major changes to your site in the near future.

If the requirements for your upgrade project are "build us the same as what we've got already, but with more modern technology" then it's probably not going to be worth doing. Don't upgrade to Drupal 8 just because it's new and shiny. However, if you're looking further forward and planning to build a solid foundation for future improvements then an upgrade could be a very valuable investment.

Tags:  Drupal development agile open source All tags
Categories: Drupal

Video Game Deep Cuts: Light Guns &amp; Myst Puzzles

Social/Online Games - Gamasutra - 18 September 2016 - 3:55pm

A compilation of intriguing video game longreads from around the web includes the upcoming death of the 'light gun' game, the trickiest Myst puzzle around, & lots more. ...

Categories: Game Theory & Design

Pages

Subscribe to As If Productions aggregator