7.x-2.x version of API module ready for testing

Posted by Drupal core announcements on February 14, 2017 at 8:20pm

Neil Drumm (drumm) and I have been working lately on the API module (used to build API documnentation sites like https://api.drupal.org and others). We've made a 7.x-2.x branch of the project, which works quite differently from the 7.x-1.x branch. The major changes are that it uses a different (and external) parsing library for parsing PHP files, and it uses Composer to manage its external library dependencies.

We have a bunch of automated tests for the module, which all pass, and I've successfully used it to parse the latest 8.x and 7.x Drupal Core code. But there are several other users of the API module out there (for instance, the Drush project), and we've changed the public API of the module (functions have moved, changed names, been removed, etc.).

So before we make a full 7.x-2.0 release of the API module (and drop support for the 7.x-1.x branch), I would like to invite users of the API module to test out the 2.x branch on their sites, and create issues in the API project if they encounter any problems. The public API can still be changed at this point, up until we have a new release, so now would be a good time to test.

If you want to test... some links:

Looking forward to hearing about the results of your testing!

For the LOVE of User Experience Design

Posted by Mediacurrent on February 14, 2017 at 7:57pm
Design and user experience

It’s always useful to discuss the latest social sharing trends or best practices when designing a signup form. But whether your work includes designing the next pixel perfect icon library or solving the latest user interface problem, sometimes it’s also a good idea to take a step back and appreciate why we started doing ‘this’ in the first place.
 

Distributions remain a growing opportunity for Drupal

Posted by Dries Buytaert on February 14, 2017 at 7:40pm

Yesterday, after publishing a blog post about Nasdaq's Drupal 8 distribution for investor relations websites, I realized I don't talk enough about "Drupal distributions" on my blog. The ability for anyone to take Drupal and build their own distribution is not only a powerful model, but something that is relatively unique to Drupal. To the best of my knowledge, Drupal is still the only content management system that actively encourages its community to build and share distributions.

A Drupal distribution packages a set of contributed and custom modules together with Drupal core to optimize Drupal for a specific use case or industry. For example, Open Social is a free Drupal distribution for creating private social networks. Open Social was developed by GoalGorilla, a digital agency from the Netherlands. The United Nations is currently migrating many of their own social platforms to Open Social.

Another example is Lightning, a distribution developed and maintained by Acquia. While Open Social targets a specific use case, Lightning provides a framework or starting point for any Drupal 8 project that requires more advanced layout, media, workflow and preview capabilities.

For more than 10 years, I've believed that Drupal distributions are one of Drupal's biggest opportunities. As I wrote back in 2006: Distributions allow us to create ready-made downloadable packages with their own focus and vision. This will enable Drupal to reach out to both new and different markets..

To capture this opportunity we needed to (1) make distributions less costly to build and maintain and (2) make distributions more commercially interesting.

Making distributions easier to build

Over the last 12 years we have evolved the underlying technology of Drupal distributions, making them even easier to build and maintain. We began working on distribution capabilities in 2004, when the CivicSpace Drupal 4.6 distribution was created to support Howard Dean's presidential campaign. Since then, every major Drupal release has advanced Drupal's distribution building capabilities.

The release of Drupal 5 marked a big milestone for distributions as we introduced a web-based installer and support for "installation profiles", which was the foundational technology used to create Drupal distributions. We continued to make improvements to installation profiles during the Drupal 6 release. It was these improvements that resulted in an explosion of great Drupal distributions such as OpenAtrium (an intranet distribution), OpenPublish (a distribution for online publishers), Ubercart (a commerce distribution) and Pressflow (a distribution with performance and scalability improvements).

Around the release of Drupal 7, we added distribution support to Drupal.org. This made it possible to build, host and collaborate on distributions directly on Drupal.org. Drupal 7 inspired another wave of great distributions: Commerce Kickstart (a commerce distribution), Panopoly (a generic site building distribution), Opigno LMS (a distribution for learning management services), and more! Today, Drupal.org lists over 1,000 distributions.

Most recently we've made another giant leap forward with Drupal 8. There are at least 3 important changes in Drupal 8 that make building and maintaining distributions much easier:

  1. Drupal 8 has vastly improved dependency management for modules, themes and libraries thanks to support for Composer.
  2. Drupal 8 ships with a new configuration management system that makes it much easier to share configurations.
  3. We moved a dozen of the most commonly used modules into Drupal 8 core (e.g. Views, WYSIWYG, etc), which means that maintaining a distribution requires less compatibility and testing work. It also enables an easier upgrade path.

Open Restaurant is a great example of a Drupal 8 distribution that has taken advantage of these new improvements. The Open Restaurant distribution has everything you need to build a restaurant website and uses Composer when installing the distribution.

More improvements are already in the works for future versions of Drupal. One particularly exciting development is the concept of "inheriting" distributions, which allows Drupal distributions to build upon each other. For example, Acquia Lightning could "inherit" the standard core profile – adding layout, media and workflow capabilities to Drupal core, and Open Social could inherit Lightning - adding social capabilities on top of Lightning. In this model, Open Social delegates the work of maintaining Layout, Media, and Workflow to the maintainers of Lightning. It's not too hard to see how this could radically simplify the maintenance of distributions.

The less effort it takes to build and maintain a distribution, the more distributions will emerge. The more distributions that emerge, the better Drupal can compete with a wide range of turnkey solutions in addition to new markets. Over the course of twelve years we have improved the underlying technology for building distributions, and we will continue to do so for years to come.

Making distributions commercially interesting

In 2010, after having built a couple of distributions at Acquia, I used to joke that distributions are the "most expensive lead generation tool for professional services work". This is because monetizing a distribution is hard. Fortunately, we have made progress on making distributions more commercially viable.

At Acquia, our Drupal Gardens product taught us a lot about how to monetize a single Drupal distribution through a SaaS model. We discontinued Drupal Gardens but turned what we learned from operating Drupal Gardens into Acquia Cloud Site Factory. Instead of hosting a single Drupal distribution (i.e. Drupal Gardens), we can now host any number of Drupal distributions on Acquia Cloud Site Factory.

This is why Nasdaq's offering is so interesting; it offers a powerful example of how organizations can leverage the distribution "as-a-service" model. Nasdaq has built a custom Drupal 8 distribution and offers it as-a-service to their customers. When Nasdaq makes money from their Drupal distribution they can continue to invest in both their distribution and Drupal for many years to come.

In other words, distributions have evolved from an expensive lead generation tool to something you can offer as a service at a large scale. Since 2006 we have known that hosted service models are more compelling but unfortunately at the time the technology wasn't there. Today, we have the tools that make it easier to deploy and manage large constellations of websites. This also includes providing a 24x7 help desk, SLA-based support, hosting, upgrades, theming services and go-to-market strategies. All of these improvements are making distributions more commercially viable.

Drupal Security Shield For Contributed Modules,What That Means?

Posted by Zhilevan Blog on February 14, 2017 at 6:32pm
If you have been looking around for new Drupal contributed modules lately, or just reviewing the release versions and statuses for modules that you are using, you might have noticed a new shield icon at the bottom of the project information section.

Add reCaptcha to your Drupal 7 forms programatically

Posted by TimOnWeb.com on February 14, 2017 at 5:14pm

If you want to add Google's reCaptcha (https://www.google.com/recaptcha/intro/index.html) to your Drupal 7 forms programmatically you need to follow these two steps:

1) Install and enable captcha (https://www.drupal.org/project/captcha) and recaptcha (https://www.drupal.org/project/recaptcha) modules. The best ...

Read now

Drupal 8 Module of the Week: Brightcove Video Connect

Posted by Acquia Developer Center Blog on February 14, 2017 at 4:51pm
Drupal 8 logoBrightcove logoBrightcove playlistBrightcove video sourceBrightcove API integration UXBrightcove Drupal 8 module permissions

This week: Brightcove Video Connect Module // Drupal 8 has more and more features available practically every day. Alongside module migrations and new projects, the Drupal community’s latest major release also offers new ways of solving common problems. Some functionality has moved to Drupal core and new modules have taken up the torch along the way. In this series, the Acquia Developer Center is profiling useful solutions--modules, themes, distros, and more--available for Drupal 8.

Tags: acquia drupal planetbrightcovevideo

What's new on Drupal.org? - January 2017

Posted by Drupal.org blog on February 14, 2017 at 4:42pm

Read our Roadmap to understand how this work falls into priorities set by the Drupal Association with direction and collaboration from the Board and community.

Drupal.org updates

Recognizing more types of contribution in the Drupal.org Marketplace

We were very pleased to announce an expansion of the issue credit system into a broader contribution credit system which recognizes more than just code contributions for the purposes of ranking organizations in the marketplace.

We now calculate the following 4 types of contribution into overall contribution credit:

User research for the upcoming industry pages

In a previous blog post on Drupal.org, we talked about our increasing focus on the adoption journey and our plans to create industry specific landing pages on Drupal.org. In January we did extensive user research with people in media and publishing, higher education, and government, which will be the first industries we promote. We're hoping to launch these pages very soon, so keep an eye on the home page.

Preparing for community elections for the Drupal Association board

Elections

The elections process for the community seats on the Drupal Association board kicks off with self-nominations in February each year. This means that we dedicated some time in January to making small refinements and improvements to the nomination process. In particular we've added more in-context educational materials about the board to the self-nomination form, including a video by executive director Megan Sanicki. We've also refined our candidate questions to help candidates express their unique qualifications.

If you're interested in bringing your perspective to the Drupal Association board, please nominate yourself.

Membership history messaging

To make it easier for members to understand their membership history, we've added new messaging to the membership join and renew pages. Users who go to join or renew their Drupal Association membership will now see a message indicating their current membership expiration date, their last contribution amount, a link to contribute again, and their auto-renewal status.

Membership messaging

Migration of Drupal Association content to Drupal.org

Drupal Association

In January we also migrated the majority of content from assoc.drupal.org to a new section on Drupal.org itself. This effort is part of our larger content restructure initiative. By moving Drupal Association content into Drupal.org we hope to increase discoverability of information about the DA, and create a tighter integration between Drupal Association news and the front-page news feed.

DrupalCI

Checkstyle results now available on the DrupalCI dispatcher

DrupalCI logo

Thanks to community member mile23, DrupalCI now supports automated code style testing. To see checkstyle results for any test on Drupal.org, click on the test result bubble and then click the 'view results' link to view the detailed test results on DrupalCI's jenkins dispatcher.

We're still gathering input and feedback for this initial release of the checkstyle feature, as we decide how to integrate the checkstyle results more tightly with Drupal.org. If you have feedback or suggestions please leave your comments in this issue: #1299710: [meta] Automate the coding-standards part of patch review.

Updated testing environments

DrupalCI supports testing code against a matrix of php and database versions. In January we updated the php environments that DrupalCI supports, so that you can test against the minimum supported versions or the latest point releases. Our 5.X containers have been upgraded to the latest version for each minor release (5.3.29, 5.4.45, 5.5.38, 5.6.29). The singular PHP 7 environment that we were using was following the 7.0.x branch of php7. This has now been expanded into four php 7 environments, 7.0 (7.0.14), 7.1 (7.1.0), 7.0.x, and 7.1.x.

The dev versions of php are primarily intended for Core to sense upstream changes to php before they become released, as our comprehensive test suite often finds unanticipated bugs in php7. Additionally some missing features in the php7 containers were added, specifically apcu.

Local testing improvements

DrupalCI has always supported local testing, in order to allow developers to test changes on their own machines. This is helpful for several reasons: it allows people to test on their own machines before triggering one of the DrupalCI test bots, it lets users troubleshoot failing tests, and it helps to eliminate the 'works on my machine' problem where code appears to work in a local environment, but fails on the test bots.

To make local testing even easier, DrupalCI now automatically generates a vagrant environment for local testing. To use this functionality simply clone the drupalci_testrunner.git repo and then run $ vagrant up from within the directory. Furthermore, DrupalCI can download a build.yml file from a dispatcher.drupalci.org url to replicate any test that has been run on Drupal.org. More information about this will be added to the DrupalCI documentation soon.

Adding test priority

DrupalCI runs thousands of tests of the Drupal codebase for core and contrib modules every month. These tests include commit and patch testing for the active development which may be occurring at any time day or night, as well as the hundreds of daily regression tests run for both core and contrib projects. To help make testing more responsive, we've added a notion of testing priority. When there is a queue of waiting tests, Drupal 8 core patch tests will take priority; followed by D8 branch tests; followed by D8 contrib tests; followed by Drupal 7 patch, branch, and contrib tests.

Community Initiatives

Project Applications Revamp

Our primary community initiative priority for the first quarter of the new year is the Project Application Revamp. There are four phases to the revamp: 1) preserving security advisory coverage signals about projects, 2) transitioning security advisory coverage to an opt-in process, 3) opening the gates to allow any user to promote a project to full and create releases, 4) building new tools to incentivize code review and provide code quality signals on project pages. One of the changes we made as part of phase 1 was to adjust the way recommended releases are highlighted on Drupal.org project pages.

