Newsfeeds

8 Trends to Expect about Mobile Game in 2017 - by Keval Padia

Gamasutra.com Blogs - 10 January 2017 - 6:46am
What to expect about mobile game trends in 2017. Tv Game, Mobile eSports, Virtual Reality, New Innovative Games, Game Revenue, Console makers.
Categories: Game Theory & Design

On Rock, Paper, Scissors - by Nikhil Murthy

Gamasutra.com Blogs - 10 January 2017 - 6:46am
Examining Rock, Paper, Scissors and why people don't play it for fun.
Categories: Game Theory & Design

The Game Designer at the Game Jam - by Sande Chen

Gamasutra.com Blogs - 10 January 2017 - 6:39am
In this article, game designer Sande Chen discusses the role of the game designer at game jams and describes her first experience at Global Game Jam.
Categories: Game Theory & Design

Everything You Need to Know about Photogrammetry… I hope - by Joseph Azzam

Gamasutra.com Blogs - 10 January 2017 - 6:33am
This article will try to cover everything you need to know about 3D Scanning using Photogrammetry including the choice of software, equipment, and computer, in addition to a guideline on properly capturing photos.
Categories: Game Theory & Design

How to optimize the tutorial for your game - by Vasiliy Sabirov

Gamasutra.com Blogs - 10 January 2017 - 6:32am
We often repeat one simple idea: the first session of the user (first time user experience or FTUE) is very important and tutorial is a pivotal part of it.
Categories: Game Theory & Design

Emotional Wreckage: My Emotional Journey through the Wastes of Fallout 4 - by Jesse Harlin

Gamasutra.com Blogs - 10 January 2017 - 6:26am
Garbage has always been a part of the Fallout landscape, but the addition of a junk-into-crafting system new to Fallout 4 had an unexpectedly emotional reaction on me.
Categories: Game Theory & Design

Kids Developing Games - What kind of tools should kids make games with? - by Rahul Khurana

Gamasutra.com Blogs - 10 January 2017 - 6:26am
A look at the kinds of tools available for kids to develop games with, and an exploration of the pros and cons of each.
Categories: Game Theory & Design

DrupalEasy: DrupalEasy Podcast 189 - BACnet to the Future (David Thompson - Energy and Drupal)

Planet Drupal - 10 January 2017 - 6:20am

Direct .mp3 file download.

David Thompson (dbt102), consultant with Function 1, and maintainer of the BACnet and AppCtrl modules (used for building energy management) joins Mike on this first podcast of 2017.

Interview DrupalEasy News Three Stories Sponsors Picks of the Week Upcoming Events Follow us on Twitter Five Questions (answers only)
  1. Bikram Yoga
  2. BACnet advanced workstation with Web Control
  3. Presenting at DrupalCon
  4. Emu
  5. Understanding the value of CCK
Intro Music Subscribe

Subscribe to our podcast on iTunes, Google Play or Miro. Listen to our podcast on Stitcher.

If you'd like to leave us a voicemail, call 321-396-2340. Please keep in mind that we might play your voicemail during one of our future podcasts. Feel free to call in with suggestions, rants, questions, or corrections. If you'd rather just send us an email, please use our contact page.

Categories: Drupal

Fantasy Flight Games Previews C-ROC Cruiser For X-Wing

Tabletop Gaming News - 10 January 2017 - 6:00am
It was quite a big deal when the Rebels got their first huge-sized ship for X-Wing. I’ve still been meaning to pick up a Tantiv-IV, just because it’s a cool model, even though I don’t regularly play X-Wing anymore. A while later, the Imperials got their epic ship. But the game has 3 factions! What […]
Categories: Game Theory & Design

Code Enigma: SAML ADFS authentication in Drupal

Planet Drupal - 10 January 2017 - 5:24am
SAML ADFS authentication in Drupal Language English Return to Blog SAML ADFS authentication in Drupal

Drupal as consumer/SP, ADFS as IdP

Tue, 2017-01-10 13:24By pascal

We'll try to cover the needed step to authenticate (and create if need) Drupal 7 users against an external Active Directory Federation server, using SimpleSAMLphp and the simplesamlphp_auth module.

