Drupal 8 | Modules Unraveled
I'm releasing a new series today!!!!!
Over the last year, I've given a talk at DrupalCon, DrupalCorn Camp, and Drupal Camp Colorado all about using Composer and Configuration Management in Drupal 8. Those sessions were around 45 minutes, which is much too short to go in depth, and explain everything thoroughly.
- In D7, we used the Migrate Drupal to Drupal module, what’s the case for D8?
- Speak on pattern of using Migrate Drupal as a basis for a migration.
- Migration plugins and yml configuration declarations are an improvement on an already excellent module - if you are going to handle migrations like you did in 7 - which might be appropriate depending on your use case
- Appropriate where you are significantly revising the content model, configuration or site composition.
- What are some of the pros and cons of the way Migrate Drupal works in D8?
- Migration of most Drupal settings: registration emails, site name, debug settings, etc.
- Migration of most fields (work is ongoing to include contrib into upgrade migrations)
- Migration of all content types with nodes and revisions
- By default, fixed ids (not ideal for staged work)
- Miss an opportunity to take out the trash
- Let’s talk about configuration management. I know from working with you guys that you started out using Features...
- Tried out a features based approach at first - because it was similar to well established patterns in 7 - but abandoned it for the project
- Feature branch activity then confex seems to be working out well
- Configuration import and export has inspired a lot of confidence in getting to known states.
- The challenge is probably in managing environmental config settings - that’s where Master still might have a place.
- Using configuration export and import committed to git repo.
- Challenges of local configuration vs production configuration.
- Managing code review
- Automated removal of local configuration
- Would like to know some other people’s workflows
- What is the Workflow Initiative and what are the goals you’re trying to achieve?
- What lead you into proposing this initiative for core and what’s the background story?
- Dries mentioned in the keynote that official initiatives preferably should have a dedicated team, and have funding. How is that going to work for the Workflow Initiative?
- How is it funded?
- Who is on the team?
- What will the process be like for getting this into core? [talk about the new governance structure for core initiatives]
- Roadmap for Drupal
How will it work?
- How will the content moderation workflow work when it’s in core?
- How will the full-site content preview work when it’s in core?
Questions from Twitter
Jibran Ijaz @JibranIjaz
What will happen to the workflow initiative if Drupal shop(s) will stop supporting it? #MUP160
Jibran Ijaz @JibranIjaz
How can we make sure that this'll be a community driven initiative not specific to someones requirements. #MUP160
Steve Persch @stevector
Do you anticipate support for making/deploying configuration changes through workspaces? #MUP160
Steve Persch @stevector
@JibranIjaz @dickolsson I'd like part of the answer to be consensus formed around Behat-executable stories/scenarios. #MUP160
Justin Ludwig @jludwig89
Can the Workflow Initiative fit into a multi-site install, where content is to be deployed to more than one site? #MUP160
- First, can you give us an overview of what Advagg is?
The Drupal 8 Port
- Are you the main maintainer of the D8 version?
- What was the porting process like?
- What features are in the Drupal 8 version right now?
- What's the status of the Drupal 8 version?
- Do you know of any compatibility issues with other modules?
- What do you have planned for the future?
- What is Big Pipe?
- This isn’t a Drupal specific thing right? Where did the idea of BigPipe come from?
- How does it work?
- Builds on Drupal 8’s caching system, specifically cacheability metadata (tags, contexts, max-age)
- Rendering system (bubbling, placeholders)
- page cache / dynamic page cache
- BigPipe is built ON TOP OF ALL OF THE ABOVE
- Does it work for anonymous and authenticated users?
- Is this compatible with reverse proxies like Varnish?
- Does BigPipe affect the need for something like redis or memchache?
- How does BigPipe relate to authcache?
- How can we start using it? What’s the install process?
- What do we need to do to configure it for our site?
- Is BigPipe ready to be used?
- Is there anything like this for Drupal 7?
Questions from Twitter
- Daniel Noyola @danielnv18
What can I do to make my site compatible with BigPipe? O what shouldn't do?
- Daniel Noyola @danielnv18
Is it compatible with contrib modules like panels or display suite?
- Ryan Gibson @ryanissamson
I may have missed it, when BigPipe is included in D8.1, will it be enabled by default?
- TheodorosPloumis @theoploumis
Is the bigpipe caching working with the RESTful responses?
- What is the Scheduled Updates module?
- How does it differ from the Scheduler module?
- What are some of the use cases? What types of updates can be scheduled?
- Is it ready to be used?
Block Visibility Groups
- What is Block Visibility Groups?
- How does it differ from Context and Panels?
- Do you intend it to be a replacement for context?
- When would you use it instead Panels
- What are some example use cases?
- How does it work with other D8 block-related modules?
- Is it ready to be used?
Commerce 2.x for Drupal 8
- What has been the biggest success of Commerce on D7?
- By starting from scratch on D7 technologies we created a solution that is intuitive to Drupal developers and easier to extend. And with 60k installs, we’ve set a record for ecommerce on Drupal in general.
- And what do you think have been its biggest weaknesses?
- Not prioritizing UX from the start. Took us a year after the 1.0 release to create Inline Entity Form and recreate the admin screens as a part of the Kickstart. At that point many people already had the impression that Commerce was hard to use.
- Not providing enough direction to developers. Flexibility is important, as is having unopinionated code. But developers also need to have a clear and obvious path forward. Having an opinionated layer on top, with sane defaults, can save a lot of development time and prevent frustration.
- Not prioritizing certain features, leaving them to contrib instead. Modules that make up the checkout ux (checkout progress, checkout redirect, addressbook), discounts. Of course, all generals are smart after the battle.
- How has that influenced the development of Commerce 2.x?
- With Commerce 2.x we once again started from scratch, evaluating all feedback received in the 1.x cycle. We decided to address all three of these major points.
- Better UX means paying more attention to the product and order admin experience, as well as providing better checkout out of the box.
- Better APIs means doing more work for the developer, especially around pricing and taxes.
- And finally, we’re growing the core functionality. We’re expecting a dozen contrib modules to be no longer needed, as we address edge cases and add functionality.
- What are some of the biggest new features of Commerce 2.x?
- Multi-store will allow people to bill customers from different branches (US and FR offices, for example), or create marketplaces like Etsy.
- Improved support for international markets means better address forms, better currency management, and significantly better tax support, the kind that will reduce the need for people to use cloud-based tax solutions, at least in Europe.
- Support for multiple order types, each with its own checkout and workflows will allow developers to create tailored experiences for different kinds of products, such as events, ebooks, t-shirts.
- An integrated discounts UI means more power to the store admin.
- And this is just the beginning. Under the hood there are many small features and improvements, over both 1.x and Kickstart.
- What has Commerce done to integrate better with the PHP and Drupal communities?
- We’ve created several independent ecommerce libraries, attacking currency formatting, address management and taxes. These libraries are now being adopted by the wider PHP community, bringing us additional contributors.
- On the Drupal side we’ve joined forces with the Profile2 team, creating the D8 Profile module that we’ll use for customer profiles. We’re also depending on Inline Entity Form, which is now shared with the Media team. We’re also moving some of our generic entity code into a new Entity API module, maintained together with Daniel Wehner and other community members.
- Finally, we have been champions of Composer, the replacement for Drush Make, and required for any module that depends on external libraries.
The Future of Commerce 2.x
- Commerce 2.x is now in alpha2. What’s included? What’s next?
- Alpha2 includes stores and products, as well as initial order and cart implementations.
- It also has functional currency management and formatting, address and profile management.
- Alpha3, to be released in the next two weeks, is focusing on completing the order and cart implementations, and adding the initial checkout implementation.
- Post-alpha3 our focus will be on discounts, taxes, and finally, payments.
- The best way to learn more about this is to read the drupalcommerce.org blog, where I post “Commerce 2.x stories” detailing work done so far. We have several new posts planned for february.
- When can we expect Commerce 2.x to be production ready?
- Our current goal is to release a production ready beta by end of march. We should also have Search API and Rules by then. Leading up to DrupalCon New Orleans we’ll be helping the community implement shipping and licensing and port payment modules. At the same time, we’ll be focusing on reaching RC status.
- What’s the status of commerce contrib? Like PayPal, Authorize.net, etc.
- How can the community help?
- Each new alpha welcomes more manual testing and feedback.
- We also have office hours every wednesday at 3PM GMT+1 on #drupal-commerce where people can discuss code and help out on individual issues.
- Do you feel that requiring Commerce to be installed via Composer will impact adoption?
- The average developer is already familiar with Composer and will benefit greatly from it, just like D7 developers benefited from Drush Make. Getting Drupal, Commerce, and all dependencies is a single Composer command, as is keeping it all up to date.
- People unwilling to run Composer on their servers can run it locally and commit the result.
- I’m also hoping we’ll be able to offer distribution-like tarballs on either drupal.org or drupalcommerce.org as we get closer to a release candidate.
Questions from Twitter
- howdytom @howdytom
Commerce Kickstart provides a great toolset with basic configuration. Is there a plan to do a Commerce Kickstart for Drupal 8? If not, will Commerce provide more out of the box solutions for a full featured shop?
- Commerce Kickstart had several parts.
- The first one was about providing better admin and checkout UX, as well as discounts. That’s now handled by Commerce out of the box.
- The second was about providing a demo store with a developed set of frontend pages. That’s going to stay in contrib and will greatly benefit from the flexibility introduced by Drupal 8 and CMI.
- It’s too early to plan a distribution yet. Drupal 8 has almost no contrib, and drupal.org doesn’t support using Composer to build distributions yet.
- However, we are using Composer to provide single-command site templates, the kind that gives you Drupal core, Commerce and other modules. This will allow us to provide good starting points for different use cases, similar in nature to Commerce Kickstart 1.x.
- Once 2017 comes around, we’ll investigate next steps.
- Jimmy Henderickx @StryKaizer
In commerce d8, will it be possible to alter a product name dynamicly (either by hook or other solution)?
- Czövek András @czovekandras
Any plans making iframe payment methods 1st class citizens? Thinking of running checkout form callbacks.
- Marc van Gend @marcvangend
How did D8 architecture change the way you code your modules?
- What is the Honeypot module?
- What prompted you to contribute the Honeypot module? Why was it originally created?
Flocknote (two employers ago) user registration
A bunch of my blogs / comments
- What methods or techniques does honeypot use to detect bots?
A literal ‘honeypot’
- What types of foms can it protect?
- What’s different about Honeypot vs. other spam prevention modules like CAPTCHA and Mollom?
Avoid punishing the user (explain)
Drupal 8 and Future of Honeypot
- How did the port of Honeypot to Drupal 8 go?
- Have you started developing new sites in Drupal 8? And if so, how’s that going?
- How have spammers adapted to tools like Honeypot, and how do you try to keep ahead of them?” “More spam getting through Honeypot lately” (https://www.drupal.org/node/2646380)
- You’re also involved a bit in other open source communities for projects like Ansible. How does the Drupal community compare? What are some things you would like to see improved?
- Is there anything you’ve done to make sure you can continue to maintain this open source project among many others both on drupal.org and github, and not get burned out?
Have you started working with Drupal 8 yet? If so, you might have noticed that Drush 7 doesn't play nice with Drupal 8. And if you install Drush 8, that won't work with your Drupal 7 sites. Yikes!
Have no fear!
Here's how to install BOTH Drush 7 and Drush 8 AND have each project automatically use the version that corresponds to that install. It's stinkin' awesome!
- What is composer?
- Dependency Manager for PHP
- How does it relate to Drush Make?
- Surprisingly similar
- “Getting off the island”
- What can you do with composer on a Drupal site?
- download dependencies, drupal modules, themes, profiles, drush, external libraries etc
- How do you download contrib modules?
- How do you download contrib themes?
- Can you specify where to download project? ie: modules/contrib and modules/custom?
- composer/installers & davidbarratt/custom-installer
- Where do you store custom modules/themes?
- Two methods: Committing to your repo or creating separate repos
- Reference repo in you composer.json
- Toran Proxy
- How can you specify and download a library to go with a module?
- module should specify it in composer.json
- if not submit a patch, and add to your composer.json for now
- drupal/drupal vs drupal/core
- If you want to use the project-repo/web
composer create-project drupal/drupal
- Composer template for Drupal Projects
- Build sites from scratch with
- Update drupal/modules/themes/etc. with