Contrib Documentation Migration

Project maintainers are now able to create documentation guides on their projects using the new documentation content types. Maintainers can then migrate their old documentation content into these new guides, or create new documentation pages. For more information about this process, please consult our guide to contrib documentation.

Help port Dreditor features to Drupal.org

Are you a Drupal.org power user who relies on Dreditor? Markcarver is currently leading the charge to port Dreditor features to Drupal.org, and invites anyone interested in contributing to join him in #dreditor on freenode IRC or the Dreditor GitHub.

———

As always, we’d like to say thanks to all the volunteers who work with us, and to the Drupal Association Supporters, who made it possible for us to work on these projects.

If you would like to support our work as an individual or an organization, consider becoming a member of the Drupal Association.

Follow us on Twitter for regular updates: @drupal_org, @drupal_infra

Installing Drupal Console on Windows

Posted by Evolving Web on February 14, 2017 at 2:56pm
Installing Drupal Console on Windows

The Drupal Console has become a great command-line tool for managing Drupal 8 sites. In our Drupal 8 Module Development Trainings, we use it to automatically generate boilerplate code, so our trainees can get a quick start! Even though Drupal Console has been out for just one year, it already has over four hundred thousand downloads.

read more

A career thanks to open source

Posted by Wim Leers on February 14, 2017 at 10:48am