Examples are given for a Debian server, using Nginx and php-fpm, but most of the configuration would be similar for other setups, and except for the application integration part, the SimpleSAML setup part should apply to any php integration.

Assumptions

We'll assume that:

Dependencies

We'll use memcache to store user sessions (although you can use a MySQL-like database instead), which is done through the php-memcache extension (NOT php-memcached):

sudo apt-get install memcached

sudo apt-get install php5-memcache

Once again, in case you read too fast, php-memcache, NOT php-memcached !

1. Nginx configuration: accessing SimpleSAML library through the web

Given that SAML is based on redirects, the first thing you'd need to do is being able to access the library over HTTPS.

1.1. Install the library

Download the library from https://simplesamlphp.org/download and extract it in Drupal's library folder, so it ends up under sites/all/libraries/simplesamlphp-1.14.8 in the repo (that will match /var/www/drupal-sp.master/www//sites/all/libraries/simplesamlphp-1.14.8 once deployed on the server).

1.2. Amend Nginx' fastcgi configuration

We need to add a line to the /etc/nginx/fastcgi_params file so it supports path_info (in short, paths in the form of file.php/parameter1/parameter2). Instead of amending the default one, we took the view of duplicating it and amending the copy instead:

sudo cp /etc/nginx/fastcgi_params /etc/nginx/fastcgi_params_path_info

and add the following at the end: "fastcgi_param PATH_INFO $fastcgi_path_info;"

The resulting file should now look like:

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param QUERY_STRING $query_string; fastcgi_param REQUEST_METHOD $request_method; fastcgi_param CONTENT_TYPE $content_type; fastcgi_param CONTENT_LENGTH $content_length;   fastcgi_param SCRIPT_NAME $fastcgi_script_name; fastcgi_param REQUEST_URI $request_uri; fastcgi_param DOCUMENT_URI $document_uri; fastcgi_param DOCUMENT_ROOT $document_root; fastcgi_param SERVER_PROTOCOL $server_protocol;   fastcgi_param GATEWAY_INTERFACE CGI/1.1; fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;   fastcgi_param REMOTE_ADDR $remote_addr; fastcgi_param REMOTE_PORT $remote_port; fastcgi_param SERVER_ADDR $server_addr; fastcgi_param SERVER_PORT $server_port; fastcgi_param SERVER_NAME $server_name;   fastcgi_param HTTPS $https if_not_empty;   fastcgi_param HTTP_PROXY "";   fastcgi_param PATH_INFO $fastcgi_path_info;     # PHP only, required if PHP was built with --enable-force-cgi-redirect fastcgi_param REDIRECT_STATUS 200; 1.3 Setup the vhost

While it is possible to use a different subdomain for your application and the SimpleSAML library (look at 'session.cookie.domain' on SimpleSAML side and '$cookie_domain' on Drupal side), the simplest and most common approach is to have both under the same domain. Typically, our Drupal installation being at https://drupal-sp.example.com/, we would make the library accessible at https://drupal-sp.example.com/simplesaml/. Note the 'simplesaml' location has been chosen for simplicity of the example, but it could be set to anything, https://drupal-sp.example.com/auth/, https://drupal-sp.example.com/whatever/, ...

What we need to do is setting up an alias for our /simplesaml location to the library webroot on the filesystem at /var/www/drupal-sp.master/www/sites/all/libraries/simplesamlphp-1.14.8/www. The resulting vhost file (trimmed non-relevant parts) would be similar to:

