Planet Drupal

Subscribe to Planet Drupal feed
Drupal.org - aggregated feeds in category Planet Drupal
Updated: 48 min 36 sec ago

KnackForge: How to update Drupal 8 core?

23 March 2018 - 10:01pm
How to update Drupal 8 core?

Let's see how to update your Drupal site between 8.x.x minor and patch versions. For example, from 8.1.2 to 8.1.3, or from 8.3.5 to 8.4.0. I hope this will help you.

  • If you are upgrading to Drupal version x.y.z

           x -> is known as the major version number

           y -> is known as the minor version number

           z -> is known as the patch version number.

Sat, 03/24/2018 - 10:31
Categories: Drupal

Spinning Code: A Process to create a Drupal 8 module’s Config

7 hours 40 min ago

One of the best practices for Drupal 8 that is still emerging is how to create modules with complex deployable configuration. In the past we often abused the features module to do this, and while that continues to be an option, with Drupal 8’s vastly improved configuration management options and the ability to install configuration easily I have been looking for something better. I particularly want to build modules that don’t have unnecessary dependencies but I can still reliably include all the needed configuration in my project. And after a few tries I think I’ve struck on an effective process.

Let’s start with a quick refresher on installing configuration for a Drupal 8 module. During module installation Drupal will load any yaml files that match configuration patterns it already knows about that are included in your module’s config/install directory. In theory this is great but if you want to include configuration that comes with other modules you have to figure out what files are needed; if you want to include configuration from core modules you probably will need to find a fairly large collection files to get all the required elements. Finding all those files, and copying them quickly and easily is the challenge I set out to solve.

My process starts with a local development sandbox site that is just there to support this development work, and I create a local git repository for the site’s configuration (I don’t need to connect it to a remote, like Bitbucket or GitHub, or handle all of the site’s code since it’s just to support finding changes to config files). Once installation and any base configuration is complete I export the site’s config to the directory covered by the repo (here I used d8_builder/config/sync, the site itself was at d8_builder/pub), and make sure all changes in the repository are committed:

Now I create my module and a second repository just for it. The module’s repository is linked to a remote since this is the actual product I’m creating.

With that plumbing in place I can to make whatever configuration change I need included in the module. Lately I’ve been creating a custom moderation workflow with several user roles and edge cases that will need to be deployed on a dozen or so sites, so you’ll see that reflected below, but this process should work for just about any project with lots of interrelated configuration.

Once I have completed a set of changes, I export the site’s configuration again:  drupal config:export

Now git can easily show which configuration files were changed, added, or removed:

Next I use git, xargs, and cp to copy those files into your module (hat tip on this detail to Andy Gregorowicz):
git ls-files -om --exclude-standard --exclude=core.extensions.yml |  xargs -I{} cp "{}" pub/modules/custom/fancy_workflow/config/install/

Notice that I skip the core.extensions.yml file. If your module had dependencies you’ll still need to update your module’s info.yml file to list them.

These files are great except for one detail: they all start with the UUID for the sandbox site, which will cause break imports. So I hop into the module’s config/install directory and use sed to remove those lines:
sed -i '/^uuid/d' *

Now a quick commit and push of the changes to the module’s repo, and I’m ready to pull the module into other projects. I also commit the builder repo to ensure it’s easy to track any future changes.

This isn’t a replacement for tools like Configuration Installer, which are designed to handle an entire site, this is intended just for module development.

If you think you have a better solution, or that I’m missing something important please let me know.

Categories: Drupal

Freelock : A custom quantity price discount for Drupal Commerce

9 December 2017 - 1:01pm

We're in the midst of a Commerce 2 build-out for a client, and a key requirement was to preserve their quantity pricing rules. With thousands of products, and different pricing rules for each one, they need the price for each item in the cart adjusted to the appropriate price for the quantity purchased. When validating our plan for Drupal Commerce 2, we stumbled upon some examples of a custom price resolver, and knew this would work perfectly for the need.

Drupal 8Drupal CommerceDrupal PlanetField API
Categories: Drupal

Wim Leers: API-First Drupal — really!

8 December 2017 - 1:54pm

This blog has been quiet for the last year and a half, because I don’t like to announce things until I feel comfortable recommending them. Until today!

Since July 2016, API-First Drupal became my primary focus, because Dries felt this was one of the most important areas for Drupal’s future. Together with the community, I triaged the issue queue, and helped determine the most important bugs to fix and improvements to add. That’s how we ended up with REST: top priorities for Drupal … plan issues for each Drupal 8 minor:

If you want to see what’s going on, start following that last issue. Whenever there’s news, I post a new comment there.

But enough background. This blog post is not an update on the entire API-First Initiative, it’s about a particular milestone.

100% integration test coverage!

The biggest problem we encountered while working on rest.module, serialization.module and hal.module was unknown BC breaks 1. Because in case of a REST API, the HTTP response is the API. What is a bug fix for person X is a BC break for person Y. The existing test coverage was rather thin, and was often only testing “the happy path”: the simplest possible case. That’s why we would often accidentally introduce BC breaks.