Hasselt University Professor Frank Neven asked me to come and talk a bit about my experience in open source, and how it helped me. It helped me during my studies, in my career and even in life :)

Slides: http://wimleers.com/talk-oss-career/Location: Hasselt UniversityDate: Feb 14 2017 - 15:30

AGILEDROP: Other Top Drupal Blogs from January

Posted by Agiledrop.com Blog on February 14, 2017 at 9:05am
Maybe a little late, but nevertheless, it's time to present you the best Drupal blogs that were written in the previous month. So, here's the work by other authors from January. We begin our overview with Danny Sipos, who wrote Advanced techniques for route access control in Drupal 8. In his article, he looked at an example of a complex access requirement. He used a trick that opened the door to some complex access restriction rules on your routes. You can read the full blog post here. Our second choice was How to Build Drupal Slideshow Using Views and Slick by Daniel Pickering. The… READ MORE

We want you to speak at MidCamp 2017!

Posted by MidCamp - Midwest Drupal Camp on February 14, 2017 at 4:44am
Session Submissions close Saturday, February 18th

MidCamp is looking for folks just like you to speak to our Drupal audience! Experienced speakers are always welcome, but MidCamp is also a great place to start for first-time speakers. We currently have 69 submitted sessions and are looking for more.  Please see our session tracks page to see what kind of talks we are looking for. Subject matter can be Drupal, PHP in general, related technologies, soft skills, testing, tools, workflow, etc.

