emGee Software Solutions Custom Database Applications

Share this

Drupal CMS

Valuebound: My first impression of learning AngularJS

Drupal.org aggregator - Wed, 01/10/2018 - 05:07

Before we delve into the ocean of understanding and learning curves of AngularJS, let me share my insights and experience of working on web development. Later, I will tell you why experiences are worth sharing.

For the past four-and-a-half years, I have been working in an IT industry. Started my career as a Drupal developer, working on web building, site building, extending features, development as well as designing. During this journey, I came across many technologies which I was expected to learn from scratch to bind/ integrate one to another. 

Cutting a long story to short! So why did I started learning AngularJS? What is the scope of AngularJS? And why I am sharing my experiences with…

Categories: Drupal CMS

Glassdimly tech Blog: Overriding Drupal 8's .eslintrc.json File in Your Theme With Extends

Drupal.org aggregator - Tue, 01/09/2018 - 14:44

I had to do a little RTFMing today, and so I thought I'd post about it.

First of all, this is how you set up PhpStorm to use ES6 eslint settings. You may find it useful

Is the linter getting in your way? The first way to override an eslint setting is inline, disabling it on a one-off basis.

Categories: Drupal CMS

Glassdimly tech Blog: Drupal ES6 Linting in PhpStorm. Or, PhpStorm Drupal Error: Cannot find module 'eslint-config-airbnb'

Drupal.org aggregator - Tue, 01/09/2018 - 12:40

You may not know this, but support for ES6 was added in Drupal 8.4. It wasn't in the release notes, but I was delighted to learn of it.

You have probably landed here because you have gotten Error: Cannot find module 'eslint-config-airbnb'.

Categories: Drupal CMS

DrupalEasy: Mastering Pantheon Workflows (especially these 5 elements) is Awesome

Drupal.org aggregator - Tue, 01/09/2018 - 12:28

The following is a guest blog post by Brian Coffelt.

Train to Reign

I’m surprised often by the slow adoption rate of quality development workflows. Time probably plays a big part. One thing I have experienced though, is that in order to get the full value of tools, especially software, you really need to spend the time learning how to use them properly.  

Since I changed my career to become a Drupal developer, I haven’t had a day of regret, nor a day when I did not realize that the key to success is learning more: More about the software, more about techniques, and more about the tools that make Drupal development better. It all feeds into what I learned early on in DrupalEasy’s Career training program, and that I still feel are the best parts of this amazing Drupal-based vocation: to create quality work and become part of the Community.

So when I had the chance to take DrupalEasy’s Mastering Pantheon Workflows course, I jumped at it.  I have been relying on (and loving!) Pantheon’s website management platform since my early career training, and am a huge fan of the great workflow and development tools it offers.  The Workflows class, which is several afternoons a week for six weeks, was time truly well spent. It taught me to really leverage Pantheon’s advantages, and has made me a better developer.

Top 5 Takeaways

The quality of the curriculum and instruction of this course are second to none.  I mean it. DrupalEasy’s insight on what is important provides tremendous value to the time spent in the class and honing your skills. As any professional web developer knows, a great development workflow is worth its weight in gold. This class helped me learn a Docker-based local development workflow that has been directly applied to my everyday routine as well as that of my team.  In addition, learning how Composer manages dependencies was an eye opener for me. It allows my projects to be very lean, efficient, and modular. There are plenty more topics I can point to, but the top 5 area’s we covered that make my day-to-day better and easier are:

  1. Composer integration and dependency management
  2. Drupal 8 configuration management (exporting & importing)
  3. Docksal/Lando local environment structure & setup
  4. Higher level Terminus commands
  5. Development workflows between Pantheon environments and local

The instruction, either direct or via additional screencasts, was always thorough, well planned, and thoughtful. The instructor, Mike Anello (@ultimike), always allows time for questions and troubleshooting. Integrating a class Slack channel was valuable for questions and troubleshooting between classes as well as resource sharing (links, documents, etc.). I still keep in contact with my classmates as often as I can via Slack, email or Drupal events.

Worth the time

It may seem like a few afternoons a week for six weeks will chew up your schedule, but in fact, the opposite is the case. The skills acquired from this class can immediately boost your production, proficiency, and overall value, all of which are well worth the financial and time commitment.

I am definitely a better Drupal developer after having taken the Workflows course. The knowledge, experience, and overall comfort level I achieved has given me valuable skills that I use and share with others every day. The class always stresses the pursuit of best practices to minimize development time and maximize results. I recommend this course to Drupal developers looking to streamline their Pantheon development workflow. It’s certainly well worth the investment.

DrupalEasy’s next Mastering Professional Drupal Development Workflows with Pantheon course starts in February.  Contact DrupalEasy for more information.

Categories: Drupal CMS

Zhilevan Blog: How to write custom Twig filter in Drupal 8

Drupal.org aggregator - Tue, 01/09/2018 - 12:24
Twig is one of the  good template engines which is provided by SensioLabs, It’s syntax originates from Jinja and Django template, it’s Secure, Flexible and Fast :  Twig is a modern template engine for PHP • Fast: Twig compiles templates down to plain optimized PHP code. The overhead compared to regular PHP code was reduced to the very minimum.
Categories: Drupal CMS

Acro Media: Drupal Commerce 2: How to Add Storewide Discounts

Drupal.org aggregator - Tue, 01/09/2018 - 10:33

Drupal Commerce 2 comes with an easy to use Promotions sub-module built right in to its core. No add-on modules are needed anymore. The sub-module lets you add a variety of promotions to your eCommerce website, such as discounts off of an entire order, discounts based on the amount spent, product and category specific discounts, and more. The options are extremely versitile, usage statistics are available and coupon codes can easily be added to any promotion that has been created.

In this Acro Media Tech Talk video, we user our Urban Hipster Commerce 2 demo site to quickly show you how to add a 20% storewide discount through the Promotion sub-module UI. 

Its important to note that this video was recorded before the official 2.0 release of Drupal Commerce. The current state of the Promotions sub-module is even more robust than what you see here, and many excellent improvements have been (and continue to be) made.

Urban Hipster Commerce 2 Demo site

This video was created using the Urban Hipster Commerce 2 demo site. We've built this site to show the adaptability of the Drupal 8, Commerce 2 platform. Most of what you see is out-of-the-box functionality combined with expert configuratoin and theming.

More from Acro Media Drupal modules in this demo

Categories: Drupal CMS

Matt Glaman: My first day with React.js