Hence the clear need for really thorough functional (integration) test coverage2, which was completed almost exactly a year ago. We added EntityResourceTestBase, which tests dozens of scenarios3 in a generic way4, and used that to test the 9 entity types, that already had some REST test coverage, more thoroughly than before.

But we had to bring this to all entity types in Drupal core … and covering all 41 entity types in Drupal core was completed exactly a week ago!

The test coverage revealed bugs for almost every entity type. (Most of them are fixed by now.)

Tip: Subclass that base test class for your custom entity types, and easily get full REST test coverage — 41 examples available!

Guaranteed to remain at 100%

We added EntityResourceRestTestCoverageTest, which verifies that we have test coverage for all permutations of:

  • entity type
  • format: json + xml + hal_json
  • authentication: cookie + basic_auth + anon

It is now impossible to add new entity types without also adding solid REST test coverage!

If you forget that test coverage, you’ll find an ASCII-art llama talking to you:

Good people of #Drupal, I present unto you the greatest method of all time. https://github.com/drupal/drupal/blob/8.5.x/core/modules/rest/tests/src/Functional/EntityResource/EntityResourceRestTestCoverageTest.php#L141 pic.twitter.com/TiWLPt7duH

— webcsillag (@webchick) December 8, 2017

That is why we can finally say that Drupal is really API-First!

This of course doesn’t help only core’s REST module, it also helps the contributed JSON API and GraphQL modules: they’ll encounter far fewer bugs!

Thanks

So many people have helped! In random order: rogierbom, alexpott, harings_rob, himanshu-dixit, webflo, tedbow, xjm, yoroy, timmillwood, gaurav.kapoor, Gábor Hojtsy, brentschuddinck, Sam152, seanB, Berdir, larowlan, Yogesh Pawar, jibran, catch, sumanthkumarc, amateescu, andypost, dawehner, naveenvalecha, tstoeckler — thank you all!5

Special thanks to three people I omitted above, because they’re not well known in the Drupal community, and totally deserve the spotlight here, for their impressive contribution to making this happen:

That’s thirty contributors without whom this would not have happened!

And of course thanks to my employer, Acquia, for allowing me to work on this full-time!

Next

What is going to be the next big milestone we hit? That’s impossible to say, because it depends on the chains of blocking issues that we encounter. It could be support for modifying and creating config entities, it could be support for translations, it could be that all major serialization gaps are fixed, it could be file uploads, or it could be ensuring all normalizers work in both rest.module & jsonapi.module

The future will tell, follow along!

  1. Backwards Compatibility. ↩︎

  2. Nowhere near 100% test coverage, definitely not every possible edge case is tested, and that is fine↩︎

  3. Including helpful error responses when unauthenticated, unauthorized or just a bad request. This vastly improves DX: no need to be a Drupal expert to talk to a REST API powered by Drupal! ↩︎

  4. It is designed to be subclassed for an entity type, and then there are subclasses of that for every format + authentication combination. ↩︎

  5. And this is just from all the per-entity type test issues, I didn’t look at the blockers and blockers of blockers. ↩︎

  • Acquia
  • Drupal
Categories: Drupal

LakeDrops Drupal Consulting, Development and Hosting: 3 minutes: Starting Drupal 8 project with a composer template

8 December 2017 - 8:11am
3 minutes: Starting Drupal 8 project with a composer template Jürgen Haas Fri, 12/08/2017 - 17:11

Starting a new Drupal 8 project with the LakeDrops composer template only takes less than 3 minutes. And in that short period of time you're note only getting the code base but also a number of extra benefits:

Categories: Drupal

Colan Schwartz: Ægir Turns 10!

8 December 2017 - 7:09am
Topics:  This blog post has been re-published from Aegir's blog and edited with permission from its author, Christopher Gervais.

My tenure with the Ægir Project only dates back about 7 or 8 years. I can’t speak first-hand about its inception and those early days. So, I’ll leave that to some of the previous core team members, many of whom are publishing blog posts of their own.

New look for www.aegirproject.org

As part of the run-up to Ægir’s 10-year anniversary, we built a new site for the project, which we released today. It will hopefully do more justice to Ægir’s capabilities. In addition to the re-vamped design, we added a blog section, to make it easier for the core team to communicate with the community. So keep an eye on this space for more news in the coming weeks.

Ægir has come a long way in 10 years

When I first tried to use Ægir (way back at version 0.3), I couldn’t even get all the way through the installation. Luckily, I happened to live in Montréal, not too far from Koumbit, which, at the time, was a hub of Ægir development. I dropped in and introduced myself to Antoine Beaupré; then one of Ægir’s lead developers.

One of his first questions was how far into the installation process I’d reached. As it turns out, he frequently asked this question when approached about Ægir. It helped him gauge how serious poeple were about running it. Back then, you pretty much needed to be a sysadmin to effectively operate it.

A few months, Antoine had wrapped the installation scripts in Debian packaging, making installation a breeze. By that point I was hooked.

Free Software is a core value

Fast forward a couple years to DrupalCon Chicago. This was a time of upheaval in the Drupal community, as Drupal 7.0 was on the cusp of release, and Development Seed had announced their intention to leave the Drupal community altogether. This had far-reaching consequences for Ægir, since Development Seed had been the primary company sponsoring development, and employing project founder and lead developer Adrian Rossouw.