Sessions submission will close Saturday, February 18th, 2017, so don't delay!

Find out more at:

Buy a Ticket

Tickets and Individual Sponsorships are available on the site for MidCamp 2017. Click here to get yours!

Schedule of Events
  • Thursday, March 30th, 2017 - Training and Sprints
  • Friday, March 31st, 2017 - Sessions and Social
  • Saturday, April 1st, 2017 - Sessions and Social
  • Sunday, April 2nd, 2017 - Sprints
Sponsor MidCamp 2017!

Are you or your company interested in becoming a sponsor for the 2017 event? Sponsoring MidCamp is a great way to promote your company, organization, or product and to show your support for Drupal and the Midwest Drupal community. It also is a great opportunity to connect with potential customers and recruit talent.

Find out more at:

Stay connected:

"The time is coming," the walrus said, "to talk of many things…"

How Nasdaq offers a Drupal distribution as-a-service

Posted by Dries Buytaert on February 13, 2017 at 8:29pm

Nasdaq CIO and vice president Brad Peterson at the Acquia Engage conference showing the Drupal logo on Nasdaq's MarketSite billboard in Times Square NYC.

Last October, I shared the news that Nasdaq Corporate Solutions has selected Acquia and Drupal 8 for its next generation Investor Relations and Newsroom Website Platforms. 3,000 of the largest companies in the world, such as Apple, Amazon, Costco, ExxonMobil and Tesla are currently eligible to use Drupal 8 for their investor relations websites.

How does Nasdaq's investor relations website platform work?

First, Nasdaq developed a "Drupal 8 distribution" that is optimized for creating investor relations sites. They started with Drupal 8 and extended it with both contributed and custom modules, documentation, and a default Drupal configuration. The result is a version of Drupal that provides Nasdaq's clients with an investor relations website out-of-the-box.

Next, Nasdaq decided to offer this distribution "as-a-service" to all of their publicly listed clients through Acquia Cloud Site Factory. By offering it "as-a-service", Nasdaq's customers don't have to worry about installing, hosting, upgrading or maintaining their investor relations site. Nasdaq's new IR website platform also ensures top performance, scalability and meets the needs of strict security and compliance standards. Having all of these features available out-of-the-box enables Nasdaq's clients to focus on providing their stakeholders with critical news and information.

Offering Drupal as a web service is not a new idea. In fact, I have been talking about hosted service models for distributions since 2007. It's a powerful model, and Nasdaq's Drupal 8 distribution as-a-service is creating a win-win-win-win. It's good for Nasdaq's clients, good for Nasdaq, good for Drupal, and in this case, good for Acquia.

It's good for Nasdaq's customers because it provides them with a platform that incorporates the best of both worlds; it gives them the maintainability, reliability, security and scalability that comes with a cloud offering, while still providing the innovation and freedom that comes from using Open Source.