server { server_name drupal-sp.example.com/; listen 443 ssl; # DRUPAL_ROOT root /var/www/drupal-sp.master/www; fastcgi_param HTTPS on; #### BEGIN SAML specific config #### # We could use any alias, as long it matches the config.php of SimpleSAML. location /simplesaml { # Point to our library folder webroot. alias /var/www/drupal-sp.master/www/sites/all/libraries/simplesamlphp-1.14.8/www; location ~ ^(?<prefix>/simplesaml)(?<phpfile>.+?\.php)(?<pathinfo>/.*)?$ { fastcgi_split_path_info ^(.+?\.php)(/.+)$; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; # Note we include the fastcgi config copied and modified above. include fastcgi_params_path_info; fastcgi_param SCRIPT_FILENAME $document_root$phpfile; fastcgi_param PATH_INFO $pathinfo if_not_empty; } # This looks extremly weird, and it is. Workaround a NGINX bug. @see https://trac.nginx.org/nginx/ticket/97 # Without this the assets (js/css/img) won't be served. location ~ ^(?<prefix>/simplesaml/resources/)(?<assetfile>.+?\.(js|css|png|jpg|jpeg|gif|ico))$ { return 301 $scheme://$server_name/sites/all/libraries/simplesamlphp-1.14.8/www/resources/$assetfile; } } #### END SAML specific config #### ## Rest of your app specific directives. } 2. SimpleSAML configuration 2.1 config.php

This is where the main "global" configuration directives reside, and it is located under the "config" folder of the library. Most of the default are fine as is, we are mainly going to set:

  • the main path
  • the memcache settings
  • the debug mode

The resulting file would end up with the following options:

 

<?php   /* * The configuration of SimpleSAMLphp * */   $config = array( /** * Full url to the library. Trailing slash is needed. */ 'baseurlpath' => 'https://drupal-sp.example.com/simplesaml/', /** * Debug data. Turn all that to FALSE on prod. */ 'debug' => TRUE, 'showerrors' => TRUE, 'errorreporting' => TRUE, /** * Admin access, do not enable on prod. */ 'auth.adminpassword' => 'MYPASSWORD', 'admin.protectindexpage' => FALSE, 'admin.protectmetadata' => FALSE, /** * This is a secret salt used by SimpleSAMLphp when it needs to generate a secure hash * of a value. It must be changed from its default value to a secret value. The value of * 'secretsalt' can be any valid string of any length. * * A possible way to generate a random salt is by running the following command from a unix shell: * tr -c -d '0123456789abcdefghijklmnopqrstuvwxyz' /dev/null;echo */ 'secretsalt' => 'omqczwt6klfdn244787098jqlfjdsql', /* * Some information about the technical persons running this installation. * The email address will be used as the recipient address for error reports, and * also as the technical contact in generated metadata. */ 'technicalcontact_name' => 'Administrator', 'technicalcontact_email' => 'na@example.org', /** * We want debugging on while setting our install up. */ 'logging.level' => SimpleSAML_Logger::DEBUG, 'logging.handler' => 'syslog', /** * Sessions will be held in memcache. */ 'store.type' => 'memcache', 'memcache_store.servers' => array( array( array('hostname' => 'localhost'), ), ), );

At this point, you should be able to reach https://drupal-sp.example.com/simplesaml/ and login as 'Admin' using the local SimpleSAML authentication mechanism. Check the "configuration" tab to access basic sanity checks on your config.

2.3 authsources.php

We're now ready to define our new authentication source in the config/authsources.php file, that holds an array of all available authentication sources. You'll notice there's already an "admin" one, which is the default local one defined by the SimpleSAML php library.

We assume that nothing has yet been created on the ADFS side (we'll do that at a later step), if that's not your case, you should match the entityID with the one provided to you.

<?php   $config = array( 'admin' => array( // Default local auth source. 'core:AdminPassword', ), 'example-drupal-sp' => array( // Type of auth source. 'saml:SP', // Unique identifier of your SP. // This can be set to anything, as long as no other SP use it on the IDP already. 'entityID' => 'urn:drupal:example', // IDP url identifier. A mean of getting the precise url is given later (@todo link) 'idp' => 'http://adfs-idp.example.com/adfs/services/trust', // This must be explicitely set to NULL, we rely on metadata. 'NameIDPolicy' => NULL, // These are the SP-side certificate, that we will need to generate. // The location is relative to the 'cert' directive specified in the // config.php file. 'privatekey' => 'saml.pem', 'certificate' => 'saml.crt', // Enforce signing of redirections, using our certificate. 'sign.logout' => TRUE, 'redirect.sign' => TRUE, 'assertion.encryption' => TRUE, // Enforce use of sha256. 'signature.algorithm' => 'http://www.w3.org/2001/04/xmldsig-more#rsa-sha256', ), );

If you navigate to the "Authentication" tab > "Test configured authentication sources" within the /simplesaml admin interface, you should now see your new source appear as "example-drupal-sp". Don't try yet to use it, it will just throw exceptions for now !

Certificate generation

We now need to generate the certificates we did specify in the auth source, they will be used to sign our requests. We'll stick with the default location and create them under the "cert" directory of the library.

cd sites/all/libraries/simplesamlphp-1.14.8/cert

openssl req -x509 -sha256 -nodes -days 3652 -newkey rsa:2048 -keyout saml.pem -out saml.crt

2.4 saml20-idp-remote.php

The last piece of information that is needed for the two systems to be able to communicate is the metadata specification, which defines the various endpoints and protocols to use. The ADFS server conveniently exposes those, so we just need to get hold of them, and convert it to php. The federation XML file is usually located under /FederationMetadata/2007-06/FederationMetadata.xml but you can find it out from the ADFS management tool, by expanding "Services" > "Endpoints" and looking at the Metadata section.

In our case we would download "https://adfs-idp.example.com/FederationMetadata/2007-06/FederationMetada...". The next step is to convert it to a php array, with an utility provided by the SimpleSAML library, located at /simplesaml/admin/metadata-converter.php. This will generate 2 php arrays ready to copy paste:

  • saml20-sp-remote: we can ignore this one in our setup, as we are only acting as a Service Provider
  • saml20-idp-remote: this is the data we will need, and we are going to copy/paste it into metadata/saml20-idp-remote.php.

The array key should match the value of what we had specified in our authsources:

authsources.php:

'idp' => 'http://adfs-idp.example.com/adfs/services/trust',

saml20-idp-remote.php

$metadata['http://adfs-idp.example.com/adfs/services/trust'] = array(

If that's not the case, amend your authsource. Pay especially attention to the fact that the idp may identify itself as http://, not https://, even though all requests go through https endpoints.

3. ADFS setup

Now the SP side component is ready, we need to configure the IDP side.

3.1 SP metadata

In the same way our SP needs metadata to know how to talk to the IDP, the ADFS server needs to how to communicate with the SimpleSAML library, and must be provided some metadata. Here again, the SimpleSAML php library helps us a lot by exposing its metadata, ready for the server to consume.

You can obtain this url within the /simplesaml admin section, under the "Federation" tab, by clicking on the "View metadata" link underneath your "example-drupal-sp" source. This will display the actual metadata, along with the dedicated url to obtain it, https://drupal-sp.example.com/simplesaml/module.php/saml/sp/metadata.php... in our case.

3.2 Trust configuration

In the ADFS admin tool on the Windows server, create a new "Relying Party Trust". This should launch a Wizard similar to:

Enter the SP metadata URL (https://drupal-sp.example.com/simplesaml/module.php/saml/sp/metadata.php...) into the "Federation metadata address" field and press next. This should be enough to setup all the needed configuration, even though you will get a notice about some metadata fields being ignored, which you can ignore.

3.3 Claims

These claims serve as mappings between ADFS and SAML "fields", and are accessible trough the "Edit Claim Rules..." entry.

3.3.1 LDAP attributes

Create an "Issuance Transform Rule", of type "Send LDAP Attributes as Claims" with the fields you need to pass back to the SP. Some are preset and defined in the metadata, but you can add custom ones: In this example UPN and Email are using the set schema, while DisplayName is custom:

 

3.3.2 Incoming Claim

This is needed to map the SAML "Name ID" with the LDAP "UPN". Create another "Issuance Transform Rule", of type "Transform an Incoming Claim":

 

3.4 Testing the authentication

At this point, you should be able to authenticate against the Federated login. Before going any further, make sure this is working, by navigating to https://drupal-sp.example.com/simplesaml/ and following the "Test authentication sources" under the "Authentication tab".

After login in and being redirected, the simplesaml library will conveniently expose the attributes we added in the Claim rules, with their value:

http://schemas.xmlsoap.org/ws/2005/05/identity/claims/upnhttp://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddressDisplayName

These fields are the ones the Drupal component is going to use for mapping with the user entity.

4. Drupal 4.1 The simplesamlphp_auth module

Now is the time to "drush en simplesamlphp_auth" ! Once the module is enabled, you will need to specify the ID of the authentication source, the user properties mapping from the LDAP attibutes, and you have a couple of options regarding how users will use Federated login over local Drupal login. You can do this through the UI, or capture in settings.php as follow:

<?php /** * @group SimpleSAML */ // The id of our authentication definition, // found in the config.php file at point 2.3 // above. $conf['simplesamlphp_auth_authsource'] = 'example-drupal-sp'; // Absolute path to the simplesamlphp library. $conf['simplesamlphp_auth_installdir'] = '/var/www/drupal-sp.master/www/sites/all/libraries/simplesamlphp-1.14.8'; // Field mappings. $conf['simplesamlphp_auth_mailattr'] = 'http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress'; $conf['simplesamlphp_auth_unique_id'] = 'http://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn'; $conf['simplesamlphp_auth_user_name'] = 'DisplayName'; // Main activate/desactivate federated login switch. $conf['simplesamlphp_auth_activate'] = 1; // Allow/Disallow users to login with local Drupal account. $conf['simplesamlphp_auth_allowdefaultlogin'] = 1; // An array of roles than can login with a local Drupal account. // Leave empty doe 'all' $conf['simplesamlphp_auth_allowdefaultloginroles'] = array(); // An array of user uids than can login with a local Drupal account. $conf['simplesamlphp_auth_allowdefaultloginusers'] = array(); // Allow local password changes. $conf['simplesamlphp_auth_allowsetdrupalpwd'] = 0; // Overrides local roles (implies role mapping, // that is not covered in this article). $conf['simplesamlphp_auth_rolepopulation'] = '';

At this point, congrats, you are done ! Navigating as anonymous to https://drupal-sp.example.com/saml_login should redirect you to your Federated login portal, then back to Drupal where you will be logged in.

You can either add a link pointing to this on the login form if you are planning to mix local/federated login, or take over the login process enterly by redirecting it to this path.

4.2 Multi-environment setup

Chances are you are using several environments (dev/stage/uat/prod or however you name then) and want to use different endpoints foreach one. By default, the authsources and metadata settings are all keyed by ids, but some of the settings would all be shared in the $config array from your config.php file. You have several options to split those and use a different setup per environment, our choice is based on Drupal's settings.php. The reason is that it is fairly common to have this file environment-specific already, through symlinks, includes, etc. as part of whatever CI tool you are using.

4.2.1 config.php

Copy your simplesaml config.php to config.$ENV.php, eg config.dev.php for your dev environement. Then, replace the content of the main config.php with the following snippet, that will source Drupal settings.php file for an "environment" variable.

<?php   /* * Environment switcher for SimpleSAMLphp * */   // Session management. if (!ini_get('session.save_handler')) { ini_set('session.save_handler', 'file'); } // Grab per environment settings. if (!defined('EXAMPLE_DRUPAL_ROOT')) { define('EXAMPLE_DRUPAL_ROOT', substr(__DIR__, 0, strpos(__DIR__, '/sites/all/libraries/simplesamlphp-1.14.8/config'))); define('EXAMPLE_DRUPAL_SETTINGS_LOCAL_FILE', EXAMPLE_DRUPAL_ROOT . '/sites/default/settings.php'); } // This is defined in Drupal's settings.php file. global $example_simplesamlphp_environment; // Need to include the bootstrap file as it contains // some constants settings.php relies on. if (!defined('DRUPAL_CORE_COMPATIBILITY')) { require_once EXAMPLE_DRUPAL_ROOT . '/includes/bootstrap.inc'; } require_once EXAMPLE_DRUPAL_SETTINGS_LOCAL_FILE; require_once __DIR__ . '/config.'.$example_simplesamlphp_environment.'.php'; 4.3 settings.php

On the Drupal side of things, you can specify the environment to use, which will result in simplesaml loading the $config array from the matching config.$ENV.php file.

<?php // Be sure to pick a name that cannot conflict with // another variable. global $example_simplesamlphp_environment; $example_simplesamlphp_environment = 'dev'; // Pick the matching authentication endpoint for // this environment in authsources.php. $conf['simplesamlphp_auth_authsource'] = 'example-dev-sp'; BlogEnsuring data security BlogService Resilience and public vs private cloud BlogUnderstanding HSTS BlogPaaS versus managed servers - quality of resource
Categories: Drupal

ComputerMinds.co.uk: Loading config programmatically

Planet Drupal - 10 January 2017 - 5:00am

In Drupal 8, there are many ways to interact with configuration from PHP. Most will allow you to write the config values, but some are read-only. Some will include 'overrides' from settings.php, or translations. There are many layers of abstraction, that each have different purposes, so it can be easy to run into subtle unintended problems (or more obvious errors!) if you pick a method that doesn't quite suit what you actually need to do. Here I'm going to outline some of them and when you might pick each one.

Categories: Drupal

Leaflet TopoJSON

New Drupal Modules - 10 January 2017 - 4:23am
Introduction

TopoJSON is an extension of GeoJSON that encodes topology. Rather than representing geometries discretely, geometries in TopoJSON files are stitched together from shared line segments called arcs. Read more about the TopoJSON format.

The leaflet library and Drupal module are not able to parse TopoJSON files so this helper module extends leaflet to handle TopoJSON.

About this module

This module provides:

Categories: Drupal

Steamforged Games Posts Dark Souls Board Game Rules

Tabletop Gaming News - 10 January 2017 - 4:00am
One of the bigger stories from last year was the Dark Souls Board Game from Steamforged Games. The Kickstarter campaign did very well and the game, itself, will be coming to tabletops near you later this year. Well, so you can know what you’re going to be getting, Steamforged has posted up the rulebook pdf. […]
Categories: Game Theory & Design

Media Hero Slider

New Drupal Modules - 10 January 2017 - 2:32am
Categories: Drupal

Secrets to indie success: a conversation with Alex Willink, Head of Strategic Partnerships at Gram Games - by Mark Rosner

Gamasutra.com Blogs - 10 January 2017 - 12:21am
Gram Games is one of the most successful indie studios out there. Its casual games 1010!, Merged!, and Six! have been worldwide hits to the tune of a collective 100 million downloads.
Categories: Game Theory & Design

The RPGnet Newsletter: RPGnet Newsletter #83

RPGNet - 10 January 2017 - 12:00am
1879 Kickstarter and more.
Categories: Game Theory & Design

Liip: How to get involved in Drupal projects

Planet Drupal - 9 January 2017 - 11:26pm

Drupal is an open source project and really depends on its community to move forward. It is all about getting to know the CMS, spreading the knowledge and contribute to projects.
I will give you some ways to get involved, even if you are not a developer there is a task for you!

Drupal Mentors – DrupalCon Dublin 2016 by Michael Cannon is licenced under CC BY-SA 2.0

Participating in user support

Sharing your knowledge with others is very important to the community: it is a nice thing to do and you might also learn some things by doing so. Whatever your skill level, you can give back to the community with online support. There are many places where you can give support starting with the Support Forums. You can also go to Drupal Answers which is more active than the forums or subscribe to the Support Mailing list. If you prefer real-time chat, you can also join #drupal-support channel on IRC or the Slack channels.

Helping out on documentation

Community members can write, review and improve different sorts of documentation for the project: community documentation on drupal.org, programming API reference, help pages inside the core software, documentation embedded in contributed modules and themes etc.
Contributing is a good way to learn more about Drupal and share your knowledge with others. Beginners are particularly encouraged to participate as they are more likely to know where documentation is lacking.
If you are interested, check out the new contributor tasks for anyone and writers.

Translating Drupal interface in your own language

The default language for the administration interface is English but there are about 100 available languages for translations. There is always a need for translations as many of these translation sets are incomplete or can be improved for core and contributed modules.
All translations are now managed by the translation server. If you are willing to help, all you have to do is logging into drupal.org and join a language team. There is even a video to learn how the translation system works and a documentation.

You can also help to translate documentation into your language. Most language-specific communities have their own documentation so you should get in touch with them directly. To learn more, see the dedicated page.

Improving design and usability

The idea is to improve the usability especially in Drupal 8 regarding the administration interface. The focus is mainly on content creation and site building. The community has done many research to understand the problems that users run into and how the new improvements performs. The purpose is also to educate developers and engage designers in order to grow the UX-team. You can visit the Drupal 8 UX page for more details and join the usability group.

Writing a blog post about Drupal

Writing a blog post about Drupal is a good way to share your knowledge and expertise. There are many subjects to explore, technical or not: talking about a former project you developed or writing a tutorial, telling about the state of a version or sharing about an event you attended… And if you are lucky enough your post can be published on the Weekly Drop, the official Drupal newsletter!

Don’t forget to reference your blog post on Planet Drupal, this platform is an aggregated list of feeds from around the web which shares relevant Drupal-related knowledge and information.

You can also find our Drupal related blog posts on the Liip blog.

Testing core and modules

Testing Drupal projects is necessary to make the platform stable and there are many things to test! If you have a technical background, you can help to review patches or to write unit tests.
For non-technical people, you can provide some feedback about usability of the administration interface that will help to improve the user experience. Follow the process to give a proper feedback.

Contributing to development

There are many ways to contribute code in core and “contrib” projects such as modules or themes.
You can first help to improve existing projects by submitted patches. This would be the natural thing to do when you work with a module and you notice a bug or a missing feature: search in the corresponding issue queue if the problem have been noticed before. If not, post a message explaining the issue and add a snippet of code if you found a potential fix. Then you can create a patch and submit it into the issue queue.
You can also contribute to new projects by creating your very own module or theme or create a sandbox for more experimental projects.

Attending events

The Drupal association organizes many events all around the world to promote the CMS and gather the community.

One of the biggest events are the Drupalcons. A Drupalcon gathers thousands of people and lasts about one week including 3 full days of conferences. These conferences cover many topics: site building, user experience, security, content authoring etc. You can also join sprints to contribute to Drupal projects and social events to meet the members of the community. Check out our report about DrupalCon Barcelona 2015!

“Drupal Dev Days” conferences occur once a year and gather developers to discuss and present topics technically relevant to the community. You can join sprints, intensive coding sessions and technical conferences.

You can also join DrupalCamps to meet your local community. These events last one or two days and focus on sharing knowledge amongst the community. You can attend conferences and sprints.

There are also many Drupal meetups which are free events happening in many cities in the world. Presentations and discussions finish around nice drinks and appetizers.

Sponsoring events

The community holds conventions and meetups in many countries and being a sponsor will not only help Drupal development but it will also enable you to be noticeable within the community. There are different levels of sponsorings that will offer from mentions on social media to advertising online and at the exhibition space of the event. All you have to do is getting in touch with the event organizers. By the way, Liip will sponsor the Drupal Mountain Camp in Davos this year!

Offering a donation

You can give donations to the Drupal association through the website in order to support drupal.org infrastructure and maintenance, worldwide events such as Drupalcons. The donations are either in Euros or Dollars.

You can also become a member of the Drupal Association for the same purpose, as an individual member or an organization member. The minimal fees are 15 Euros. Find more information about membership on drupal.org.

Conclusion

Drupal projects are constantly improving thanks to passionate volunteers who work on many subjects: development, documentation, marketing, events organization, supports… There is for sure a task that will suit you and it only takes small time commitment to make changes.
So join the great Drupal community and start getting involved!

Categories: Drupal

Agiledrop.com Blog: AGILEDROP: Other Top Drupal Blogs from December

Planet Drupal - 9 January 2017 - 10:06pm
In December 2016 we started implementing a new idea. An idea that looks back at the best Drupal blogs that were written by other authors in the previous month. We started with a November's overview. Here is next one in the row, bringing you December's action. Building Views Query Plugins for Drupal 8 We begin our list with the second part of Building Views Query Plugins for Drupal 8 by Matt Oliveira. He wrote about coding the plugin and ended up with a basic functioning example. Yet, the author left some space open for the final third part. You can read the full blog post here. The… READ MORE
Categories: Drupal

Jeff Geerling's Blog: Add a set of Taxonomy terms via a custom Drupal module's update hook

Planet Drupal - 9 January 2017 - 7:06pm

From time to time, I've needed to have a default set of Taxonomy terms created at the same time as a content type, as in the case of a field with a required Taxonomy term reference, using a Taxonomy that is not 'free tag' style.

Instead of requiring someone to go in and manually add all the terms after code is deployed, you can add terms in a custom module's update hook, like so:

Categories: Drupal

Last Updated

New Drupal Modules - 9 January 2017 - 6:59pm

The Last Updated module provides a checkbox on the node form that allows editors the choice to display an "Updated" date in addition to a "Submitted" date.

Categories: Drupal

Pages

Subscribe to As If Productions aggregator