While in Chicago I met with Eric Gundersen, CEO of DevSeed, to talk about the future of Ægir. Whereas DevSeed had sold their flagship Drupal product, OpenAtrium, to another company, Eric was very clear that they wanted to pass on stewardship of Ægir to Koumbit, due in large part to our dedication to Free Software, and deep systems-level knowledge.

Community contributions are key

Since then Ægir has grown a lot. Here is one of the more interesting insights from OpenHub’s Ægir page:

Very large, active development team Over the past twelve months, 35 developers contributed new code to Aegir Hosting System. This is one of the largest open-source teams in the world, and is in the top 2% of all project teams on Open Hub.

To help visualize all these contributions, we produced a video using Gource. It represents the efforts of no less than 136 developers over the past 10 years. It spans the various components of Aegir Core, along with “Golden” contrib and other major sub-systems.

Of course, many other community members have contributed in other ways over the year. These include (but aren’t limited to) filing bug reports and testing patches, improving our documentation, answering other users’ questions on IRC, and giving presentations at local meetups.

The Future

The core team has been discussing options for re-architecting Ægir to modernize the codebase and address some structural issues. In the past few months, this activity has heated up. In order to simultaneously ensure ongoing maintenance of our stable product, and to simplify innovation of future ones, the core team decided to divide responsibilities across 3 branch maintainers.

Herman van Rink (helmo) has taken up maintenance of our stable 3.x branch. He’s handled the majority of release engineering for the project for the past couple years, so we can be very confident in the ongoing stability and quality of Ægir 3.

Jon Pugh, on the other hand, has adopted the 4.x branch, with the primary goal of de-coupling Ægir from Drush. This is driven largely by upstream decisions (in both Drupal and Drush) that would make continuing with our current approach increasingly difficult. He has made significant progress on porting Provision (Ægir’s back-end) to Symfony. Keep an eye out for further news on that front.

For my part, I’m pursuing a more radical departure from our current architecture, re-writing Ægir from scratch atop Drupal 8 and Ansible with a full-featured (Celery/RabbitMQ) task queue in between. This promises to make Ægir significantly more flexible, which is being borne out in recent progress on the new system. While Ægir 5 will be a completely new code-base, the most of the workflows, security model and default interface will be familiar. Once it has proven itself, we can start pursuing other exciting options, like Kubernetes and OpenStack support.

So, with 10 years behind us, the future certainly looks Bryght*.




* Bryght was the company where Adrian Rossouw began work on “hostmaster” that would eventually become the Ægir Hosting System.

Categories: Drupal

Amazee Labs: Amazee Agile Agency Survey Results - Part 5

8 December 2017 - 6:51am
Amazee Agile Agency Survey Results - Part 5

Welcome to part five of our series, processing the results of the Amazee Agile Agency Survey. Previously I wrote about forming discovery and planning. This time let’s focus on team communication and process.

Josef Dabernig Fri, 12/08/2017 - 15:51 Team Communication

When it comes to ways how to communicate, the ones that got selected with the highest rating of “mostly practised” where “Written communication in tickets”, “Written communication via (i.e. Slack)” as well as “Group meetings for the entire team”. The options that most often got selected as “Not practised” where “Written communication in blog or wiki” and “Written communication in pull requests”.

For us at Amazee Labs Zurich, a variety of communication channels is essential. Regular 1-on-1 meetings between managers and their employees allow us to continuously talk about what’s important to either side and work on improvements. We communicate a lot via Slack where we have various team channels, channels together with clients related to projects, channels for work-related topics or just channels to talk about fun stuff. Each morning, we start with a short team stand-up for the entire company where we check in with each other, and that’s followed by a more in-depth standup for the Scrum teams where we talk about “What has been done, What will be done and What’s blocking us”. Written communication happens between the team and customers in Jira tickets. As part of our 4-eyes-principle peer review process, we also give feedback on code within pull requests that are used to ensure the quality of the code and train each other.

Process

We talked about iteration length in part 1 of this series. Now let’s look into how much time we spend on which things.

According to the survey, the majority of standups take 15 minutes, followed by 5 minutes and 10 minutes with a few ones taking up to 30 minutes.

This also reflects ours: we take 10 minutes for the company-wide stand up amongst 24 team members and another 15 minutes for the Scrum Team specific stand-ups.

For the review-phase, teams equally often selected 2 hours and 1 hour as the top-rated option followed closely by 30 minutes. 4 hours has been chosen by a few other teams, and the last one would be one day. For the retrospectives, the top-rated option was 30 minutes, followed by 1 hour. Much fewer teams take 2 hours or even up to 4 hours for the retrospective. For planning, we saw the most significant gap regarding top rated options: 30 minutes is followed by 4 hours and then 2 hours and 1 hours were selected.

In the teams I work with, we usually spend half a day doing sprint review, retrospective and planning altogether. Our reviews typically take 45 minutes, the retrospective about 1.5 hours and the planning another 30 minutes. We currently don’t do these meetings together with customers because the Scrum teams are stable teams that usually work for multiple customers. Instead, we do demos along with the clients individually outside of these meetings. Also, our plannings are quite fast because the team split up stories already in part of grooming sessions beforehand and we only estimate smaller tasks that don’t get split up later on as usually done in sprint planning 2.