It is great for Nasdaq because it establishes a business model that leverages Open Source. It's good for Drupal because it encourages Nasdaq to invest back into Drupal and their Drupal distribution. And it's obviously good for Acquia as well, because we get to sell our Acquia Site Factory Platform.

If you don't believe me, take Nasdaq's word for it. In the video below, which features Stacie Swanstrom, executive vice president and head of Nasdaq Corporate Solutions, you can see how Nasdaq pitches the value of this offering to their customers. Swanstrom explains that with Drupal 8, Nasdaq's IR Website Platform brings "clients the advantages of open source technology, including the ability to accelerate product enhancements compared to proprietary platforms".

Upgrading A Drupal 7 Module to Drupal 8 - Adding Routing and Menu Links

Posted by CU Boulder - Webcentral on February 13, 2017 at 7:10pm
Invite Users Page Users Overview Page Invite Management Page Invite Configuration Form Invite Config Form Menu Link

When planning to upgrade a module from Drupal 7 to Drupal 8, I was originally going to start out doing TDD and unit testing before I wrote any code for this module, but since I know very little about OOP practices and Drupal 8 changes, I figured it would be easier to start out with the simplest test I could think of: visiting a path and getting a 200 response code. 

In my module, an action link is added to "admin/people" in order for users to navigate to the form where they invite new users to the site. To test if the path exists and returns a 200 HTTP response, I have to create that part of the module first.

Learn By Example

I've mentioned before that my module depends on the Token module and that I would be using examples in that codebase when I need guidance...which is all the time currently :) So, I looked in that module's routing file to copy an example route. 

If you don't know anything about how Symfony's routing system works, then you should read up on Drupal's documentation for routing. To start, you need to create a ".routing.yml" file. My user_external_invite.routing.yml file started out like this:


user_external_invite.invite_users:
  path: '/admin/people/invite/invite'
  defaults:
    _controller: '\Drupal\user_external_invite\Controller\UserInviteController::inviteUsers'
    _title: 'Invite Users'
  requirements:
    _permission: 'invite users'
user_external_invite.manage_invites:
  path: '/admin/people/invite/operations'
  defaults:
    _controller: '\Drupal\user_external_invite\Controller\UserInviteController::manageInvites'
    _title: 'Manage Invites'
  requirements:
    _permission: 'invite users'
user_external_invite.settings.form:
  path: '/admin/config/people/invite'
  defaults:
    _form: '\Drupal\user_external_invite\Form\InviteSettingsForm'
    _title: 'User External Invite Settings'
  requirements:
    _permission: 'administer users'

As you can see, at the top level you start out with the route name which will be your module's machine name and the purpose of the route. I only have three routes for my module: the page where you can invite users, the page where you can manage invites that have been sent out, and the configuration page for admins. 

Adding A Controller

The part of the routing file that is most different, at least for me, is the "_controller" parameter. In Drupal 7, the "page callback" part of hook_menu() essentially acted as the controller; however, the function specified generally ended up in the same .module file making it simple to connect the two parts together.

By placing the controller file in a certain directory structure, Drupal will automatically load that class and call the method you specify. The exact structure of your file placement is kind of arbitrary, but it is common to separate different functionality into different folders. So, I have "src/Controller/" for controller classes and "src/Form" for forms. Entities, Plugins, and Event Subscribers are other examples of other types of things that might warrant their own directories; however, you can place all your files directly in the "src" directory if you were lazy and wanted to do so. Don't be lazy, though; I won't pick you to join my Drupal dodgeball team if you are.


class UserInviteController extends ControllerBase {

  public function inviteUsers() {
    return array(
      '#markup' => 'Page Content...', 
    ); 
  } 
} 

Although my controller has a lot more going on in it, in order to get a working page up and running that we can browse to I had to write an "inviteUsers" function and return something in it. After adding that code and clearing the cache, I can navigate to "admin/people/invite/invite" and see the fruits of my labor. 

Invite Users Page

 

Action Links

While adding a link to that page of the module is all fine and good, I still have no way of having users know that can get to that page since it existed as an action link in Drupal 7 on the user overview page. 

If you remember the good ole days of hook_menu(), you could define an item as a "MENU_LOCAL_TASK" with a "MENU_DEFAULT_LOCAL_TASK" item to render a page with two or more tabs on it. In Drupal 8, those tabs have been split up into files for tasks and actions. The definitions for tasks and actions are very similar; the distinction is in where you want them placed on the page. 


user_external_invite.invite_users:
  route_name: user_external_invite.invite_users
  title: 'Invite user'
  appears_on:
    - entity.user.collection