Drupal.org aggregator - Tue, 01/09/2018 - 07:00
My first day with React.js mglaman Tue, 01/09/2018 - 09:00

On New Years Day I sat down over ReactJS and decided to see what all the commotion was about. I primarily work on the backend and have dabbled lightly with AngularJS. Generally, my JavaScript work just falls to basic DOM manipulation using vanilla JS or jQuery. Nothing fancy, no components. ReactJS is fun.

Categories: Drupal CMS

Zivtech: Why We Abandoned SASS in Our Drupal Theme

Drupal.org aggregator - Tue, 01/09/2018 - 06:25
Why we abandoned SASS and switched to PostCSS in our Drupal theme

A few months ago at Zivtech, our team started to look at best ways to improve the performance of our theme and take full advantage of controlling our markup with twig. We had ported our D7 theme for Drupal 8 and added a lot of great functionalities, such as Pattern Lab, CSS regression tests, etc. We wrote our own utility classes, Mixins and SASS functions, integrated flexboxgrid, and used Gutenberg as a responsive typography system. While we had all that we needed, we still ended up with too much convolution in our process and bloated CSS bundles at the end of our projects.

While SASS has helped us tremendously and allowed fast paced development in the past few years, we lost track of our CSS output. It’s a common complaint about preprocessors, and if we take a closer look at the important CSS conventions we need to watch for (DRY, reusable, less specific, no deep nesting, etc.), I can see how we slowly drifted away from a rigorous implementation. There are several reasons for it, SASS not necessarily being the culprit. It is a very versatile tool, and as such, the responsibility falls on its user. The real question is how to implement a proper workflow that we can enforce as a team in order to:

  • Deliver a consistent product
  • Improve performance and quality
  • Facilitate development among developers

The answer may be…write less CSS! Not LESS, less. Leverage TWIG to write or generate dynamic classes based on a solid set of utility classes. The concept is not new, but front-end Drupal developers have been burned by the lack of control of the markup for a long time. We don’t have excuses now, so let’s change our ways and enter the postmodern era.

Read more
Categories: Drupal CMS

Agiledrop.com Blog: AGILEDROP: 2017 in review

Drupal.org aggregator - Tue, 01/09/2018 - 02:50
Happy new year! Here at AGILEDROP, we will remember 2017 as the year when we became more focused and systemised. We worked hard, learned new things and had fun, lots of fun. Along with the growth in personnel and revenue, I can say it was a good year.     New business model, new processes At the end of 2016, we changed our business model and moved away from being a full-service agency to become trusted partners with digital agencies in building Drupal websites. With great foundations from 2016, we started tweaking processes and documenting them. To become more productive we also… READ MORE
Categories: Drupal CMS

Droptica: Droptica: Summary of the year 2017 in Droptica

Drupal.org aggregator - Tue, 01/09/2018 - 02:42
Another year is over, and we are glad to acknowledge that we are very proud of what happened during this period! In short, 2017 was the best year in the company’s five-year history. That is why we decided to share a brief summary of the year with you. See what we achieved over the last 12 months and what we have in store for 2018.    Reasons to be proud
Categories: Drupal CMS

Amazee Labs: Extending GraphQL: Part 3 - Mutations

Drupal.org aggregator - Tue, 01/09/2018 - 02:20
Extending GraphQL: Part 3 - Mutations

The graphql_core module bundled with the graphql module automatically exposes types and fields to traverse Drupal’s entity system. However, since beta 1 it does not do the same for mutations anymore. The fact that it is not possible to write or update data using GraphQL caused much confusion. I want to shed light on this topic and explain the way mutations are intended to work.

Philipp Melab Tue, 01/09/2018 - 11:20

Before releasing the first beta version of the GraphQL module for Drupal, we removed a feature that automatically added input types and mutation fields for all content entities in the GraphQL schema. This may seem to be counter-intuitive, but there were ample reasons.

Why automatic mutations were removed

While GraphQL allows the client to freely shape query and response, mutations (create, update or delete operations) are by design atomic. A mutation is a root level field that is supposed to accept all necessary information as arguments and return a queryable data object, representing the state after the operation. Since GraphQL is strictly typed, this means that there is one mutation field and one distinct input type for every entity bundle. Also, because Drupal entities tend to have a lot of fields and properties, this resulted in very intricate and hard to use mutations, increasing the schema size, even though  90% of them were never used. 

On top of that, some entity structures added additional complexities: For example, just trying to create an article with a title and a body value while the comment module is enabled results in a constraint violation, as the comment field requires an empty list of comments at the least. 

These circumstances led to a technically correct solution that unfortunately burdened the client with too much knowledge about Drupal internals and was therefore not usable in practice. It became apparent that this had to break and change in the future. Now, because we removed it, the rest of the GraphQL API can become stable. The code is still available on Github for reference and backwards compatibility, but there are no plans to maintain this further.

How to use mutations

So there is no way to use mutations out of the box. You have to write code to add a mutation, but that doesn’t mean it’s complicated. Let’s walk through a simple example. All code is available in the examples repository.

First, you have to add an input type that defines the shape of the data you want your entity mutation to accept:

<?php namespace Drupal\graphql_examples\Plugin\GraphQL\InputTypes; use Drupal\graphql\Plugin\GraphQL\InputTypes\InputTypePluginBase; /** * The input type for article mutations. * * @GraphQLInputType( * id = "article_input", * name = "ArticleInput", * fields = { * "title" = "String", * "body" = { * "type" = "String", * "nullable" = "TRUE" * } * } * ) */ class ArticleInput extends InputTypePluginBase { }

 

This plugin defines a new input type that consists of a “title” and a “body” field.

The first mutation plugin is the “create” operation. It extends the CreateEntityBase class and implements only one method, which will map the properties of our input type (above) to the target entity type and bundle, as defined in the annotation.

<?php namespace Drupal\graphql_examples\Plugin\GraphQL\Mutations; use Drupal\graphql\GraphQL\Type\InputObjectType; use Drupal\graphql_core\Plugin\GraphQL\Mutations\Entity\CreateEntityBase; use Youshido\GraphQL\Execution\ResolveInfo; /** * Simple mutation for creating a new article node. * * @GraphQLMutation( * id = "create_article", * entity_type = "node", * entity_bundle = "article", * secure = true, * name = "createArticle", * type = "EntityCrudOutput", * arguments = { * "input" = "ArticleInput" * } * ) */ class CreateArticle extends CreateEntityBase { /** * {@inheritdoc} */ protected function extractEntityInput(array $inputArgs, InputObjectType $inputType, ResolveInfo $info) { return [ 'title' => $inputArgs['title'], 'body' => $inputArgs['body'], ]; } }

 