When looking at how much time is being spent on Client work (billable, unbillable) and Internal work we got a good variety of results. The top-rated option for “Client work (billable)” was 50-75%, “Client work (unbillable)” was usually rated below 10% and “Internal work” defaulted to 10-25%. Our internal statistics match these options that have been voted by the industry most often.

I also asked about what is most important to you and your team when it comes to scheduling time? Providing value while keeping our tech debt in a reasonable place has been mentioned which is also true for us. Over the last year, we started introducing our global maintenance team which puts a dedicated focus on maintaining existing sites and keeping customer satisfaction high. By using a Kanban-approach there, we can prioritise timely critical bugs fixes when they are needed and work on maintenance-related tasks such as module updates in a coordinated way. We found it particularly helpful that the Scrum-teams are well connected with the maintenance-team to provide know-how transfer and domain-knowledge where needed.

Another one mentioned, “We still need a good time tracker.” At Amazee we bill by the hour that we work so accurate time tracking is a must. We do so by using Tempo Timesheets for Jira combined with the Toggl app.

How do you communicate and what processes do you follow? Please leave us a comment below. If you are interested in Agile Scrum training, don’t hesitate to contact us.

Stay tuned for the next post where we’ll look at defining work.

   
Categories: Drupal

Agaric Collective: A blooming community - Lakes and Volcanoes DrupalCamp 2017 Recap

8 December 2017 - 5:00am

Over 8 years have passed since there was a DrupalCamp in tropical Nicaragua. With the help of a diverse group of volunteers, sponsors, and university faculty staff, we held our second one. DrupalCamp Lagos y Volcanes ("Lakes & Volcanoes") was a great success with over 100 people attending in 2 days. It was a big undertaking so we followed giants' footsteps to prepare for our event. Lots of the ideas were taken from some of the organizers' experience while attending Drupal events. Others came from local free software communities who have organized events before us. Let me share what we did, how we did it, and what the results were.

Diversity

In line with DrupalCon, we used the "Big Eight" social identifiers to define diversity and encourage everyone to have a chance to present. Among other statistics, we are pleased that 15% of the sessions and 33% of the trainings were presented by women. We would have liked higher percentages, but it was a good first step. Another related fact is that no speaker presented more than one session. We had the opportunity to learn from people with different backgrounds and expertise.

https://twitter.com/drupalni/status/931566029771329536
https://twitter.com/drupalni/status/931550669953294339

Ticket cost

BADCamp, Drupal's largest event outside of DrupalCons, is truly an inspiration when it comes to making affordable events. They are free! We got close. For $1 attendees had access to all the sessions and trainings, lunch both days, a t-shirt, and unlimited swag while supplies lasted. Of course, they also had the networking opportunities that are always present at Drupal events. Even though the camp was almost free, we wanted to give all interested people a chance to come and learn so we provided scholarships to many attendees.

https://drive.google.com/open?id=1iYKwlLZIlieqVHrwUzOBuEU11MQIaMI3

Scholarships

The camp offered four types of scholarships:

  • Ticket cost: we would waive the $1 entry fee.
  • Transportation: we would cover any expense for someone to come from any part of the country.
  • Lodging: we would provide a room for people to stay overnight if they would come from afar.
  • Food: we would pay for meals during the two days of the camp.

About 40% of the people who attended did not pay the entry fee. We also had people traveling from differents parts of the country. Some stayed over. Others travelled back and forth each day. Everyone who requested a scholarship received it. It felt good to provide this type of opportunities and recipients were grateful for it.

https://twitter.com/drupalni/status/931940088522698752
https://drive.google.com/open?id=1uILaPOJOs7oIE1kjkm0aVhlSQMyqBkfo

Sponsors

As you can imagine, events like these need funding and we are extremely grateful to our sponsors:

These are people who attended from afar. Some were scholarship recipients. Others got educational memberships.

https://drive.google.com/open?id=16hVraHW2uVq_IBR_z78sdHp9gAayT1zp

Session recordings

Although we worked hard to make it possible for interested people to attend, we knew that some would not be able to make it. In fact, having sessions recorded would make it possible for anyone who understands Spanish to benefit from what was presented at the camp.

We used Kevin Thull’s recommended kit to record sessions. My colleague Micky Metts donated the equipment and I did the recording. I had the opportunity to be at some camps that Kevin recorded this year and he was very kind in teaching me how to use the equipment. Unfortunately, the audio is not clear in some sessions and I completely lost one. I have learned from the mistakes and next time it should be better. Check out the camp playlist in Drupal Nicaragua’s YouTube channel for the recordings.

Thank you Kevin. It was through session recordings that I improved my skills when I could not afford to travel to events. I’m sure I am not the only one. Your contributions to the Drupal community are invaluable!

https://drive.google.com/open?id=1cepjh_WJbTTnwSrlYbp2vXjG9Xdqc8jw
https://twitter.com/drupalni/status/932000997387526144

Sprints and live commit!