For users to see the invite page from "admin/people" as it had been placed in Drupal 7, I had to create a "user_external_invite.links.action.yml" file. In it, I provided the route that matches the "Invite user" page and told Drupal what page the action link appears on. I ended up searching the User module's files in order to get the parent route to place in the "appears_on" key.

Users Overview Page

 

Local Tasks

To add tabs for the invite management pages, I had to create another file specifically for the local tasks, "user_external_invite.links.task.yml", a.k.a tabs. 


user_external_invite.invite:
  route_name: user_external_invite.invite_users
  base_route: user_external_invite.invite_users
  title: 'Invite Users'
  weight: 1
user_external_invite.manage:
  route_name: user_external_invite.manage_invites
  base_route: user_external_invite.invite_users
  title: 'Manage Invites'
  weight: 2

Instead of having duplicate entries to define the base path and the default tab, a "base_route" key is added to define link hierarchy. This key is essentially the same as the "appears_on" key for action items. For the default tab, the "base_route" and "route_name" are the same, and for any subsequent tabs, the base route will be the default tab's route name. Once you add that code and rebuild the cache, you should see tabs show up on your module's page. 

Invite Management Page

 

Forms

The last path I need users to get to for my module is a configuration form. In Drupal 7, you could use drupal_get_form() as a special callback to load a form at a path, and in Drupal 8, the "_form" key takes over that functionality. In "InviteSettingsForm.php", I have a class that extends "ConfigFormBase" giving me some useful functionality related to getting configuration objects to manipulate. 


class InviteSettingsForm extends ConfigFormBase {

  /**
   * InviteSettingsForm constructor.
   * @param \Drupal\Core\Config\ConfigFactoryInterface $config_factory
   */
  public function __construct(ConfigFactoryInterface $config_factory) {
    parent::__construct($config_factory);
  }


  /**
   * @param \Symfony\Component\DependencyInjection\ContainerInterface $container
   * @return static
   */
  public static function create(ContainerInterface $container) {
    return new static(
      $container->get('config.factory')
    );
  }

  /**
   * {@inheritdoc}
   */
  public function getFormId() {
    return 'user_external_invite_settings_form';
  }

  /**
   * {@inheritdoc}
   */
  protected function getEditableConfigNames() {
    return ['user_external_invite.settings'];
  }