The base class handles the rest. Now you already can issue a mutation using the GraphQL Explorer:

The mutation will return an object of type EntityCrudOutput that already contains any errors or constraint violations, as well as - in case the operation was successful - the newly created entity.

If you try to create an article with an empty title, typed data constraints will kick in, and the mutation will fail accordingly:

The update mutation looks almost the same. It just requires an additional argument id that contains the id of the entity to update and extends a different base class.

<?php namespace Drupal\graphql_examples\Plugin\GraphQL\Mutations; use Drupal\graphql\GraphQL\Type\InputObjectType; use Drupal\graphql_core\Plugin\GraphQL\Mutations\Entity\UpdateEntityBase; use Youshido\GraphQL\Execution\ResolveInfo; /** * Simple mutation for updating an existing article node. * * @GraphQLMutation( * id = "update_article", * entity_type = "node", * entity_bundle = "article", * secure = true, * name = "updateArticle", * type = "EntityCrudOutput", * arguments = { * "id" = "String", * "input" = "ArticleInput" * } * ) */ class UpdateArticle extends UpdateEntityBase { /** * {@inheritdoc} */ protected function extractEntityInput(array $inputArgs, InputObjectType $inputType, ResolveInfo $info) { return array_filter([ 'title' => $inputArgs['title'], 'body' => $inputArgs['body'], ]); } }

 

Now you should be able to alter any articles:

And the delete mutation is even simpler.

<?php namespace Drupal\graphql_examples\Plugin\GraphQL\Mutations; use Drupal\graphql_core\Plugin\GraphQL\Mutations\Entity\DeleteEntityBase; /** * Simple mutation for deleting an article node. * * @GraphQLMutation( * id = "delete_article", * entity_type = "node", * entity_bundle = "article", * secure = true, * name = "deleteArticle", * type = "EntityCrudOutput", * arguments = { * "id" = "String" * } * ) */ class DeleteArticle extends DeleteEntityBase { }

 

This will delete the entity, but it’s still available in the response object, for rendering notifications or for subsequent queries.

That’s a wrap. With some trivial code, we can implement a full CRUD interface for an entity type. If you need multiple entity types, you could use derivers and services to make it more DRY.

Plans

This way we can create entity mutations that precisely fit the needs of our current project. It requires a little boilerplate code and might not be the most convenient thing to do, but it’s not terrible and works for now.

That doesn’t mean we are not planning to improve. Currently, the rules module is our best hope for providing zero-code, site-building driven mutations. The combination would be tremendously powerful.

If you want out-of-the-box mutations in GraphQL, go and help with #d8rules!

Categories: Drupal CMS

Palantir: The Commonwealth of Massachusetts

Drupal.org aggregator - Mon, 01/08/2018 - 15:45
The Commonwealth of Massachusetts brandt Mon, 01/08/2018 - 17:45 Helping Massachusetts Improve the State of the Web

Helping improve the digital experience for constituents.

Highlights
  • Migration to flexible, open-source platform

  • Restructure of content for easy search

  • User-centric design based on common tasks

We want to make your project a success.

Let's Chat. Our Client

Home to more than 6.8 million people, the Commonwealth of Massachusetts is the most populous state in New England. Like everywhere in the U.S., those 6.8 million people rely on their state government to provide them with services and support, which includes providing the information they need to perform vital tasks required by law. Whether those tasks include renewing a driver’s license, applying for food assistance, or registering a new business, constituents need to be able to find relevant information efficiently. Mass.gov is the flagship website for the Commonwealth, and its main goal is to provide online support to its constituents.

The Challenge

The challenge facing the Commonwealth was two-fold, one part a challenge for the constituents of Massachusetts, and one part a technology problem for the government dedicated to serving those people. The Commonwealth’s website reflected its internal organizational structure instead of organizing content in a way that made sense to its users. The old site also was on an antiquated, proprietary content management system that had not been able to address changing needs over time and was about to be decommissioned.

The Solution

Complex problems are best solved by having smart and talented people think and work passionately. It was a privilege for Palantir to be part of a team that included designers and strategists from another vendor, along with data scientists, content authors, and developers from the Commonwealth’s Executive Office of Technology Services and Security (EOTSS). This multi-party engagement saw many opinions and thoughts brought to light and explored, as the various groups coalesced into a single, functional team.

The team knew all of Mass.gov’s information needed to be pulled together into a constituent-focused model, so the team took a data-driven approach that began with using proxy indicators (search being one of them) to determine what top tasks users were trying to complete online. This allowed Palantir to build a framework to serve content related to those tasks. By figuring out what people were trying to accomplish on the site (such as renewing a driver’s licence or reserving a campsite in a state park), the Mass.gov team would then be able to write helpful content about those items.

In a nutshell, the main goals were to:

  • Identify high-value content
  • Write related high-value content
  • Structure that content in a way that was intuitive to constituents

The minimum viable product was a proof of concept focused on 10 of the most common tasks performed on Mass.gov. A scalable framework was then built for any pages after those initial 10. By taking this approach, Palantir was able to help prove value in the tools chosen for this project quickly, which helped EOTSS validate that the tasks highlighted were useful to the constituents. It also validated that the process of entering content was scalable for Mass.gov’s editorial team.

After the first 10 pages, the team worked with the rest of Mass.gov’s content based on the concept that 20% of the site’s content addresses 80% of constituents needs. The team identified the top 20% of content by traffic (and deleted a large amount of unnecessary or redundant content), and then started optimizing the new Drupal 8 platform. Placing focus on constituents first throughout the entire build helped frame conversations and decisions for Palantir’s development team. From the way layouts were considered to feedback mechanisms, focusing outcomes on “what is best for the constituents” gave everyone on the team a common place from which to start any conversation.

Flexibility in Drupal 8

Undertaking a large overhaul of a public service is no easy feat. From 2003 to 2012 alone, only 6.4% of federal IT projects with $10m in labor costs were successful; a whopping 93.7% failed.

In choosing Drupal as the framework for the new Mass.gov site, the Commonwealth was able to execute its vision with an extremely versatile tool. Unlike its previous CMS, building on Drupal meant the ability to pivot easily and adapt to changing needs. As more feedback was received from stakeholders and constituents during the first year of the engagement, the needs of the project changed a lot. Drupal also provided a stable platform of established tools, eliminating the need to build important features from scratch, thus helping to minimize costs in quickly getting to a working version of the site.