Lucas Hedding lead a sprint on Saturday morning. Most sprinters were people who had never worked with Drupal before the camp. They learned how to contribute to Drupal and worked on a few patches. One pleasant surprise was when Lucas went on stage with one of the sprinters and proceeded with the live commit ceremony. I was overjoyed that even with a short sprint an attendee’s contribution was committed. Congrats to Jorge Morales for getting a patch committed on his first sprint! And thanks to Holger Lopez, Edys Meza, and Lucas Hedding for mentoring and working on the patch.

https://twitter.com/drupalni/status/931968505406218240

Swag

Northern Lights DrupalCamp decided to change the (physical) swag for experiences. What we lived was epic! For our camp, we went for a low cost swag. The only thing we had to pay for was t-shirts. Other local communities recommended us to have them and so we did. The rest was a buffet of the things I have collected since my first DrupalCon, Austin 2014: stickers, pins, temporary tattoos. It was funny trying to explain where I had collected each item. I could not remember them all, but it was nice to bring back those memories. We also had hand sanitizer and notebooks provided by local communities. Can you spot your organization/camp/module/theme logo on our swag table?

https://twitter.com/drupalni/status/931555663972634624
https://twitter.com/drupalni/status/931893854311239680
https://drive.google.com/open?id=1hx8bFDO79gN8Y2IKxdyrUpKXx-H0TsDN

Free software communities

We were very lucky to have the support of different local communities. We learned a lot from their experiences organizing events. They also sent an army of volunteers and took the microphone to present on different subjects. A special thank you to the WordPress Nicaragua community who helped us immensely before, during, and after the event. It showed that when communities work together, we make a bigger impact.

https://drive.google.com/open?id=1C3jLFblkPwcQ8ZQwgU-edS7Q2DArLw51
https://twitter.com/drupalni/status/932025833207861248

Keeping momentum

Two weeks after the camp, we held two Global Training Days workshops. More than 20 people attended. I felt honored when some attendees shared that they had travelled from distant places to participate. One person travelled almost 8 hours. But more than distance, it was their enthusiasm and engagement during the workshops that inspired us. The last month has been very exhausting, but the local community is thrilled with the result.

https://twitter.com/lucashedding/status/937693447804383232
https://twitter.com/drupalni/status/937034655718666241

A blooming community

The community has come a long way since I got involved in 2011. We have had highs and lows. Since Lucas and myself kickstarted the Global Training Days workshops in 2014 we have seen more interest in Drupal. By the way, this edition marked our third anniversary facilitating the workshop! But despite all efforts, people would not stay engaged for long after initially interacting with the community. Things have changed.

In the last year interest in Drupal has increased. We have organized more events and more people have attended. Universities and other organizations are approaching us requesting trainings. And what makes me smile most… the number of volunteers is at its all-time peak. In the last month alone, the number of volunteers have almost doubled. The DrupalCamp and the Global Training Days workshops contributed a lot to this.

We recognize that the job is far from complete and we already have plans for 2018. One of the things that we need to do is find job opportunities. Even if people enjoy working with Drupal they need to make a living. If you are an organization looking for talent consider Nicaragua. We have very great developers. Feel free to contact me to put you in contact with them.

https://drive.google.com/open?id=1yukr-xzALMowbeJlFOdwPGiO5MC5YWMm
https://drive.google.com/open?id=1kSPBMDNSIrGRb5BeLXKVE2xxrfOUJphA
https://twitter.com/drupalni/status/931958170259468289

A personal thank you

I would like to take this opportunity to say thanks to Felix Delattre. He started the Drupal community in Nicaragua almost a decade ago. He was my mentor. He gave me my first Drupal gig. At a time when there was virtually no demand for Drupal talent in my country, that project helped me realize that I could make a living working with Drupal. But most importantly, Felix taught me the value of participating in the community. I remember creating my drupal.org account after he suggested it in a local meetup.

His efforts had a profound effect on the lives of many, even beyond the borders of my country or those of a single project. Felix was instrumental in the development of local communities across Central and South America. He also started the OpenStreetMap (OSM) community in Nicaragua. I still find it impressive how OSM Nicaragua have mapped so many places and routes. In some cities, their maps are more accurate and complete than those of large Internet corporations. Thank you Felix for all you did for us!

We hope to have you in 2018!

The land of lakes and volcanoes awaits you next year. Nicaragua has a lot to offer and a DrupalCamp can be the perfect excuse to visit. ;-) Active volcanoes, beaches to surf, forests rich in flora and fauna are some of the charms of this tropical paradise.

Let’s focus on volcanoes for a moment. Check out this website for a sneak peek into one of our active volcanoes. That is Masaya, where you can walk to the border of the crater and see the flow of lava. Active volcanoes, dormant volcanoes, volcanoes around a lake, volcanoes in the middle of a lake, lagoons on top of volcanoes, volcanoes where you can “surf” down the slope... you name it, we have it.

We would love to have you in 2018!

https://twitter.com/drupalni/status/932024521674063872

In this album there will be more photos of the event.

Categories: Drupal

Colan Schwartz: Aegir: Your open-source hosting platform for Drupal sites

7 December 2017 - 1:15pm
Topics: 