  public function buildForm(array $form, FormStateInterface $form_state) {
    $config = $this->config('user_external_invite.settings');
    
    // Days invite valid for.
    $form['user_external_invite_days_valid_for'] = array(
      '#type' => 'textfield',
      '#title' => t('Number of days invites are valid'),
      '#description' => t("Invites are set to expire so many days after they are created. If a user hasn't accepted the invite by that time, then you will have to send a new invite to grant that user a role."),
      '#default_value' => $config->get('user_external_invite_days_valid_for'),
      '#element_validate' => array('element_validate_number'),
      '#maxlength' => 3,
    );

    // More form items...

    // Submit button.
    $form['actions'] = ['#type' => 'actions'];
    $form['actions']['submit'] = [
      '#type' => 'submit',
      '#value' => $this->t('Save configuration'),
    ];

    return parent::buildForm($form, $form_state);
  }

The "getFormId()" and "getEditableConfigNames()" methods are required when extending "ConfigFormBase". The form ID can be arbitrary, but I made it resemble the machine name in the routing.yml file. The editable config name should correspond to the file you would have in "config/install" for default configuration settings.

Invite Configuration Form

 

After adding that code and clearing the cache, my form shows up at the right path. However, a user would have to know the exact path of the form in order to see it until I declare a menu link pointing to the form's route.


user_external_invite.settings:
  title: 'User External Invite Settings'
  description: 'Configure roles to invite and invite message settings.'
  route_name: user_external_invite.settings.form
  parent: user.admin_index

The tricky part of adding "user_external_invite.links.menu.yml" is finding the parent route to link it to. For some reason, the "admin/config/people" route is different than all of the other routes on "admin/config" so to find out which parent route I needed to add, I used Drupal Console and the "drupal router:debug" command. When I grepped that command for config routes, every other top level section on "admin/config" had a route that started off with "system.admin_config_" while the people config section was "user.admin_index". Go figure. 

After adding that menu links file and clearing the cache, I can see the link to the config form in the people section.

Invite Config Form Menu Link

 

With those three links files and the routing file, you should be good to go setting up routing in your Drupal 8 module. Now comes the hard part of writing the code to fill out those pages you've just made links for.  

Developer Blog

Tips for Managing Drupal 8 projects with Composer

Posted by Jeff Geerling's Blog on February 13, 2017 at 6:12pm

It's been over a year since Drupal 8.0.0 was released, and the entire ecosystem has improved vastly between that version's release and the start of the 8.3.0-alpha releases (which just happened a couple weeks ago).

One area that's seen a vast improvement in documentation and best practices—yet still has a ways to go—is Composer-based project management.

Along with a thousand other 'get off the island' initiatives, the Drupal community has started to take dependency management more seriously, by integrating with the wider PHP ecosystem and maintaining a separate Drupal.org packagist for Drupal modules, themes, and other projects.

Webinar: How to Build Custom Search Pages in Drupal 8

Posted by Web Wash on February 13, 2017 at 5:13pm
The definition of "what a search page is" varies from project to project. Some clients are happy with the core Search module, others want a full blown search engine. Drupal offers a wide range of options when it comes to building custom search pages. You can create a basic search page using the core Search module or if you're looking for something advanced you could use Search API.

Drupal 8 Configuration Management for Multi-site

Posted by Evolving Web on February 13, 2017 at 3:17pm
Drupal 8 Configuration Management for Multi-site

Often, you develop a website to be installed and used once, by one organization. But sometimes, for larger organizations, you need to develop a series of websites that are very similar. This case is very common in big institutions with independent departments or branches, such as:

read more

DIY Drupal hosting: OpenDevShop

Posted by lakshminp.com on February 13, 2017 at 11:49am
DIY Drupal hosting OpenDevShop

Checkout introduction and part 1 if you haven't already.

Richa(all proper nouns changed to protect privacy), our QA, is doing the final testing of a client feature which will go live in a while. Its 4 PM and Friday Happy hour will start soon. Richa is testing a Drupal 7 site packed with tons of contrib and custom modules, and in case you are wondering, yes, we do deploy on Friday evenings at Acme Inc. Its like any other day here.

Agile Coaching: A guide for project managers stepping into a Scrum team – Health warnings!

Posted by Out & About On The Third Rock on February 12, 2017 at 11:26pm

This is first of a series of blogs to support traditional project managers I am coaching. To help get their bearings in deep and murky waters of Agile projects and Scrum teams. Before the scrum purists amongst you vehemently shake your heads or berate me on the title, consider being pragmatic. In the Professional Services world there […]

The post Agile Coaching: A guide for project managers stepping into a Scrum team – Health warnings! appeared first on Agile Transformation - Eradicating Poverty - Human Rights - Open Source - Random - Batman.

Why Open Source Will Dominate the Market

Posted by Vardot on February 12, 2017 at 10:24pm
Case Studies Read time: 7 minutes Open Source (OSS) will become more and more popular and dominate the market Introduction

How times have changed. In the old days, an article about open source software (OSS) typically starts off by defending OSS as a viable alternative to proprietary software. To make its argument, it would defer to the Apache web server and the Linux operating system, both OSS centerpieces. Back in those days, OSS is almost synonymous with nonprofit organizations such as the Apache Software Foundation, the Linux Foundation, and the Free Software Foundation. To justify the adoption of OSS to the skeptical world, one would focus on the return of investment and argues how OSS lowers the total cost of ownership.

This article is about the dawning of the new OSS generation. We argue that OSS will dominate the market, which is a far cry from just being a viable alternative.

A whole new horde of world-dominating OSS software has entered the picture. The new faces of OSS are Drupal and WordPress, LibreOffice and OpenOffice.

 

Open source software in 2017

New players have since entered the OSS market. The 2016 Future of Open Source survey, conducted with 1,300 companies across 64 countries, indicated that 65% of the respondents had increased the use of OSS in the past year.

World-class, for-profit companies, such as Amazon, Google, Microsoft, Facebook, and Twitter, are now major users and contributors to OSS. This is unthinkable back in the old OSS days, much like the teardown of the Berlin wall. These companies have open-sourced their own products, with the most notable being:

These 3 products share some common characteristics:

  1. They are all software frameworks.

A software framework is the software infrastructure for solving a general class of problems. Unlike Drupal and LibreOffice which are application programs, the aforementioned new OSS are software frameworks, specifically in the area of pattern recognition. Amazon uses DSSTNE to provide product recommendations for its online customers. Google and Microsoft use their respective products in speech recognition, text understanding and photo recognition.

  1. They are all core and mission-critical with their respective owner companies.

For an online retail business, product recommendation is unequivocally mission-critical. Yet, Amazon opted to open-source its product recommendation engine, DSSTNE. Not to be outdone, Google open-sourced TensorFlow, the pattern recognition component in its search engine business. Similarly, Microsoft open-sourced CNTK, the speech recognition engine that powers Windows and Skype applications.