“We’ve redesigned Mass.gov for you, the people of the Commonwealth. We have one goal: to make it easy for you to find what you need.” — Mass.gov homepage

The Results

For Mass.gov, the big win is for the constituents of Massachusetts. Bay Staters now have a website designed specifically to help them accomplish their goals. The new Mass.gov site is an accessible, mobile-friendly, platform for the future that cuts down on the time users spend wandering through the site, trying to find what they need.

We want to make your project a success.

Let's Chat. Drupal 8 mass.gov
Categories: Drupal CMS

Mediacurrent: UX Design Evolution: Top UI/UX Design Trends for 2018

Drupal.org aggregator - Mon, 01/08/2018 - 13:56

As we begin a fresh, brand-spanking-new year, several UX design practices and technologies stand out as the most exciting and relevant. While they are not all necessarily bleeding edge or super trendy, these considerations are becoming more and more vital to our clients and will be at the forefront in the year to come and beyond. Here’s an overview of what we’re watching, how the UX landscape is shifting, its impact on marketing and consumer experience, and what it means to you!

Categories: Drupal CMS

Elevated Third: Drupal’s Release Cycle: Understanding What’s Next

Drupal.org aggregator - Mon, 01/08/2018 - 12:13
Drupal’s Release Cycle: Understanding What’s Next Drupal’s Release Cycle: Understanding What’s Next Nick Switzer Mon, 01/08/2018 - 13:13

We’re officially two years past the release of Drupal 8.0.0, arguably the most important release of Drupal to date. Drupal 8 is loaded with game-changing features and has more now than the day it was released. All this is thanks to what may be one of the least talked about, most impressive features: a completely overhauled release cycle.

Whether you realize it or not, if you use Drupal (7 or 8) you are affected by these changes and should have a clear understanding of what’s in store for the Drupal project while planning future projects and budgets. To shed some light on what the future holds, I’ll walk through how releases have worked in the past, how they work now and what we have to look forward to. As an added bonus, we’ll briefly discuss the pros and cons of migrating from Drupal 7 to 8, so stick around until the end!

The Past: How releases worked through Drupal 7

Until Drupal 8 was released on November 19, 2015, Drupal was known for a notoriously slow release cycle that focused on security updates and bug fixes in supported releases. These releases are numbered as incrementing versions of the major release - for example, 7.1, 7.2, 7.3, all the way up through the current major release: 7.56. Active development and improvement were typically focused much more on the next major release of Drupal. This allowed core developers to direct a lot of development time towards large changes in upcoming releases of Drupal, which could leave current versions of Drupal core feeling relatively stagnant. The D7 release cycle relied on the contrib ecosystem to fill gaps in functionality that may have been better suited to Drupal core.

The Present: How does Drupal 8 release updates and how does this mesh with the Drupal 7 release cycle?

With Drupal 8, the dream of frequent feature updates in core has become a reality. With the release of Drupal 8, Drupal core has officially moved to a number system called Semantic Versioning. The basic idea of Semantic Versioning, sometimes called “semver,” is to regulate when and what features are released as part of a software project. Rather than using versions with just two numbers, Drupal 8 uses three, for example, the current release of Drupal 8 is 8.4.3 (find a translated version of the release notes here).

With Semantic Versioning, each number has a distinct purpose: the first number is the major version (8), the second number is a minor release (.4) and the third number is a patch release. Each type of release has specific requirements that I won’t get into here, but you can visit the release cycle page of drupal.org for more detailed information. On top of the requirements for each type of release, there are specific dates and times they will--or can--occur. A major release occurs much less frequently than the other two. In fact, major releases are infrequent enough that there is not a set schedule for future major release of Drupal. Minor releases are scheduled every six months, so we can expect two minor releases in the upcoming year (2018). 8.5.0 will be released on 3/7/2018 and 8.6.0 will be released on 9/5/2018. Finally, patch releases have a month release window that can be used to address bugs in the current minor release.

If you skimmed that last paragraph, slow down and pay attention here. The most important thing to know about minor releases in Drupal 8 is that only the most current, stable minor release will receive security updates. Occasionally, there may be an exception if a minor release is really new, but I wouldn’t count on that happening often, if at all. To further clarify, Drupal 8.4 is the current minor release, so if you’re running 8.0, 8.1, 8.2 or 8.3, you will not receive security updates and are at risk.

Now that we’re all clear on the Drupal 8 release cycle, it’s also important to keep in mind that this does not change anything about the Drupal 7 release cycle. Drupal 7 is still supported by the community but is essentially in maintenance mode. At this point, we strongly advise against building any new sites on Drupal 7 unless you have a very compelling reason to do so - we haven’t had a reason to build a new site on Drupal 7 in over 18 months.  

The Future: What do we have to look forward to?

The future looks very bright for the Drupal project. Drupal 8 is a truly powerful platform that is capable of supporting a huge variety of enterprise projects and ambitious digital experiences. The release cycle adopted by Drupal 8 helps push the project forward in a lot of major ways because it makes rapid iteration much more possible.

The most exciting part of this whole thing is this: Drupal 9 will not be a completely breaking update in the same way every major release of Drupal has been. What this means for Drupal 8 site owners is that Drupal 9 will not require a ground-up rebuild!

That all sounds good, but when should I upgrade?

This is a tough question to answer because the reality of a site rebuild/upgrade can mean such drastically different things to different people. The Drupal community supports two current major releases of Drupal, meaning that right now, Drupal 7 and 8 are both supported and actively receiving security updates. No release date has been announced for Drupal 9, but as soon as Drupal 9 is released, Drupal 7 will no longer receive security updates and will become a potential vulnerability issue for anyone still using it.

At the very least, it is absolutely the right time to start planning and budgeting for a Drupal 8 build. You can count on a much less complicated upgrade process in the future. Moreover, Drupal 8, along with the ecosystem of contributed modules, is stable, powerful and a vital tool for anyone looking for an innovative, ambitious web presence.

For more on Drupal 8, download our whitepaper.

Download asset
Categories: Drupal CMS

OhTheHugeManatee: I'm Joining Microsoft, Because They're Doing Open Source Right

Drupal.org aggregator - Mon, 01/08/2018 - 11:32

I’m excited to announce that I’ve signed with Microsoft as a Principal Software Engineering Manager. I’m joining Microsoft because they are doing enterprise Open Source the Right Way, and I want to be a part of it. This is a sentence that I never believed I would write or say, so I want to explain.