If you need an open-source solution for hosting and managing Drupal sites, there's only one option: the Aegir Hosting System. While it's possible to find a company that will host Drupal sites for you, Aegir helps you maintain control whether you want to use your own infrastructure or manage your own software-as-a-service (SaaS) product. Plus, you get all the benefits of open source.

Aegir turns ten (10) today. The first commit occurred on December 7th, 2007. We've actually produced a timeline including all major historical events. While Aegir had a slow uptake (the usability wasn't great in the early days), it's now being used by all kinds of organizations, including NASA.

I got involved in the project a couple of years ago, when I needed a hosting solution for a project I was working on. I started by improving the documentation, working on contributed modules, and then eventually the core system. I've been using it ever since for all of my SaaS projects, and have been taking the lead on Drupal 8 e-commerce integration. I became a core maintainer of the project about a year and a half ago.

So what's new with the project? We've got several initiatives on the go. While Aegir 3 is stable and usable now (Download it!), we've started moving away from Drush, which traditionally handles the heavy lifting (see Provision: Drupal 8.4 support for details), and into a couple of different directions. We've got an Aegir 4 branch based on Symfony, which is also included in Drupal core. This is intended to be a medium-term solution until Aegir 5 (codenamed AegirNG), a complete rewrite for hosting any application, is ready. Neither of these initiatives are stable yet, but development is on-going. Feel free to peruse the AegirNG architecture document, which is publicly available.

Please watch this space for future articles on the subject. I plan on writing about the following Aegir-related topics:

  • Managing your development workflow across Aegir environments
  • Automatic HTTPS-enabled sites with Aegir
  • Remote site management with Aegir Services
  • Preventing clients from changing Aegir site configurations

Happy Birthday Aegir! It's been a great ten years.

This article, Aegir: Your open-source hosting platform for Drupal sites, appeared first on the Colan Schwartz Consulting Services blog.

Categories: Drupal

Lullabot: Building a Sustainable Model for Drupal Contrib Module Development

7 December 2017 - 8:50am
Matt and Mike talk with Webform 8.5.x creator Jacob Rockowitz, #D8Rules initiative member Josef Dabernig, and WordPress (and former Drupal) developer Chris Wiegman about keeping Drupal's contrib ecosystem sustainable by enabling module creators to benefit financially from their development.
Categories: Drupal

Wunderkraut Sweden Blog: Adding a external JavaScript library to composer

