Recently, I wrote a blog post on the benefits of integrating your website and CRM, and Anthony followed up with another on the typical integration patterns you commonly see. Annertech have a lot of experience integrating Drupal websites with various CRMs, so this is the start of a new series on CRM integration where we will go into more detail on some of the more popular CRMs we’ve worked with.
This was our 9th critical issues discussion meeting to be publicly recorded in a row. (See all prior recordings). Here is the recording of the meeting video and chat from Friday in the hope that it helps more than just those who were on the meeting:
If you also have significant time to work on critical issues in Drupal 8 and we did not include you, let me know as soon as possible.
The meeting log is as follows (all times are GMT real time at the meeting):
https://www.drupal.org/node/2524082 => Config overrides should provide cacheability metadata [
=> 147 comments, 39 IRC mentions
https://www.drupal.org/node/2429617 => [PP-1] Make D8 2x as fast: SmartCache: context-dependent page caching (for *all* users!) [
=> 226 comments, 21 IRC mentions
https://www.drupal.org/node/2524082 => Config overrides should provide cacheability metadata [
=> 147 comments, 40 IRC mentions
https://www.drupal.org/node/2525910 => Ensure token replacements have cacheability + attachments metadata and that it is bubbled in any case [
=> 176 comments, 29 IRC mentions
http://drupal.org/node/2538228 => Config save dispatches an event - may conflict with config structure changes in updates [
=> 6 comments, 1 IRC mention
WimLeers: little late because I'm in a sprint and was helping people ;<
The upgrade path we're talking about http://drupal.org/node/2528178
http://drupal.org/node/2528178 => Provide an upgrade path for #2354889 (block context manager) [#2528178]
=> 143 comments, 1 IRC mention
berdir: is talking about http://drupal.org/node/2513094
http://drupal.org/node/2513094 => ContentEntityBase::getTranslatedField and ContentEntityBase::__clone break field reference to parent entity [
=> 36 comments, 1 IRC mention
As one of Canada’s most successful integrated media and entertainment companies, Corus have multiple TV channels and websites for each channel.
It had been a challenge to have multiple channels' live schedule data displayed on websites. All the data are from a central repository. It became a little bit difficult since the repository is not always available. We had used Feeds module to import all the schedule data. Each channel website keeps a live copy of the schedule data. Things got worse because of the way we update the program items. We delete all the current schedule data in the system and then imported from the central repository. Sometimes, our schedule pages became empty because the central repository is not available.
Pedram Tiv, the director of digital operations at Corus Entertainment, had a vision of building a robust schedule for all channels. He wants to establish a Drupal website as a schedule service provider - content as a service. The service website download and synchronize all channels schedule data. Our content manager can also login to the website and edit any schedule items. The site keeps all the revisions for the changes. Since, the central repository only provide raw data, It is helpful we can edit the scheduled show title or series name.
I loved this brilliant idea as soon as he had explained it to me. We are building a Drupal website as a content service provider. It means we would build a CMS for other CMS websites. Scalability is always challenging for a modern website. To make it scalable, Pedram added another layer of cache protection. We added S3 cache between the schedule service and the front end web servers. With it, schedule service can handle more channels and millions of requests each day. Front end websites download schedule data from the Amazon S3 bucket only. What we did is creating and uploading seven days' schedule data to S3. We set up a cron job for this task. Every day, It uploads thousands of JSON schedule files for different channels in different time zones of next seven days each time.
This setup offloaded the pressure of schedule server and let it serve unlimited front end users. It gives seven days of grace period. It allowed the schedule server to be offline without interrupting the service. One time, our schedule service was down for three days. The schedule service was not affected because we have seven days of schedule data in an S3 bucket. By using S3 as another layer of protection, it provided excellent high availability.
Our schedule service have been up and running for many months without a problem. There are over 100,000 active nodes in the system. For more detail about importing large number of content and building an efficient system, we have some other blogs for this project.
So, it turns out the Drupal CMS can be beautiful. I kid you not! Anditko has updated the Adminimal theme with a material skin based on Android Lollipop. I've mentioned Adminimal before, an admin theme that greatly improves the look and feel of Drupal’s CMS, and the latest update takes it that step further into the land of stunning.
Faster, more secure, more maintainable. Three nice benefits we get from our new standard Drupal server architecture.
This year we're replacing our old "traditional" LAMP stack with an entirely less pronounceable LNDMPS version. We still use Linux, MariaDB and PHP, of course, but instead of Apache we've moved to Nginx, and we've added Docker and Salt.DrupalDrupal PlanetDockerSaltConfiguration ManagementSecurityPerformanceDevOps
I like to be technology/platform agnostic, but last couple of years I’ve built everything on top of Drupal. I get this question many times: “Why not using something else?”. My answer is usually: “I became so good at using it, that it only makes sense to me”. I tried to came up with some objective reasons, to […]
When you first install the Views module, it comes with several example views.
One of the most popular examples is the Glossary view, which takes a large amount of content and organizes it all by the first letter of the content title. This is useful in a lot of situations, especially when you're creating a directory of businesses or people.
Here's what the Glossary view looks like:
Drupal 8, which has been in beta for a few months now, is causing plenty of excitement. In the beginning, Drupal made confident claims that it would be a major step forward:
Drupal 8 will set a new standard for ease of use, while offering countless new ways to tailor and deploy your content to the Web. Easily customize data structures, listings, and pages, and take advantage of new capabilities for displaying data on mobile devices, building APIs, and adapting to multilingual needs.
Drupal 8 has many new features, and Drupal.org also describes it as having a "leaner, meaner core," an "easier migration process from earlier versions," and "in-place content editing tools." Modules and themes will also become more powerful because of Drupal 8's adoption of OOP (Object Oriented Programming).1. Creating a Bridge for New Developers
And speaking of the new OOP approach, this new feature might be one of the more exciting aspects of Drupal 8.
It's finally building a bridge to new developers.
Drupal 8 is much more compatible with the programming standards of PHP, and this means that new developers who may not know Drupal very well can still come in with their OOP PHP familiarity and contribute to projects.
Besides adding a wider door through which more developers can pass, Drupal 8 is improving things in all the ways you might expect in our current Age of the Smart Device:2. Drupal 8 is Actually Mobile-First, Not Just Mobile-Friendly
Drupal 8, not surprisingly, will be mobile-first. It's a good thing too. According to SmartInsights.com, 80% of Internet users now own a smart phone, and the majority of digital media consumption is now done on mobile devices. Mobile-first is the new standard for web design, and Drupal 8 is embracing that trend. For example, Drupal 8's built-in themes are all responsive, and the administration toolbar is mobile-first.3. File System-Based Configuration
The new management system makes it easy to switch configuration changes with greater consolidation and versatility (which translates into fewer headaches). Here's how Drupal describes it:
Drupal 8 has a whole new configuration system to store configuration data in a consistent manner. All of your site configuration from enabled modules through fields, contact categories to views, are stored with this system. The system is designed to make it much easier than prior Drupal versions to make changes, export site configuration to files, and import those changes back into the site.4. HTML 5-Based Markup
HTML 5-based markup means, among other things, native input tools that make it simple to design for mobile. It also means that the output templates have simpler elements. It's definitely a much-needed feature. And they were thorough with it, as their initial list of HTML 5 objectives reveals:
The main goals of this initiative will be to implement HTML5 in Drupal core in a way that will:
- Have the most benefit for end users.
- Enable contributed modules and themes to evolve using HTML5.
- Allow theme developers to control where to use the new semantic elements, and opt out entirely if they so choose.
- Adding support for the new form elements to Drupal's Form API.
- Adding new semantic elements in core templates in an appropriate way.
- Adding ARIA roles to markup to improve accessibility.
- Simplifying style and script elements.
- Ensuring input filters and functions accept HTML5 elements.
Drupal 8 features a new WYSIWYG configuration, two-column editing, improved draft-saving, and the ability to edit content without reverting to the full edit mode.6. Drupal 8 Will Speak Your Language
Drupal has its eyes on the global prize, and Drupal 8 is clear evidence of this. It has powerful multilingual features: it has built-in interfaces that can translate anything in the system, it will grab software translation updated automatically from Drupal, and, according to Drupal, it can "build pages with Views language filtering and block visibility."
So, what happened???.... The FreeScholar in me got really tired of hearing developers that are excited about some proprietary solutions/tools that happen to work with Drupal. Some of these solutions are being touted as the way to go in the future. I believe that our community has no shortage of genius, creative minds and brilliant ideas, so I encourage us all to think deeply about the tools we use and our personal freedoms.
About 2 months ago, I invited Richard Stallman to our monthly meetup at MIT. I wanted him to meet the Drupal community and take a look at how we work together on projects that are dear to our hearts, helpful to our communities and good for society- we make things happen. He gave a short lightning talk about free software and hardware, then we had a Q and A with him. Many of us got a better understanding of what his mission is and how we can be a part of the educational outreach for fsf.org. Learning to explain how free software is key to autonomy, privacy and human rights, is a big help for the movement.
Next, I invited RMS to NYCcamp... On Saturday July 18th, he gave the keynote speech to a packed house at the United Nations - http://nyccamp.org/keynote/2015-keynote. After the keynote and standing ovation, he connected with the Aegir team and began a discussion on web hosting platforms and free server tools which led to a larger group convening at a strategy session with the Aegir team lead, Chris Gervais and RMS. They led an engaging round table discussion with about 30 people - http://nyccamp.org/session/aegir-strategy-session-richard-stallman-and-c...
What an excellent time - your voice and thoughts are needed, let's free our future with free software as the foundation.
I love Drupal almost as much as I love freedom.
Every day, companies and organizations with lots of content are weighing the pros and cons of adopting Drupal. Often, this decision takes the form of “to what extent should we adopt Drupal” - meaning whether an organization will want to move toward managing all, or possibly only some of its content in Drupal. Having chosen some form of the latter (as practical concerns often warrant), organizations and their technical teams must delve into the territory of integrating Drupal with third party or sometimes proprietary data sources.
Here at FFW, we are acutely aware that Drupal is an open-source environment, and as such, we appreciate the many thousands of hours that volunteers have put into its development. So, when developers at FFW are between projects, we are encouraged to do "contrib" work, meaning we find open issues in the Drupal issue queue, solve them, and get them pushed out into the community. Until very recently in my year at FFW I was on a single project for one of our largest clients. When I finished my engagement on that project, and before I started another one, I found myself with some free time and the opportunity to work on my first Drupal commit! This is a fantastic company culture and policy, everybody wins because of it, and I feel lucky to work here. At any given time, we always have someone doing contrib work, mainly with Drupal 8 core. It helps us learn as individuals, helps the presence and reputation of our company, and of course helps Drupal, which is the reason we’re all here, and the reason you’re reading this blog series.
That being said, this will be a post about how to contribute and the process involved. There will no (or very few) code examples. There are plenty of resources online for that. Rather, this is for the novice to intermediate Drupal developer who’s ready to give back to Drupal for the first time and doesn't quite know where to start.
The thing that's so great about open source software, and the way Drupal contrib in particular works, is that anyone can contribute, regardless of past experience. Take me for example, I've made a career of Drupal for the past five years, but have never given back until now. Shame on me! There's no certification you need in order to contribute, no permissions, just an account at drupal.org and a willingness to learn. And don't worry – like I did at first – you can't break anything. The contrib and approval process is sophisticated enough that only correct, community-approved patches will get committed. There's nothing to fear, so…
Let’s Get Started
First I'll summarize the steps you go through to contribute, then I'll dive into each one, pointing out tips and gotchas along the way. So, at its most basic level, contributing goes like this:
1. Find an issue you would like to, and are able to, contribute to.
2. Download the latest Drupal core to your local machine. I’ve been working on Drupal 8 core issues, so that's where we’ll start.
3. Create a new branch, and download and apply patches that already exist for the issue, so you're working from the most recent version of the code.
4. Complete your work locally.
5. Create a patch and an interdiff (more on that later) and upload them to the issue.
6. Await the automated testing results and recommendations or approval from the community.
7. Repeat steps 4 through 6 until your work is approved and your patch is ready.
8. Get a commit in Drupal core!
I know it sounds like a lot, but once you do it a few times it will become easier and faster. Put it this way: my first patch took me almost a day to complete. Now I can create and upload one in a few minutes. Like anything else, the more you do it the faster (and more confident) you get. And it is so worth it to learn this process. I can’t overstate how excited I was when I got my first commit into core! In Monday’s post I’ll get deeper into each step of this process.DrupalBest PracticesDrupal PlanetDrupal TrainingLearning SeriesPost tags: DrupalContributeDrupal Community
When faced with the task of managing videos in Drupal, the number of available solutions might seem overwhelming. Where should you store the videos? What is the difference between CDNs (content delivery networks), cloud storage services, and hosted video solutions? Which Drupal modules should you use with which service?Drupal Modules
By using some of the most popular modules for video handling, you can quickly set up a reliable video solution:
- Media module Although not specialized for video, this widely used module can be combined with others; some cloud services have their own modules integrated with the Media module, too.
- MediaElement module The MediaElement module provides an HTML5 (or Flash fallback) player. With the MediaElement module you can stream video to mobile devices as well. The player can integrate with your responsive theme.
- Video module The Video module can handle video upload, transcoding, and playing; generates thumbnails; and can deliver videos from cloud systems.
CDNs are largely distributed systems optimized for delivering content to end-users, over the Internet, with high availability and performance. For video content, they are often coupled with a transcoding server.
They can be expensive, but are a good choice for improving performance and delivering content for high-traffic websites. As the data centers are distributed, they will be faster than the usual hosting providers for most visitors to your site. Also, contemplate using a CDN if you already have a transcoding server.
The CDN module provides easy Content Delivery Network integration for Drupal sites. It alters file URLs so that files are downloaded from a CDN instead of your web server.Cloud Storage Services
Cloud storage services aren’t optimized for delivering rich media content on high traffic sites, but can be a cheaper alternative to CDNs – if you don’t have a huge number of videos and your site traffic isn’t very high.
For sites that do not need to have user registrations. The most effective way to prevent registration spam is to disable visitor registrations. If you need users to register to post comments, consider using use third party chat applications like Disqus and Livefyre.
I’m in the middle of several Drupal Camp / Con’s (any event over 1000 people is no longer a “Camp” but that’s for another time) and it’s occured to me: I can no longer learn by going. Now, this is learn in the traditional sense of what I used to go to Camps for (been coming to camps for 8 years now).