First I have to acknowledge the history. I co-founded my first tech company just as the Halloween documents were leaked. That’s where the world learned that Microsoft considered Open Source (and Linux in particular) a threat, and was intentionally spreading FUD as a strategic counter. It was also the origin of their famous Embrace, Extend, and Extinguish strategy. The Microsoft approach to Open Source only got more aggressive from there, funneling money to SCO’s lawsuits against Linux and its users, calling OSS licensing a “cancer”, and accusing Linux of violating MS intellectual property.

I don’t need to get exhaustive about this to make my point: for the first decade of my career (or more), Microsoft was rightly perceived as a villain in the OSS world. They did real damage and disservice to the open source movement, and ultimately to their own customers. Five years ago I wouldn’t have even entertained the thought of working for “the evil empire.”

Yes, Microsoft has made nice movements towards open source since the new CEO (Satya Nadella) took over in 2014. They open sourced .NET and Visual Studio, they released Typescript, they joined the Linux Foundation and went platinum with the Open Source Initiative, but come on. I’m an open source warrior, an evangelist, and developer. I could see through the bullshit. Even when Microsoft announced the Linux subsystem on Windows, I was certain that this was just another round of Embrace, Extend, Extinguish.

Then I met Josh Holmes at the Dutch PHP Conference.

First of all, I was shocked to meet a Microsoft representative at an open source conference. He didn’t even have bodyguards. I remember my first question for him was “What are you doing here?”.

Josh told me a story about visiting startup conferences in Silicon Valley on behalf of Microsoft in 2007, and reporting back to Ballmer’s office:

“The good news is, no one is making jokes about Microsoft anymore. The bad news is, they aren’t even making jokes about Microsoft anymore.”

For Josh, this was a big “aha” moment. The booming tech startup space was focused on Open Source, so if Microsoft wanted to survive there, they had to come to the table.

That revelation led to the creation of the Microsoft Partner Catalyst Team. Here’s Josh’s explanation of the team and its job, from an interview at the time I met him:

“We work with a lot of startups, at the very top edge of the enterprise mix. We look at their toughest problems, and we go solve those problems with open source. We’ve got 70 engineers and architects, and we go work with the startups hand in hand. We’ll sit down for a little pair programming with them, sometimes it will be a large enough problem that will take it off on our own and we’ll work on it for a while, and we’ll come back and give them the code. Everything that we do ends up in Github under typically an MIT or Apache license if it’s original work that we’re doing on our own, or a lot of times we’re actually working within other open source projects.”

Meeting with Josh was a turning point for my understanding of Microsoft. This wasn’t just something that I could begrudgingly call “OK for open source”. This wasn’t just lip service. This was a whole department of people that were doing exactly what I believe in. Not only did I like the sound of this; I found that I actually wanted to work with this group.

Still, when I considered interviewing with Microsoft, I knew that my first question had to be about “Embrace, Extend, and Extinguish”. Josh is a nice guy, and very smart, but I wasn’t going to let the wool be pulled over my eyes.

Over the next months, I would speak with five different people doing exactly this kind of work at Microsoft. I I did my research, I plumbed all my back-channel resources for dirt. And everything I came back with said I was wrong.

Microsoft really is undergoing a fundamental shift towards Open Source.

CEO Sadya Nadella is frank that closed-source licensing as a profit model is a dead-end. Since 2014, Microsoft has been transitioning their core business from licensed software to platform services. After all, why sell a license once, when you can rent it out monthly? So they move all the licensed products they can online, and rent, instead of selling them. Then they rent out the infrastructure itself, too – hence Azure. Suddenly flexibility is at a premium. As one CTO put it, for Azure to be Windows-only would be a liability.

This shift is old news for most of the world. As much as the Hacker News crowd still bitches about it as FUD, this strategic direction has been in and out of the financial pages for years now. Microsoft has pivoted to platform services. Look at their profits by product over the last 8 years:

The trend is obvious: server and platform services are the place to invest. Office only remains at the top of the heap because it transitioned to SaaS. Even Windows license profits are declining. This means focusing on interoperability. Make sure everything can run on your platform, because anything else is to handicap the source of your biggest short- and medium-term profit. In fact, remaining adversarial to Open Source would kill the golden goose. Microsoft has to change its values in order to make this shift.

So much for financial and strategic direction; but this is a hundred-thousand-person company. That ship doesn’t turn on a dime, no matter what the press releases tell you. So my second interview question became “How is the transition going?” This sort of question makes people uncomfortable: the answer is either transparently unrealistic, or critical of your environment and colleagues. Over and over again, I heard the right answer: It’s freakin’ hard.

MS has more than 40 years of proprietary development experience and institutional momentum. All of their culture and systems – from hiring, to code reviews, to legal authorizations – have been organized around that model. That’s very hard to change! I heard horror stories about the beginning of the transition, having to pass every line of contribution past the Legal department. I heard about managers feeling lost, or losing a sense of authority over their own team. I heard about development teams struggling to understand that their place in an OSS project was on par with some Rando Calrissian contributor from Kansas. And I heard about how the company was helping people with the transition, changing systems and structures to make this cultural shift happen.

The stories I heard were important evidence, which contradicted the old narrative I had in my head. Embrace, extend, extinguish does not involve leadership challenges, or breaking down of hierarchies. It does not involve personal struggle and departmental reorganization. The stories I heard evidenced an organization trying a real paradigm shift, for tens of thousands of people around the world. It is not perfect, and it is not finished, but I believe that the transition is real.

When you accept that Microsoft is trying to reorient its own culture to Open Source, suddenly all those “transparent” PR moves you dismissed get re-framed. They are accomplishments. It’s incredibly difficult to change the culture of one of the biggest companies in the world… but today, almost half of Azure users run Linux. Microsoft’s virtualization work made them the fifth largest contributor to the 3.x Linux kernel. Microsoft maintains the biggest project on Github (by contributor count). They maintain a BSD distribution and a Linux distribution. And a huge part of LXD (the container-based virtualization system for Linux) comes from Microsoft’s work with Canonical.

That’s impressive for any company. But Microsoft? It boggles the mind. This level of contribution is not lip-service. You don’t maintain a 15 thousand person community just for PR. Microsoft is contributing as much or more to open source than many other major players, who have had this in their culture from the start (Google, Facebook, Twitter, LinkedIn…). It’s an accomplishment, and it’s impressive!