7 December 2017 - 2:37am
Some module require that you download external Javascript-libraries, and in drupal 8 that should be done in Composer.  The module Masonry require the JavaScript library with the same name. So we need to include the package in composer.json, like:   "repositories":[ { "type":"composer", "url":"https://packages.drupal.org/8" }, { "type": "package", "package": { "name": "desandro/masonry", "version": "master", "type": "drupal-library", "dist": { "url": "https://unpkg.com/masonry-layout@4/dist/masonry.pkgd.min.js", "type": "file" } } }, And in the require part that is: "require":{ ... "desandro/masonry":"master",   ... }, And then we need to add libraries in extra part of we do not have that: "extra":{ ... "web/libraries/{$name}":[ "type:drupal-library… Read More
Categories: Drupal

ComputerMinds.co.uk: Aegir is ten!

6 December 2017 - 11:11pm

Ten years ago today Adrian Rossouw committed the first code for the Aegir project. ComputerMinds have been involved in Aegir for many of those years, particularly one of our senior developers: Steven Jones. We asked him some questions about it to mark the occasion.

Categories: Drupal

CiviCRM Blog: Registering multiple people for multiple different events - using Webforms - and LOTS of conditionals

6 December 2017 - 3:37pm

We had a scenario where client runs a cluster of events, and folk sign up for these, and usually the registrants signs up for all events, but then they might invite mum to the Dinner, and brother John to the Talk, etc etc.

We wanted to achieve this on a single form with a single payment. We explored both CiviCart and Drupal Commerce but in the end concluded we could achieve this in a much lighter way with good old webforms.

The outcome is that up to 6 people can be registered for any combination of events, eg 

  • c1 registers for Events A, B, C, D, E and F
  • c2 registers for B, C and D
  • c3 registers for A and B
  • c4 registers for A and F
  • etc

To see the full gory details of the conditionals approach we took, please read the full blog on Fuzion's site.

Case studies and user storiesCiviEventDrupal
Categories: Drupal

myDropWizard.com: Drupal 6 security update for Mailhandler!

6 December 2017 - 12:37pm

As you may know, Drupal 6 has reached End-of-Life (EOL) which means the Drupal Security Team is no longer doing Security Advisories or working on security patches for Drupal 6 core or contrib modules - but the Drupal 6 LTS vendors are and we're one of them!

Today, there is a Critical security release for the Mailhandler module to fix a Remote Code Execution (RCE) vulnerability.

Remote Code Execution vulnerabilities are scary - it basically means that an attacker can run arbitrary code on your site. However, there a number of mitigating factors in this case, so, it's recommended to read the security advisory for Drupal 7.

With the help of the D6LTS vendors, a new version was released for Drupal 6 as well.

You can also download the patch the patch.

If you have a Drupal 6 site using the Mailhandler module, we recommend you update immediately! We have already deployed the patch for all of our Drupal 6 Long-Term Support clients. :-)

If you'd like all your Drupal 6 modules to receive security updates and have the fixes deployed the same day they're released, please check out our D6LTS plans.

Note: if you use the myDropWizard module (totally free!), you'll be alerted to these and any future security updates, and will be able to use drush to install them (even though they won't necessarily have a release on Drupal.org).

Categories: Drupal

Isovera Ideas & Insights: The Company-wide Bookclub - Waste of Time or Change Catalyst?

6 December 2017 - 10:39am
Last summer, whilst I was on vacation, my staff plotted against me. It was a sneaky, devious plot intended to subterfuge my authority. They started a BOOK CLUB.
Categories: Drupal

Isovera Ideas & Insights: Configuration Management: Tips, Tricks & Perspective [NEDCamp 2017]

6 December 2017 - 8:50am
Sharing Tips, Tricks, and Perspective for and of Drupal 8’s Configuration Management System, “Configuration Management: Tips, Tricks & Perspective” was presented at NEDCamp 2017.
Categories: Drupal

Isovera Ideas & Insights: A Lifecycle Approach to Configuration Workflows [NEDCamp 2017]

6 December 2017 - 8:45am
Sharing insights of how Drupal empowers users to build complex site structures and relationships directly in the administrative user interface, “A Lifecycle Approach to Configuration Workflows” was presented at NEDCamp 2017.
Categories: Drupal

qed42.com: Google Assistant Integration with Drupal

6 December 2017 - 7:53am
The Rise of Assistants

In last couple of years we have seen the rise of assistants, AI is enabling our lives more and more and with help of devices like Google Home and Amazon Echo, its now entering our living rooms and changing how we interact with technology. Though Assistants have been around for couple of years through android google home app, the UX is changing rapidly with home devices where now we are experiencing Conversational UI i.e. being able to talk to devices, no more typing/searching, you can now converse with your device and book a cab or play your favourite music. Though the verdict on home devices like Echo and Google home is pending, the underlying technology i.e. AI based assistants are here to stay.

In this post, we will explore Google Assistant Developer framework and how we can integrate it with Drupal.


Google Assistant works with help of Apps that define actions which in turn invokes operations to be performed on our product and services. These apps are registered with Actions on Google, which basically is a platform comprising of Apps and hence connecting different products and services via Apps. Unlike traditional mobile or desktop apps, users interact with Assistant apps through a conversation, natural-sounding back and forth exchanges (voice or text) and not traditional Click and Touch paradigms. 

The first step in the flow is understanding use requests through actions, so lets learn more about it. 

Categories: Drupal

qed42.com: Google Assistant Integration with Drupal

6 December 2017 - 7:26am
The Rise of Assistants

In last couple of years we have seen the rise of assistants, AI is enabling our lives more and more and with help of devices like Google Home and Amazon Echo, its now entering our living rooms and changing how we interact with technology. Though Assistants have been around for couple of years through android google home app, the UX is changing rapidly with home devices where now we are experiencing Conversational UI i.e. being able to talk to devices, no more typing/searching, you can now converse with your device and book a cab or play your favourite music. Though the verdict on home devices like Echo and Google home is pending, the underlying technology i.e. AI based assistants are here to stay.

In this post, we will explore Google Assistant Developer framework and how we can integrate it with Drupal.


Google Assistant works with help of Apps that define actions which in turn invokes operations to be performed on our product and services. These apps are registered with Actions on Google, which basically is a platform comprising of Apps and hence connecting different products and services via Apps. Unlike traditional mobile or desktop apps, users interact with Assistant apps through a conversation, natural-sounding back and forth exchanges (voice or text) and not traditional Click and Touch paradigms. 

The first step in the flow is understanding use requests through actions, so lets learn more about it. 

Categories: Drupal

Vardot: 7 Drupal Modules that Every E-commerce Website Must Have

6 December 2017 - 6:03am
Dmitrii Susloparov December 6, 2017

Global e-commerce sales topped 1 trillion US dollars in 2012 for the first time in history. Industry estimates projected that sales will reach 4 trillion in 2020. As more enterprises conduct their core businesses on the Internet, Drupal has evolved from being a pure content management system to a full-fledged e-commerce site-builder. While e-commerce is not (yet) part of Drupal's core, support for it comes in the form of contributed modules.

 

A quick search on Drupal.org for stable, actively developed e-commerce modules generated 330 hits. Many such modules are optional for your online storefront. For example, AdSense, Affiliate Store, and Amazon Store are of no interest to you unless you want to monetize your website through advertising and affiliate marketing. Some modules such as Barcode are only relevant if your storefront requires that specific functionality.

 

In this post, we describe a set of 7 best-of-breed e-commerce Drupal modules which together implement the core functionalities of an online storefront. These modules focus on enterprise mission-critical operations that drive business results and have a direct impact on the bottom line.

 

7 E-Commerce Modules that Every Drupal Website Must Have

So let's not keep you in suspense for too long and list e-commerce modules that we at Vardot think are essential for every online shop built with Drupal:

 

  1. Drupal Commerce vs Ubercart

  2. Commerce Recommender / Ubercart Recommender

  3. Commerce Upsell / UC Upsell

  4. Invoice

  5. Commerce Shipping

  6. Mailjet / MailChimp E-Commerce

  7. Currency

 

Now let’s discuss each of the modules in particular and see why it is so great.

 

 

Drupal Commerce vs Ubercart

 

As I mentioned before, e-commerce is not a built-in core feature of Drupal. The easiest way to add e-commerce functionalities to your website would be installing one of 2 competing Drupal modules: Drupal Commerce vs Ubercart. The 2 modules are often described as e-commerce ecosystems or frameworks which depend on third-party modules to make them feature-complete.

 

Drupal Commerce and Ubercart are both excellent e-commerce frameworks with their own active developer community. Ubercart is known for being easier to configure, and being more ready to deploy out-of-the-box. In contrast, Drupal Commerce is designed to be customizable and can scale up to support large enterprise e-commerce operations.
 

If you operate a small business with modest e-commerce requirements and a small I.T. budget, Ubercart is a good choice. Medium to large enterprises should consider Drupal Commerce because it is flexible enough to satisfy more complex requirements, and scalable enough to support future business growth. One caveat is that you need to possess technical expertise and be prepared to spend considerable time and resources to extend Drupal Commerce to do exactly what you want. You can find a more detailed comparison of Drupal Commerce with Ubercart in this article.

 

 

Commerce Recommender/Ubercart Recommender

 

To optimize revenue growth in e-commerce, enterprises need to find ways to boost revenue per order. Cross selling and upselling are 2 key techniques to achieve revenue growth objectives. Commerce Recommender and Ubercart Recommender are 2 Drupal modules you should install to enable cross selling on the Drupal Commerce and Ubercart platforms, respectively.

 

Both modules make personalized recommendations for your web users. The recommendations are based on the user’s current order and any previous purchases. If the user is a new customer, the lack of a prior purchase history limits the recommendations that the software can make. In such a scenario, the cross selling module analyzes the purchase history of other users who previously bought the same product in the current order, and recommends products which these users also ordered in the past.

 

 

Commerce Upsell/UC Upsell

 

Upselling is different from cross selling in that the former entices the customer to upgrade to a more expensive product with a better profit margin, while the latter is about buying additional products such as an accessory. For upselling, Commerce Upsell and UC Upsell are the respective modules to install on the Drupal Commerce and Ubercart platforms.

 

The 2 modules allow site builders to define related products for upselling purposes. During a customer checkout, the software recommends product upgrades based on what products are in the shopping cart.

 

 

Invoice

 

Invoice is a Drupal module which generates sales invoices for your online business. You can customize the format as well as the content of your invoices using template files. After instantiating your sales invoices, you can view them online as well as output them in PDF or html format.

 

 

Commerce Shipping

 

Your online customers can place their orders from any country in the world. Before they purchase your products, they want to know the shipping options and their associated cost. Commerce Shipping is a shipping rate calculator. It is designed as a shipping calculation platform which depends on third-party carrier-specific modules to provide the actual shipping rates. For instance, it supports UPS, FedEx and USPS through the modules Commerce UPS, Commerce FedEx, and Commerce USPS, respectively. Using rules, site administrators can configure which shipping services are available on a web store and how they are charged, including flat shipping rates.

 

 

Mailjet/MailChimp E-Commerce

 

Despite the phenomenal growth in social media, email marketing remains an integral part of any online marketing plan. Marketing and sales campaigns are regularly conducted by sending email to people on subscription lists. The Mailjet module supports email marketing on Drupal Commerce. Alternatively, MailChimp E-Commerce supports both Drupal Commerce and Ubercart. One e-commerce best practice is to offload email sending to third-party cloud-based email service providers. Mailjet and MailChimp E-Commerce integrate with the Mailjet and MailChimp email service providers, respectively. To use either module, you need to first sign up with the respective company. The services are free if email volume is kept below a certain threshold. Both modules enable site administrators to create email campaigns, personalize the marketing message, and track campaign effectiveness.

 

 

Currency

 

E-commerce reels in online customers from the farthest countries of the earth, together with their different local currencies. The online store must be able to convert product prices from the enterprise’s own preferred currency to the local currency of each customer. In addition, the newly converted local amount must be presented in a format that conforms to the customer’s regional convention. Currency is a Drupal module that specializes in converting world currencies based on stored exchange rates. In addition, this module can automatically customize the display format of price information based on the locale of each online shopper.

 

 

Summary & Conclusion

E-commerce is the key to unlocking revenue generation potential of an enterprise Drupal website. Drupal provides excellent e-commerce modules under two main technology ecosystems, Drupal Commerce and Ubercart.

 

While integrating the right modules is critical to providing the necessary e-commerce functionalities, site builders also need to pay attention to other important factors such as SEO and site security. SEO will bring more visitors and potential customers to a website, and site security will protect them against hackers when they transact business online. For more information about essential Drupal modules, please refer to our earlier blog posts: 5 Security Modules for Every Drupal Website and 10 SEO Modules That Every Drupal Website Must Have.

 

The building of an e-commerce website, that is SEO-friendly and secure, requires expertise that may be beyond the capability of many enterprises. If you require professional Drupal assistance, please contact Vardot.

 

Categories: Drupal

Pages