  1. No feature or licensing handicap.

The pressure is on for software vendors to release OSS that is uncrippled, fully functional, and freely distributable. The first open-sourced version of TensorFlow did not support distributed processing: it can only run on a single host. Google subsequently released another version of the software that can run in parallel across multiple hosts. The first version of CNTK that Microsoft open-sourced was restricted to only non-commercial use. Later, the restriction was removed to allow commercial exploitation of the technology.

If the aforementioned products are core to their underlying businesses, we have to ask why their respective companies have chosen to open source them. The rest of this article elaborates on the benefits and the future of this new breed of open source software.

Open Source Software: The Ultimate List

 

Benefits of open source

Keep calm and use open software

 

Lowering cost is no longer the number 1 benefit. The new buzzwords for OSS are innovation, quality, and speed of adoption. If helpful, we will illustrate using the example of Drupal, an open source Content Management System (CMS).

Why Drupal is the Best CMS for Your Website

 

Innovation

By definition, the source code for OSS is made available to everyone. This attracts a large, global community of committed contributors who share the passion and want to make the software better. The Drupal community claims to have over 1 million "developers, designers, trainers, strategists, coordinators, editors, and sponsors."

In traditional proprietary software development, one person (or a small group) determines the vision and direction of the software. In contrast, OSS is characterized by the free flow of ideas among members of a large community with diverse skillsets and experience. End decisions are made based on merit, not seniority. As a result, OSS is a much better nurturing ground for innovation than its proprietary counterpart.

 

Quality

Given that the source code is open, and that a large pool of developers is available to work on it, the development cycle for OSS is typically shorter. Product features are rolled out and bugs are fixed in frequent software updates. With more eyes on the problem, security holes can be spotted earlier and fixed sooner.

Members in the community who are not developers can contribute in their own ways to make a quality product. Writers and editors contribute by writing documentation. Everyone in the community is presumably a user, and can provide feedback to the team, and answer questions in the support forum.

Companies can customize open source software to satisfy their unique requirements. Subsequently, they can contribute the code back to the community to make the product even better. Drupal 8 represents the quality end result of work done collaboratively by 4,500 individual and corporate contributors. It has over 200 new and improved features, and is made available in 100 languages.

 

Cost

Most OSS is royalty free: you are not charged any money to use it. However, there are several different OSS licenses in the market. So, you must read the licensing terms carefully.

OSS is generally free because it is developed and supported by a community of volunteers. Drupal has a large repository of free modules (30,000+) and themes (2,000+). The development cost is close to nothing, unless you decide to customize a module or theme yourself.

Many companies do customize OSS to satisfy their own unique requirements. This adds to the total cost of ownership for OSS. Yet, the cost is largely constrained because you are not starting from scratch.

When you buy proprietary software, you are locked in to that particular vendor, and become susceptible to its pricing changes. For OSS, you can choose from a sufficiently large supply of contractors who do custom work for OSS. Because the source code is opened, you gain the freedom to switch vendors.

Overall, the total cost of OSS is still lower than that of proprietary software, making it more affordable.

 

Speed

If you use proprietary software, you are tied down by the company's product roadmap which may cater more to the fiscal reporting periods than to its technical merits. With its open platform, OSS development accelerates at Internet speed. The developer base and the installed base are distributed around the world. This means that requirements are gathered around the clock, features are designed and coded 24x7, and bugs are squashed non-stop.

Not only is OSS being developed at a breakneck pace, the scale of its adoption is nothing but phenomenal. Take Drupal and CMS as an example. Drupal has an installed base of over a million websites. With this many websites, a would-be customer can look at any number of them to find the right features to use in his own website.

 

Future of open source

Cloud computing

The future of OSS is in the cloud. 76% of all respondents in the above cited 2016 survey claimed that they had plans to use containers. The cloud is not just a repository where OSS contributors network and store their code and document artifacts. It will become the deployment platform of choice for open source software.

 

Commoditization

OSS is becoming a commodity in the world of software development. Companies will expect more and more enterprise software to be OSS. They will expect OSS to remain free and be of the highest quality. They will expect their ideas and feedback to be heard in the larger community, and readily included in the constant software updates which will continuously benefit them.

 

Open source is playing a bigger and bigger role every year, and there is no doubt that its future is full of possibilities. And which open software do you use? Share your thoughts with us in a comment section below.

Tags:  Design & User Experience Drupal Planet Title:  Why Open Source Will Dominate the Market

Turn your Drupal site into Google Home

Posted by Drupal @ Penn State on February 12, 2017 at 8:34pm

I’ve dreamed of a day when systems start to work like the home automation and listening (NSA Spying…) devices that people are inviting into their home. “Robots” that listen to trigger words and act on commands are very exciting. What’s most interesting to me in trying to build such systems is,… they really aren’t that hard any more. Why?

Pages

Subscribe with RSS Subscribe to Drupal.org aggregator - Planet Drupal