In the group I’m entering, a strong commitment to Open Source is built into the project structure, the team responsibilities, and the budgeting practice. Every project has time specifically set aside for contribution; developers’ connections to their communities are respected and encouraged. After a decade of working with companies who try to engage with open source responsibly, I can say that this is the strongest institutional commitment to “giving back” that I have ever seen. It’s a stronger support for contribution than I’ve ever been able to offer in any of my roles, from sole proprietor to CTO.

This does mean a lot more work outside of the Drupal world, though. I will still attend Drupalcons. I will still give technical talks, participate, and help make great open source communities for Drupal and other OSS projects. If anything, I will do those things more. And I will do them wearing a Microsoft shirt.

Microsoft is making a genuine, and enormous, push to being open source community members and leaders. From everything I’ve seen, they are doing it extremely well. From the outside at least, this is what it looks like to do enterprise Open Source The Right Way.

Categories: Drupal CMS

Drupal Console: Drupal Console 1.4.0

Drupal.org aggregator - Mon, 01/08/2018 - 10:30

Drupal Console 1.4.0 is out. The newest release contains several bug fixes, one new command, and one compatibility break related to chain command's placeholder definition.

Categories: Drupal CMS

DrupalEasy: DrupalEasy Podcast 202 - Matt Glaman - Drupal 8 Development Cookbook Second Edition, Drupal Commerce

Drupal.org aggregator - Mon, 01/08/2018 - 05:55

Direct .mp3 file download.

Matt Glaman, (mglaman), Senior Drupal Consultant for Commerce Guys joins Mike Anello to discuss his book, Drupal 8 Development Cookbook, Second Edition as well as provide an update to Drupal Commerce in Drupal 8.

Interview DrupalEasy News Sponsors
  • Drupal Aid - Drupal support and maintenance services. Get unlimited support, monthly maintenance, and unlimited small jobs starting at $99/mo.
  • WebEnabled.com - devPanel.
Follow us on Twitter Subscribe

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

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

Categories: Drupal CMS

Dries Buytaert: Acquia retrospective 2017

Drupal.org aggregator - Mon, 01/08/2018 - 02:45
The entrance to Acquia's headquarters in Boston.

For the past nine years, I've sat down every January to write an Acquia retrospective. It's always a rewarding blog post to write as it gives me an opportunity to reflect on what Acquia has accomplished over the past 12 months. If you'd like to read my previous annual retrospectives, they can be found here: 2016, 2015, 2014, 2013, 2012, 2011, 2010, 2009. When read together, they provide insight to what has shaped Acquia into the company it is today.

This year's retrospective is especially meaningful because 2017 marked Acquia's 10th year as a company. Over the course of Acquia's first decade, our long-term investment in open source and cloud has made us the leader in web content management. 2017 was one of our most transformative years to date; not only did we have to manage leadership changes, but we also broadened our horizons beyond website management to data-driven customer journeys.

The next phase of Acquia leadership Tom Erickson joined Acquia as CEO in 2009 and worked side-by-side with me for the next eight years.

In my first retrospective from 2009, I shared that Jay Batson and I had asked Tom Erickson to come aboard as Acquia's new CEO. For the next eight years, Tom and I worked side-by-side to build and grow Acquia. Tom's expertise in taking young companies to the next level was a natural complement to my technical strength. His leadership was an example that enabled me to develop my own business building skills. When Tom announced last spring that he would be stepping down as Acquia's CEO, I assumed more responsibility to help guide the company through the transition. My priorities for 2017 were centered around three objectives: (1) the search for a new CEO, (2) expanding our product strategy through a stronger focus on innovation, and (3) running our operations more efficiently.

The search for a new CEO consumed a great deal of my time in 2017. After screening over 140 candidates and interviewing ten of them in-depth, we asked Mike Sullivan to join Acquia as CEO. Mike has been on the job for three weeks and I couldn't be more excited.

Mike Sullivan joins Acquia as CEO with 25 years of senior leadership in SaaS, enterprise content management and content governance.
Market trends

I see three major market trends that I believe are important to highlight and that help inform our strategy.

Trend #1: Customers are driven by time-to-value and low cost of maintenance

Time-to-value and low maintenance costs are emerging as two of the most important differentiators in the market. This is consistent with a post I wrote eleven years ago, in regards to The Ockham's Razor Principle of Content Management Systems. The principle states that given two functionally equivalent content management systems, the simplest one should be selected. Across both the low and the high ends of the market, time-to-value and total cost of ownership matter a great deal. Simplicity wins.

In the low end of the market simple sites, such as single blogs and brochure sites, are now best served by SaaS tools such as Squarespace and Wix. Over the past five years, SaaS solutions have been rising in prominence because their templated approach to simple site building makes them very easy to use. The total cost of ownership is also low as users don't have to update and maintain the software and infrastructure themselves. Today, I believe that Drupal is no longer ideal for most simple sites and instead is best suited for more ambitious use cases. Not everyone likes that statement, but I believe it to be true.

In the mid-market, SaaS tools don't offer the flexibility and customizability required to support sites with more complexity. Often mid-market companies need more customizable solutions like Drupal or WordPress. Time-to-value and total maintenance costs still matter; people don't want to spend a lot of time installing or upgrading their websites. Within the scope of Ockham's Razor Principle, WordPress does better than Drupal in this regard. WordPress is growing faster than Drupal for websites with medium complexity because ease of use and maintenance often precede functionality. However, when superior flexibility and architecture are critical to the success of building a site, Drupal will be selected.

In the enterprise, a growing emphasis on time-to-value means that customers are less interested in boil-the-ocean projects that cost hundreds of thousands (or millions) of dollars. Customers still want to do large and ambitious projects, but they want to start small, see results quickly, and measure their ROI every step along the way. Open source and cloud provide this agility by reducing time-to-market, cost and risk. This establishes a competitive advantage for Acquia compared to traditional enterprise vendors like Adobe and Sitecore.

At Acquia, understanding how we can make our products easier to use by enhancing self-service and reducing complexity will be a major focus of 2018. For Drupal, it means we have to stay focused on the initiatives that will improve usability and time to value. In addition to adopting a JavaScript framework in core to facilitate the building of a better administration experience, work needs to continue on Workspaces (content staging), Layout Builder (drag-and-drop blocks), and the Media, Outside-in and Out-of-the-box initiatives. Finally, I anticipate that a Drupal initiative around automated upgrades will kick off in 2018. I'm proud to say that Acquia has been a prominent contributor to many of these initiatives, by either sponsoring developers, contributing code, or providing development support and coordination.

Trend #2: Frictionless user experiences require greater platform complexity

For the past ten years, I've observed one significant factor that continues to influence the trajectory of digital: the internet's continuous drive to mitigate friction in user experience and business models. The history of the web dictates that lower-friction solutions will surpass what came before them because they eliminate inefficiencies from the customer experience.

This not only applies to how technology is adopted, but how customer experiences are created. Mirroring Ockham's Razor Principle, end users and consumers also crave simplicity. End users are choosing to build relationships with brands that guarantee contextual, personalized and frictionless interactions. However, simplicity for end users does not translate into simplicity for CMS owners. Organizations need to be able to manage more data, channels and integrations to deliver the engaging experiences that end users now expect. This desire on the part of end users creates greater platform complexity for CMS owners.

For example, cross-channel experiences are starting to remove certain inefficiencies around traditional websites. In order to optimize the customer experience, enterprise vendors must now expand their digital capabilities beyond web content management and invest in both systems of engagement (various front-end solutions such as conversational interfaces, chatbots, and AR/VR) and systems of intelligence (marketing tools for personalization and predictive analytics).

This year, Acquia Labs built a demo to explore how augmented reality can improve shopping experiences.

These trends give organizations the opportunity to reimagine their customer experience. By taking advantage of more channels and more data (e.g. being more intelligent, personalized, and contextualized), we can leapfrog existing customer experiences. However, these ambitious experiences require a platform that prioritizes customization and functionality.

Trend #3: The decoupled CMS market is taking the world by storm

In the web development world, few trends are spreading more rapidly than decoupled content management systems. The momentum is staggering as some decoupled CMS vendors are growing at a rate of 150% year over year. This trend has a significant influence on the technology landscape surrounding Drupal, as a growing number of Drupal agencies have also started using modern JavaScript technologies. For example, more than 50% of Drupal agencies are also using Node.js to support the needs of their customers.

The Drupal community's emphasis on making Drupal API-first, in addition to supporting tools such as Waterwheel and Drupal distributions such as Reservoir, Contenta and Lightning, means that Drupal 8 is well-prepared to support decoupled CMS strategies. For years, including in 2017, Acquia has been a very prominent contributor to a variety of API-first initiatives.

Product milestones

In addition to my focus on finding a new CEO, driving innovation to expand our product offering was another primary focus in 2017.

Throughout Acquia's first decade, we've been focused primarily on providing our customers with the tools and services necessary to scale and succeed with Drupal. We've been very successful with this mission. However, many of our customers need more than content management to be digital winners. The ability to orchestrate customer experiences across different channels is increasingly important to our customers' success. We need to be able to support these efforts on the Acquia platform.

We kicked off our new product strategy by adding new products to our portfolio, and by extending our existing products with new capabilities that align with our customers' evolving needs.

  • Acquia Cloud: A "continuous integration" and "continuous delivery" service for developers was our #1 requested feature, so we delivered Acquia Cloud CD early in 2017. Later in the year, we expanded Acquia Cloud to support Node.js, the popular open-source JavaScript runtime. This was the first time we expanded our cloud beyond Drupal. Previously, if an organization wanted to build a decoupled Drupal architecture with Node.js, it was not able to host the Node.js application on Acquia Cloud. Finally, in order to make Acquia Cloud easier to use, we started to focus more on self-service. We saw rapid customer adoption of our new Stack Metrics feature, which gives customers valuable insight into performance and utilization. We also introduced a new Cloud Service Management model, which empowers our customer to scale their Acquia Cloud infrastructure on the fly.
  • Acquia Lift: In order to best support our customers as they embed personalization into their digital strategies, we have continued to add product enhancements to the new version of Acquia Lift. This included improving Acquia Lift's content authoring capabilities, enhanced content recommendations, and advanced analytics and reporting. The Acquia Lift team grew, as we also founded a machine learning and artificial intelligence team, which will lead to new features and products in 2018. In 2017, Acquia Lift has added over 200 new features, tracks 200% more profiles than in 2016, and has grown 45% in revenue.

Next, we added two new products to support our evolution from content management to data-driven customer journeys: Acquia Journey and Acquia Digital Asset Manager (DAM).

  • Acquia Journey allows marketers to easily map, assemble, orchestrate and manage customer experiences across different channels. One of the strengths of Acquia Journey is that it allows technical teams to integrate many different technologies, from marketing and advertising technologies to CRM tools and commerce platforms. Acquia Journey unifies these various interaction points within a single user interface, making it possible to quickly assemble powerful and complex customer journeys. In turn, marketers can take advantage of a flowchart-style journey mapping tool with unified customer profiles and an automated decision engine to determine the best-next action for engaging customers.
  • Acquia DAM: Many organizations lack a single-source of truth when it comes to managing digital assets. This challenge has been amplified as the number of assets has rapidly increased in a world with more devices, more channels, more campaigns, and more personalized and contextualized experiences In addition to journey orchestration, it became clear that large organizations are seeking a digital asset management solution that centralizes control of creative assets for the entire company. With Acquia DAM, our customers can rely on one dedicated application to gather requirements, share drafts, consolidate feedback and collect approvals for high-value marketing assets.

Acquia's new product strategy is very ambitious. I'm proud of our stronger focus on innovation and the new features and products that we launched in 2017. Launching this many products and features is hard work and requires tactical coordination across every part of the company. The transition from a single-product company to a multi-product company is challenging, and I hope to share more lessons learned in future blog posts.

While each new product we announced was well-received, there is still a lot of work to be done: we need to continue to drive end-user demand for our new products and help our digital agency partners build practices around them.

Leading by example

At Acquia, our mission is to deliver "the universal platform for the greatest digital experiences", and we want to lead by example. In an effort to become a thought-leader in our field, the Office of the CTO launched Acquia Labs, our research and innovation lab. Acquia Labs aims to link together the new realities in our market, our customers' needs in coming years, and the goals of Acquia's products and open-source efforts in the long term.

Finally, we rounded out the year by redesigning Acquia.com on Drupal 8. The new site places a greater emphasis on taking advantage of our own products. We wanted to show (not tell) the power of the Acquia platform. For example, Acquia Lift delivers visitors personalized content throughout the site. The new site represents a bolder and more innovative Acquia, aligned with the evolution of our product strategy.

Business momentum

We continued to grow at a steady pace in 2017. We focused on the growth of our recurring revenue, which includes new customers and the renewal and expansion of our work with existing customers. We also focused on our bottom line.

In 2017, the top industry analysts published very positive reviews based on their independent research. I'm proud that Acquia was recognized by Forrester Research as the leader for strategy and vision, ahead of every other vendor including Adobe and Sitecore, in The Forrester Wave: Web Content Management Systems, Q1 2017. Acquia was also named a leader in the 2017 Gartner Magic Quadrant for Web Content Management, marking our placement as a leader for the fourth year in a row. In addition to being the only leader that is open-source or has a cloud-first strategy, Acquia was hailed by analysts for our investments in open APIs across all our products.

Over the course of 2017 Acquia welcomed an impressive roster of new customers who included Astella Pharma, Glanbia, the Commonwealth of Massachusetts, Hewlett Packard Enterprise, and Bayer GmbH. As we enter 2018, Acquia can count 26 of the Fortune 100 among its customers.

This year was also an incredible growth period for our Asia Pacific business, which is growing ARR at a rate of 82% year over year. We have secured new business in Japan, Hong Kong, Singapore, Indonesia, Malaysia, Philippines and India. When we started our business in Australia in 2012, 70% of the pipeline came from govCMS, the platform offered by the Australian government to all national, territorial and local agencies. Today, our business is much more diverse, with 50% of the region's pipeline coming from outside of Australia.

Jeannie Finks, Director of Global Support Systems & Programs, accepting a Gold Stevie for Customer Service Team of the Year. Go team Acquia!

Customer success continues to be the most important driver of the evolution of Acquia's strategy. This commitment was reflected in 2017 customer satisfaction levels, which remains extremely high at 94 percent. Acquia's global support team also received top honors from the American Business Awards and won a Gold Stevie for Customer Service Team of the Year.

This year, we also saw our annual customer conference, Acquia Engage, grow. We welcomed over 650 people to Boston and saw presentations from over twenty customers, including Johnson & Johnson, NBC Sports, Whole Foods, AMD, the YMCA and many more. It was inspiring to hear our customers explain why Acquia and Drupal are essential to their business.

Finally, our partner ecosystem continues to advance. In 2016, we achieved a significant milestone as numerous global systems integrators repeatedly recommended Acquia to their clients. One year later, these partners are building large centers of excellence to scale their Acquia and Drupal practices. Digital agencies and Drupal companies also continue to extend their investments in Acquia, and are excited about the opportunity presented in our expanded product portfolio. In some markets, over 50 percent of our new subscriptions originate from our partner ecosystem.

The growth and performance of the partner community is validation of our strategy. For example, in 2017 we saw multiple agencies and integrators that were entirely committed to Adobe or Sitecore, join our program and begin to do business with us.

Opportunities for Acquia in 2018

When thinking about how Acquia has evolved its product strategy, I like to consider it in terms of Greylocks' Jerry Chen's take on the stack of enterprise systems. I've modified his thesis to fit the context of Acquia and our long-term strategy to help organizations with their digital transformation.

Chen's thesis begins with "systems of record", which are sticky and defensible not only because of their data, but also based on the core business process they own. Jerry identifies three major systems of record today; your customers, your employees and your assets. CRM owns your customers (i.e. Salesforce), HCM owns your employees (i.e. Workday), and ERP/Financials owns your assets. Other applications can be built around a system of record but are usually not as valuable as the actual system of record. For example, marketing automation companies like Marketo and Responsys built big businesses around CRM, but never became as strategic or as valuable as Salesforce. We call these "secondary systems of record". We believe that a "content repository" (API-first Drupal) and a "user profile repository" (Acquia Lift) are secondary systems of record. We will continue our efforts to improve Drupal's content repository and Lift's user profile repository to become stronger systems of record.

"Systems of engagement" are the interface between users and the systems of record. They control the end-user interactions. Drupal and Lift are great examples of systems of engagement as they allow for the rapid creation of end-user experiences.

Jerry Chen further suggests that "systems of intelligence" will be a third component. Systems of intelligence will be of critical importance for determining the optimal customer journey across various applications. Personalization (Acquia Lift), recommendations (Acquia Lift) and customer journey building (Acquia Journey) are systems of intelligence. They are very important initiatives for our future.

While Chen does not include "systems of delivery" in his thesis, I believe it is an important component. Systems of delivery not only dictate how content is delivered to users, but how organizations build projects faster and more efficiently for their stakeholders and users. This includes multi-site management (Acquia Cloud Site Factory) and continuous delivery services (Acquia Cloud CD), which extend the benefits of PaaS beyond scalability and reliability to include high-productivity and faster time-to-value for our customers. As organizations increase their investments in cross-channel experiences, they must manage more complexity and orchestrate the testing, integration and deployment of different technologies. Systems of delivery, such as Acquia Cloud and Acquia Site Factory, remove complexity from building modern digital experiences.

This is all consistent with the diagram I've been using for a few years now where "user profile" and "content repository" represent two systems of record, getBestNextExperience() is the system of intelligence, and Drupal is the system of engagement to build the customer experience:

We are confident in the market shift towards "intelligent connected experiences" or "data-driven customer journeys" and the opportunity it provides to Acquia. Every team at Acquia has demonstrated both commitment and focus as we have initiated a shift to make our vision relevant in the market for years to come. I believe we have strong investments across systems of record, intelligence, delivery and engagement that will continue to put us at the center of our customers' technology and digital strategies in 2027.

Thank you

Of course, none of these 2017 results and milestones would be possible without the hard work of the Acquia team, our customers, partners, the Drupal community, and our many friends. Thank you for your support in 2017 and over the past ten years – I can't wait to see what the next decade will bring!

Categories: Drupal CMS

Behind the Screens with Angie Byron

Lullabot - Mon, 01/08/2018 - 00:00
Angie "Webchick" Byron explains what OCTO is and what happens at the high levels in Acquia. On occasion she hijacks children at the mall to read to them, and Drupalist is her favorite flavor of nerd.
Categories: Drupal CMS

Integrate Bus Booking API To Make Your Travel Business More Profitable

Drupal News - Sat, 01/06/2018 - 02:48

Grow your travel business by having booking engine with integrated Bus Booking API. With Bus Booking API you get the feed for different operators along with the flexibility to book tickets for your customers. With us, not only will you get good commission but also we offer 24x7 support, congestion free environment along with several other notable attributes. Contact Go Processing to get Bus Booking API.

Categories: Drupal CMS

Pages