Drupal

Janez Urevc: A lot of exciting Drupal 8 media news!

Planet Drupal - 10 February 2016 - 8:10am
A lot of exciting Drupal 8 media news!

Media made a big leap towards a first major milestone. It's time to test what we have and help stabilise it.

At the beginning of November 2015 MD Systems announced the Media initiative program that they initiated in cooperation with Ringier, Gassmann media and Südostschweiz. Initiative was kicked off with a week long sprint, which happened at first week of December in Zurich. Work didn't end when sprint was over. Together with the team at MD Systems I continued to work on most important tasks to achieve a major milestone.


Photo by Stefanie Gupta

Note nr. 1: MD Systems are funding part of my time to work on Drupal 8 media. They are constantly investing in Drupal core and many contrib modules. They are one of the greatest Drupal service providers and number 1 Drupal organizational contributor taking their size into consideration. You need a site built? You should definitely get in touch with them.

Note nr. 2: Examiner.com (my employer and very well know enterprise Drupal 7 site) gives every developer a so-called "Drupal day" every other week. This allows me to work on Drupal 8 media components. We have been working on a Drupal 8 project for a while now, which also allowed me to do a lot of contrib work during my work hours. Thank you! You are great!

Since my last post we did a ton of work in many areas. Let me quickly list most important ones:

  1. Image cropping: We added few more features to Crop API. Image widget crop used those to provide new features such as soft and hard crop size limits, handling of default crops and ability to use cropper tool outside of field widget context. This allowed us to add cropper tool to the file edit form that File entity provides. Image widget crop was also promoted to a full project on drupal.org. We also started working on Crop API integration for Focal point module, which is very close to be committed. This will bring even more standardization in this area, which is something we are very excited about.

  2. File entity: we managed to bring this important module to the level where we can confidently say that it has reached feature parity with Drupal 7 version. This allowed us to bring it back home (to drupal.org) and make -dev version available on the project page.

  3. Entity browser: we continued our work on the configuration UI. Patch is almost ready. We need few more people to help us with testing and reviews. I hope that we will be able to commit it in the next week or so. We also added new selection display plugin which supports multi-step workflow (upload few images, select few more from media library, import some more from a 3rd parts service, save everything in one step). This allows us to build content creation experiences that we never saw in Drupal core or contrib before. Plugin could use some visual improvements. This is great introductionary task for any themers and/or frontend develpers that would like to join us. Get in touch!

  4. Image effects: together with @mondrake we started new project that will become home for majority of image effects that didn't find it's way into core. We already ported most of effects from ImageCache actions and added few more that lived in other Drupal 7 modules. Effects that are currently available in Image effects module are: watermark, auto orientation, brightness, color shift, contrast, set canvas and strip metadata. There is also text overlay effect that is waiting to be reviewed and tested.

There are many other things in different areas of the ecosystem. We fixed bugs and added features in Media entity, Field formatter, Inline entity form, Entity embed, ...

What is next

In the course of the next few weeks we need to review and commit remaining patches. After that we'd like to tag new releases for most of the modules in the ecosystem. This will encourage people to start actively using and testing them.

Media ecosystem for Drupal 8 is not perfect yet, but we are able to support more and more use cases. Testing, finding bugs and fixing them in a timely manner should be our priority at this point. We want to stabilize the ecosystem to allow our users to rely on our components.

How to help?

Start contributing. You can write documentation, test modules in the ecosystem and report bugs, fixing bugs or work on new features, design UX, write automated tests, share ideas and much, much more. You have a skill, we have a task for you.

We are available on IRC. Join us on #drupal-media channel on Freenode.net and get involved. We always publish general announcements on groups.drupal.org/media.

If you prefer more personal communication you can always ping me on Twitter (@slashrsm) or use the contact form on my blog to get in touch.

About me

I (Janez Urevc - @slashrsm) am one of the architects and maintainers of the media ecosystem for Drupal 8. If you like what I am doing please consider donating to my Bitcoin address: 1Xqe6gYWEbF1iKsy3Mr5SbAyebNyucj5t.

Together with some colleagues I'm building a small team of professionals that will be providing top-level consulting, training and development related to media in Drupal 8. If you're interested or you'd like to work with us please get in touch.

slashrsm Wed, 10.02.2016 - 17:10 Tags Drupal Media Enjoyed this post? There is more! Zurich Drupal 8 media sprint was a success! When will media be ready for Drupal 8?

View the discussion thread.

Categories: Drupal

Mediacurrent: Drupal Bits and Bytes: How to Add Content in an Update Hook

Planet Drupal - 10 February 2016 - 7:22am
Why would I want to add content in an update hook?
Categories: Drupal

Lullabot: The Uncomplicated Firewall

Planet Drupal - 10 February 2016 - 5:37am

Firewalls are a tool that most web developers only deal with when sites are down or something is broken. Firewalls aren’t fun, and it’s easy to ignore them entirely on smaller projects.

Part of why firewalls are complicated is that what we think of as a "firewall" on a typical Linux or BSD server is responsible for much more than just blocking access to services. Firewalls (like iptables, nftables, or pf) manage filtering inbound and outbound traffic, network address translation (NAT), Quality of Service (QoS), and more. Most firewalls have an understandably complex configuration to support all of this functionality. Since firewalls are dealing with network traffic, it’s relatively easy to lock yourself out of a server by blocking SSH by mistake.

In the desktop operating system world, there has been great success in the "application" firewall paradigm. When I load a multiplayer game, I don’t care about the minutiae of ports and protocols - just that I want to allow that game to host a server. Windows, OS X, and Ubuntu all support application firewalls where applications describe what ports and protocols they need open. The user can then block access to those applications if they want.

Uncomplicated Firewall (ufw) is shipped by default with Ubuntu, but like OS X (and unlike Windows) it is not turned on automatically. With a few simple commands we can get it running, allow access to services like Apache, and even add custom services like MariaDB that don’t ship with a ufw profile. UFW is also available for other Linux distributions, though they may have their own preferred firewall tool.

Before you start

Locking yourself out of a system is a pain to deal with, whether it’s lugging a keyboard and monitor to your closet or opening a support ticket. Before testing out a firewall, make sure you have some way to get into the server should you lock yourself out. In my case, I’m using a LAMP vagrant box, so I can either attach the Virtualbox GUI with a console, or use vagrant destroy / vagrant up to start clean. With remote servers, console access is often available through a management web interface or a "recovery" SSH server like Linode’s Lish.

It’s good to run a scan on a server before you set up a firewall, so you know what is initially being exposed. Many services will bind to ‘localhost’ by default, so even though they are listening on a network port they can’t be accessed from external systems. I like to use nmap (which is available in every package manager) to run port scans.

$ nmap 192.168.0.110 Starting Nmap 6.40 ( http://nmap.org ) at 2015-09-02 13:16 EDT Nmap scan report for trusty-lamp.lan (192.168.0.110) Host is up (0.0045s latency). Not shown: 996 closed ports PORT STATE SERVICE 22/tcp open ssh 80/tcp open http 111/tcp open rpcbind 3306/tcp open mysql Nmap done: 1 IP address (1 host up) scanned in 0.23 seconds

Listening on for SSH and HTTP connections makes sense, but we probably don’t need rpcbind (for NFS) or MySQL to be exposed.

Turning on the firewall

The first step is to tell UFW to allow SSH access:

$ sudo ufw app list Available applications: Apache Apache Full Apache Secure OpenSSH $ sudo ufw allow openssh Rules updated Rules updated (v6) $ sudo ufw enable Command may disrupt existing ssh connections. Proceed with operation (y|n)? y Firewall is active and enabled on system startup $ sudo ufw status Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6)

Test to make sure the SSH rule is working by opening a new terminal window and ssh’ing to your server. If it doesn’t work, run sudo ufw disable and see if you have some other firewall configuration that’s conflicting with UFW. Let’s scan our server again now that the firewall is up:

$ nmap 192.168.0.110 Starting Nmap 6.40 ( http://nmap.org ) at 2015-09-02 13:31 EDT Note: Host seems down. If it is really up, but blocking our ping probes, try -Pn Nmap done: 1 IP address (0 hosts up) scanned in 3.07 seconds

UFW is blocking pings by default. We need to run nmap with -Pn so it blindly checks ports.

$ nmap -Pn 192.168.0.110 Starting Nmap 6.40 ( http://nmap.org ) at 2015-09-02 13:32 EDT Nmap scan report for trusty-lamp.lan (192.168.0.142) Host is up (0.00070s latency). Not shown: 999 filtered ports PORT STATE SERVICE 22/tcp open ssh Nmap done: 1 IP address (1 host up) scanned in 6.59 seconds

Excellent! We’ve blocked access to everything but SSH. Now, let’s open up Apache.

$ sudo ufw allow apache Rule added Rule added (v6)

You should now be able to access Apache on port 80. If you need SSL, allow "apache secure" as well, or just use the “apache full” profile. You’ll need quotes around the application name because of the space.

To remove a rule, prefix the entire rule you created with "delete". To remove the Apache rule we just created, run sudo ufw delete allow apache.

Blocking services

UFW operates in a "default deny" mode, where incoming traffic is denied and outgoing traffic is allowed. To operate in a “default allow” mode, run sudo ufw default allow. After running this, perhaps you don’t want Apache to be able to listen for requests, and only want to allow access from localhost. Using ufw, we can deny access to the service:

$ sudo ufw deny apache Rule updated Rule updated (v6)

You can also use "reject" rules, which tell a client that the service is blocked. Deny forces the connection to timeout, not telling an attacker that a service exists. In general, you should always use deny rules over reject rules, and default deny over default allow.

Address and interface rules

UFW lets you add conditions to the application profiles it ships with. For example, say you are running Apache for an intranet, and have OpenVPN setup for employees to securely connect to the office network. If your office network is connected on eth1, and the VPN on tun0, you can grant access to both of those interfaces while denying access to the general public connected on eth0:

$ sudo ufw allow in on eth1 to any app apache $ sudo ufw allow in on tun0 to any app apache

Replace from <interface> with on <address> to use IP address ranges instead of interface names.

Custom applications

While UFW lets you work directly with ports and protocols, this can be complicated to read over time. Is it Varnish, Apache, or Nginx that’s running on port 8443? With custom application profiles, you can easily specify ports and protocols for your own custom applications, or those that don’t ship with UFW profiles.

Remember up above when we saw MySQL (well, MariaDB in this case) listening on port 3306? Let’s open that up for remote access.

Pull up a terminal and browse to /etc/ufw/applications.d. This directory contains simple INI files. For example, openssh-server contains:

[OpenSSH] title=Secure shell server, an rshd replacement description=OpenSSH is a free implementation of the Secure Shell protocol. ports=22/tcp

We can create a mariadb profile ourselves to work with the database port.

[MariaDB] title=MariaDB database server description=MariaDB is a MySQL-compatible database server. ports=3306/tcp $ sudo ufw app list Available applications: Apache Apache Full Apache Secure MariaDB OpenSSH $ sudo ufw allow from 192.168.0.0/24 to any app mariadb

You should now be able to access the database from any address on your local network.

Debugging and backup

Debugging firewall problems can be very difficult, but UFW has a simple logging framework that makes it easy to see why traffic is blocked. To turn on logging, start with sudo ufw logging medium. Logs will be written to /var/log/ufw.log. Here’s a UFW BLOCK line where Apache has not been allowed through the firewall:

Jan 5 18:14:50 trusty-lamp kernel: [ 3165.091697] [UFW BLOCK] IN=eth2 OUT= MAC=08:00:27:a1:a3:c5:00:1e:8c:e3:b6:38:08:00 SRC=192.168.0.54 DST=192.168.0.142 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=65499 DF PROTO=TCP SPT=41557 DPT=80 WINDOW=29200 RES=0x00 SYN URGP=0

From this, we can see all of the information about the source of the request as well as the destination. When you can’t access a service, this logging makes it easy to see if it’s the firewall or something else causing problems. High logging can use a large amount of disk space and IO, so when not debugging it’s recommended to set it to low or off.

Once you have everything configured to your liking, you might discover that there isn’t anything in /etc with your rules configured. That’s because ufw actually stores its rules in /lib/ufw. If you look at /lib/ufw/user.rules, you’ll see iptables configurations for everything you’ve set. In fact, UFW supports custom iptables rules too if you have one or two rules that are just too complex for UFW.

For server backups, make sure to include the /lib/ufw directory. I like to create a symlink from /etc/ufw/user-rules to /lib/ufw. That way, it’s easy to remember where on disk the rules are stored.

Next steps

Controlling inbound traffic is a great first step, but controlling outbound traffic is better. For example, if your server doesn’t send email, you could prevent some hacks from being able to reach mail servers on port 25. If your server has many shell users, you can prevent them from running servers without being approved first. What other security tools are good for individual and small server deployments? Let me know in the comments!

Categories: Drupal

OpenLucius: 18 Drupal SEO modules - and tools for better findability in Google

Planet Drupal - 10 February 2016 - 5:32am

Search engine optimization (SEO) has always been important, but in recent years its importance seems to have increased significantly. We were more often dealing with Drupal SEO implementations than in previous years. Many of the implementations contained overlapping components. Below we will discuss the most important ones:

Categories: Drupal

Turning Drupal outside-in

Dries Buytaert - 10 February 2016 - 2:49am

There has been a lot of discussion around the future of the Drupal front end both on Drupal.org (#2645250, #2645666, #2651660, #2655556) and on my blog posts about the future of decoupled Drupal, why a standard framework in core is a good idea, and the process of evaluating frameworks. These all relate to my concept of "progressive decoupling", in which some portions of the page are handed over to client-side logic after Drupal renders the initial page (not to be confused with "full decoupling").

My blog posts have drawn a variety of reactions. Members of the Drupal community, including Lewis Nyman, Théodore Biadala and Campbell Vertesi, have written blog posts with their opinions, as well as Ed Faulkner of the Ember community. Last but not least, in response to my last blog post, Google changed Angular 2's license from Apache to MIT for better compatibility with Drupal. I read all the posts and comments with great interest and wanted to thank everyone for all the feedback; the open discussion around this is nothing short of amazing. This is exactly what I hoped for: community members from around the world brainstorming about the proposal based on their experience, because only with the combined constructive criticism will we arrive at the best solution possible.

Based on the discussion, rather than selecting a client-side JavaScript framework for progressive decoupling right now, I believe the overarching question the community wants to answer first is: How do we keep Drupal relevant and widen Drupal's adoption by improving the user experience (UX)?

Improving Drupal's user experience is a topic near and dear to my heart. Drupal's user experience challenges led to my invitation to Mark Boulton to redesign Drupal 7, the creation of the Spark initiative to improve the authoring experience for Drupal 8, and continued support for usability-related initiatives. In fact, the impetus behind progressive decoupling and adopting a client-side framework is the need to improve Drupal's user experience.

It took me a bit longer than planned, but I wanted to take the time to address some of the concerns and share more of my thoughts about improving Drupal's UX (and JavaScript frameworks).

To iterate or to disrupt?

In his post, Lewis writes that the issues facing Drupal's UX "go far deeper than code" and that many of the biggest problems found during the Drupal 8 usability study last year are not resolved with a JavaScript framework. This is true; the results of the Drupal 8 usability study show that Drupal can confuse users with its complex mental models and terminology, but it also shows how modern features like real-time previews and in-page block insertion are increasingly assumed to be available.

To date, much of our UX improvements have been based on an iterative process, meaning it converges on a more refined end state by removing problems in the current state. However, we also require disruptive thinking, which is about introducing entirely new ideas, for true innovation to happen. It's essentially removing all constraints and imagining what an ideal result would look like.

I think we need to recognize that while some of the documented usability problems coming out of the Drupal 8 usability study can be addressed by making incremental changes to Drupal's user experience (e.g. our terminology), other well-known usability problems most likely require a more disruptive approach (e.g. our complex mental model). I also believe that we must acknowledge that disruptive improvements are possibly more impactful in keeping Drupal relevant and widening Drupal's adoption.

At this point, to get ahead and lead, I believe we have to do both. We have to iterate and disrupt.

From inside-out to outside-in

Let's forget about Drupal for a second and observe the world around us. Think of all the web applications you use on a regular basis, and consider the interaction patterns you find in them. In popular applications like Slack, the user can perform any number of operations to edit preferences (such as color scheme) and modify content (such as in-place editing) without incurring a single full page refresh. Many elements of the page can be changed without the user's flow being interrupted. Another example is Trello, in which users can create new lists on the fly and then add cards to them without ever having to wait for a server response.

Contrast this with Drupal's approach, where any complex operation requires the user to have detailed prior knowledge about the system. In our current mental model, everything begins in the administration layer at the most granular level and requires an unmapped process of bottom-up assembly. A user has to make a content type, add fields, create some content, configure a view mode, build a view, and possibly make the view the front page. If each individual step is already this involved, consider how much more difficult it becomes to traverse them in the right order to finally see an end result. While very powerful, the problem is that Drupal's current model is "inside-out". This is why it would be disruptive to move Drupal towards an "outside-in" mental model. In this model, I should be able to start entering content, click anything on the page, seamlessly edit any aspect of its configuration in-place, and see the change take effect immediately.

Drupal 8's in-place editing feature is actually a good start at this; it enables the user to edit what they see without an interrupted workflow, with faster previews and without needing to find what thing it is before they can start editing.

Making it real with content modeling

Eight years ago in 2007, I wrote about a database product called DabbleDB. I shared my belief that it was important to move CCK and Views into Drupal's core and learn from DabbleDB's integrated approach. DabbleDB was acquired by Twitter in 2010 but you can still find an eight-year-old demo video on YouTube. While the focus of DabbleDB is different, and the UX is obsolete, there is still a lot we can learn from it today: (1) it shows a more integrated experience between content creation, content modeling, and creating views of content, (2) it takes more of an outside-in approach, (3) it uses a lot less intimidating terminology while offering very powerful capabilities, and (4) it uses a lot of in-place editing. At a minimum, DabbleDB could give us some inspiration for what a better, integrated content modeling experience could look like, with the caveat that the UX should be as effortless as possible to match modern standards.

Other new data modeling approaches with compelling user experiences have recently entered the landscape. These include back end-as-a-service (BEaaS) solutions such as Backand, which provides a visually clean drag-and-drop interface for data modeling and helpful features for JavaScript application developers. Our use cases are not quite the same, but Drupal would benefit immensely from a holistic experience for content modeling and content views that incorporates both the rich feature set of DabbleDB and the intuitive UX of Backand.

This sort of vision was not possible in 2007 when CCK was a contributed module for Drupal 6. It still wasn't possible in Drupal 7 when Views existed as a separate contributed module. But now that both CCK and Views are in Drupal 8 core, we can finally start to think about how we can more deeply integrate the two. This kind of integration would be nontrivial but could dramatically simplify Drupal's UX. This should be really exciting because so many people are attracted to Drupal exactly because of features like CCK and Views. Taking an integrated approach like DabbleDB, paired with a seamless and easy-to-use experience like Slack, Trello and Backand, is exactly the kind of disruptive thinking we should do.

What most of the examples above have in common are in-place editing, immediate previews, no page refreshes, and non-blocking workflows. The implications on our form and render systems of providing configuration changes directly on the rendered page are significant. To achieve this requires us to have robust state management and rendering on the client side as well as the server side. In my vision, Twig will provide structure for the overall page and non-interactive portions, but more JavaScript will more than likely be necessary for certain parts of the page in order to achieve the UX that all users of the web have come to expect.

We shouldn't limit ourselves to this one example, as there are a multitude of Drupal interfaces that could all benefit from both big and small changes. We all want to improve Drupal's user experience — and we have to. To do so, we have to constantly iterate and disrupt. I hope we can all collaborate on figuring out what that looks like.

Special thanks to Preston So and Kevin O'Leary for contributions to this blog post and to Wim Leers for feedback.

Categories: Drupal

Dries Buytaert: Turning Drupal outside-in

Planet Drupal - 10 February 2016 - 2:49am

There has been a lot of discussion around the future of the Drupal front end both on Drupal.org (#2645250, #2645666, #2651660, #2655556) and on my blog posts about the future of decoupled Drupal, why a standard framework in core is a good idea, and the process of evaluating frameworks. These all relate to my concept of "progressive decoupling", in which some portions of the page are handed over to client-side logic after Drupal renders the initial page (not to be confused with "full decoupling").

My blog posts have drawn a variety of reactions. Members of the Drupal community, including Lewis Nyman, Théodore Biadala and Campbell Vertesi, have written blog posts with their opinions, as well as Ed Faulkner of the Ember community. Last but not least, in response to my last blog post, Google changed Angular 2's license from Apache to MIT for better compatibility with Drupal. I read all the posts and comments with great interest and wanted to thank everyone for all the feedback; the open discussion around this is nothing short of amazing. This is exactly what I hoped for: community members from around the world brainstorming about the proposal based on their experience, because only with the combined constructive criticism will we arrive at the best solution possible.

Based on the discussion, rather than selecting a client-side JavaScript framework for progressive decoupling right now, I believe the overarching question the community wants to answer first is: How do we keep Drupal relevant and widen Drupal's adoption by improving the user experience (UX)?

Improving Drupal's user experience is a topic near and dear to my heart. Drupal's user experience challenges led to my invitation to Mark Boulton to redesign Drupal 7, the creation of the Spark initiative to improve the authoring experience for Drupal 8, and continued support for usability-related initiatives. In fact, the impetus behind progressive decoupling and adopting a client-side framework is the need to improve Drupal's user experience.

It took me a bit longer than planned, but I wanted to take the time to address some of the concerns and share more of my thoughts about improving Drupal's UX (and JavaScript frameworks).

To iterate or to disrupt?

In his post, Lewis writes that the issues facing Drupal's UX "go far deeper than code" and that many of the biggest problems found during the Drupal 8 usability study last year are not resolved with a JavaScript framework. This is true; the results of the Drupal 8 usability study show that Drupal can confuse users with its complex mental models and terminology, but it also shows how modern features like real-time previews and in-page block insertion are increasingly assumed to be available.

To date, much of our UX improvements have been based on an iterative process, meaning it converges on a more refined end state by removing problems in the current state. However, we also require disruptive thinking, which is about introducing entirely new ideas, for true innovation to happen. It's essentially removing all constraints and imagining what an ideal result would look like.

I think we need to recognize that while some of the documented usability problems coming out of the Drupal 8 usability study can be addressed by making incremental changes to Drupal's user experience (e.g. our terminology), other well-known usability problems most likely require a more disruptive approach (e.g. our complex mental model). I also believe that we must acknowledge that disruptive improvements are possibly more impactful in keeping Drupal relevant and widening Drupal's adoption.

At this point, to get ahead and lead, I believe we have to do both. We have to iterate and disrupt.

From inside-out to outside-in

Let's forget about Drupal for a second and observe the world around us. Think of all the web applications you use on a regular basis, and consider the interaction patterns you find in them. In popular applications like Slack, the user can perform any number of operations to edit preferences (such as color scheme) and modify content (such as in-place editing) without incurring a single full page refresh. Many elements of the page can be changed without the user's flow being interrupted. Another example is Trello, in which users can create new lists on the fly and then add cards to them without ever having to wait for a server response.

Contrast this with Drupal's approach, where any complex operation requires the user to have detailed prior knowledge about the system. In our current mental model, everything begins in the administration layer at the most granular level and requires an unmapped process of bottom-up assembly. A user has to make a content type, add fields, create some content, configure a view mode, build a view, and possibly make the view the front page. If each individual step is already this involved, consider how much more difficult it becomes to traverse them in the right order to finally see an end result. While very powerful, the problem is that Drupal's current model is "inside-out". This is why it would be disruptive to move Drupal towards an "outside-in" mental model. In this model, I should be able to start entering content, click anything on the page, seamlessly edit any aspect of its configuration in-place, and see the change take effect immediately.

Drupal 8's in-place editing feature is actually a good start at this; it enables the user to edit what they see without an interrupted workflow, with faster previews and without needing to find what thing it is before they can start editing.

Making it real with content modeling

Eight years ago in 2007, I wrote about a database product called DabbleDB. I shared my belief that it was important to move CCK and Views into Drupal's core and learn from DabbleDB's integrated approach. DabbleDB was acquired by Twitter in 2010 but you can still find an eight-year-old demo video on YouTube. While the focus of DabbleDB is different, and the UX is obsolete, there is still a lot we can learn from it today: (1) it shows a more integrated experience between content creation, content modeling, and creating views of content, (2) it takes more of an outside-in approach, (3) it uses a lot less intimidating terminology while offering very powerful capabilities, and (4) it uses a lot of in-place editing. At a minimum, DabbleDB could give us some inspiration for what a better, integrated content modeling experience could look like, with the caveat that the UX should be as effortless as possible to match modern standards.

Other new data modeling approaches with compelling user experiences have recently entered the landscape. These include back end-as-a-service (BEaaS) solutions such as Backand, which provides a visually clean drag-and-drop interface for data modeling and helpful features for JavaScript application developers. Our use cases are not quite the same, but Drupal would benefit immensely from a holistic experience for content modeling and content views that incorporates both the rich feature set of DabbleDB and the intuitive UX of Backand.

This sort of vision was not possible in 2007 when CCK was a contributed module for Drupal 6. It still wasn't possible in Drupal 7 when Views existed as a separate contributed module. But now that both CCK and Views are in Drupal 8 core, we can finally start to think about how we can more deeply integrate the two. This kind of integration would be nontrivial but could dramatically simplify Drupal's UX. This should be really exciting because so many people are attracted to Drupal exactly because of features like CCK and Views. Taking an integrated approach like DabbleDB, paired with a seamless and easy-to-use experience like Slack, Trello and Backand, is exactly the kind of disruptive thinking we should do.

What most of the examples above have in common are in-place editing, immediate previews, no page refreshes, and non-blocking workflows. The implications on our form and render systems of providing configuration changes directly on the rendered page are significant. To achieve this requires us to have robust state management and rendering on the client side as well as the server side. In my vision, Twig will provide structure for the overall page and non-interactive portions, but more JavaScript will more than likely be necessary for certain parts of the page in order to achieve the UX that all users of the web have come to expect.

We shouldn't limit ourselves to this one example, as there are a multitude of Drupal interfaces that could all benefit from both big and small changes. We all want to improve Drupal's user experience — and we have to. To do so, we have to constantly iterate and disrupt. I hope we can all collaborate on figuring out what that looks like.

Special thanks to Preston So and Kevin O'Leary for contributions to this blog post and to Wim Leers for feedback.

Categories: Drupal

Valuebound: Newly introduced mobile first Menu management in Drupal 8

Planet Drupal - 10 February 2016 - 12:16am

In this tutorial, we'll continue site building by adding menu items. We will create custom menus which'll be used to display links, then assigning these links to a page and add a menu link to specific region within the theme.

Managing Drupal 8 menu happens at the administrator area. To begin, login as an administrator in your Drupal 8 website.

Although there are several default menus available in core, we have ability to create own custom menu using admin interface. This has to be done in two parts. first part is to create structure of the menu and the second is to add links. Below are the steps for creating a general menu structure in Drupal 8.

Step 1: Create a Menu
To create a menu, visit Manage >> Structure >> Menus…

Categories: Drupal

DrupalCon News: Help Make the Site Building Track Memorable

Planet Drupal - 9 February 2016 - 11:52pm

Session Submissions for DrupalCon New Orleans are open, and we need you to send in sessions related to site building. A site building session was one of my best DrupalCon memories:

Categories: Drupal

Valuebound: Creating Home page and basic pages

Planet Drupal - 9 February 2016 - 11:31pm

Creating a Home page in Drupal 8 is quite similar to Drupal 7.  just we need to create a page and assigning that page to display on <front> page or prompted other node to be display on home page. However, you may wish to have a custom static page on your site instead. This article will guide you through the process of changing the front page of your Drupal 8 website.

Step 1 :  Log into your Drupal 8    
Step 2 : select “manage”  menu from the toolbar.  the main menu across the top, select the Menu option.

under manage you will find “

Categories: Drupal

Modules Unraveled: 155 Using the Block Visibility Groups Module as a Lightweight Replacement for Context and Panels in Drupal 8 with Ted Bowman - Modules Unraveled Podcast

Planet Drupal - 9 February 2016 - 10:00pm
Published: Wed, 02/10/16Download this episodeScheduled Updates
  • What is the Scheduled Updates module?
  • How does it differ from the Scheduler module?
  • What are some of the use cases? What types of updates can be scheduled?
  • Is it ready to be used?
Block Visibility Groups
  • What is Block Visibility Groups?
  • How does it differ from Context and Panels?
  • Do you intend it to be a replacement for context?
  • When would you use it instead Panels
  • What are some example use cases?
  • How does it work with other D8 block-related modules?
  • Is it ready to be used?
Episode Links: Ted on drupal.orgTed on TwitterTed on GithubSix Mile TechScheduled UpdatesBlock Visibility GroupsField as BlockSimple BlockTags: Drupal 8Scheduled UpdatesBlock Visibility Groupsplanet-drupal
Categories: Drupal

Read Time

New Drupal Modules - 9 February 2016 - 8:36pm

Read Time displays the time it will take to read content on your site.

A pseudo-field is added to each content type that you can show or hide from the Manage Display page. You can also configure:

  • which fields are used to calculate the read time,
  • the average reading speed of your site's audience,
  • the format the read time is displayed in,
  • and additional information to display alongside the read time (such as a label).
Categories: Drupal

Darryl Norris's Blog: Rebuilding DarrylNorris.com Using Drupal 8

Planet Drupal - 9 February 2016 - 4:28pm

I have been experimenting with Drupal 8 for about a year and half trying to be ready to use it in my projects. Currently Drupal 8 is interesting stage where some Drupal 7 project have been doing a straight port, some of them are been re-architecture and some project have die. For this reason I have decide to try it out some of those new contrib projects with Drupal 8 version on a production site www.darrylnorris.com. There few things that I took consider before I started working on rebuilding my website. I wanted to have my website with a decent front page load time under 2 seconds. I did not wanted to do a migration because my website is very small so I thought it will be better to rebuild the entire website instead of migrating. Also, I wanted to make it into a blog, because my previous website I had lot other things plan for the website and I never did; as results, I ended up with some a lot unnecessary contrib modules. Finally, my website should SEO friendly. What theme ? Casper Be

More
Categories: Drupal

Acquia Developer Center Blog: Around the Drupal World in 120 Days with Enzo

Planet Drupal - 9 February 2016 - 12:41pm

Listen to Drupal developer, contributor and businessperson, Enzo Garcia talk about how he is traveling around the world for 120 days in 2016, spreading the word in India, Asia and Australasia about building community and identity, the importance of Drupal 8 in the developing world, and the Drupal Console.

"As Larry Garfield said, Drupal 7 was an island. In real life, we have islands in communities, because we don’t know what boats we need to take to get to that island."

Keeping promises, fostering communities

During the election for the Drupal Association Community Board seat in 2015, Enzo made a promise: "I promised I will try to help local communities in developing countries to increase their presence in Drupal worldwide community, and the only way I found is to visit them and teach them how to use Drupal, the Drupal Console, to promote them writing documentation for Drupal 8 in their mother language ... And maybe to try to grow out the community in that way."

"I am going to New York first, Singapore, Vietnam, Korea - South Korea, Japan, five cities in China, Thailand, Cambodia, Hong Kong, Philippines, maybe Australia and New Zealand. I am trying to put my money where my mouth is. I said that it’s possible and I am trying to do it. I’m having a sponsor recently, a Chinese person. He wants to invite me to do a session in Beijing, and he paid my flight to go to Beijing."

Q: So you’re going to meet-ups; you’re going to companies; you’re talking with these local communities. What is it that you’re promoting? What is your mission with these communities in the developing world?

My mission is to save them – okay, you can do more for yourself. You need to try to believe in yourself. You’re now to start to write documentation in your language, in [Chinese] and they - in Thai, in any language, because [Unintelligible] you solve your problems, right? Obviously, the idea is Drupal 8 is coming out, so it’s the learning curve. Everybody, they still worry about that, so I want to try to show them it’s not that – it’s difficult, but it’s not impossible; and try to put a seed in there to – in the - in many things, like they need to be more participate – they need to participate more in DrupalCons or near Drupal Camps to try to create a better Asian community around Drupal.

So my idea is we’ll be really – I will be really happy if we start to see more contributions from China and maybe pushing the Drupal Association to try to have some multilingual information in their homepage, because the main complaint, they say, for instance, I talk with people from Korea and Japan and China, it’s like when they try to sell or find something, Drupal.org is not the best source of information for them. This is something they really want.

They are working as an island. For instance, they have a drupalchina.cn website, and they publish a lot of information. Nobody knows about that. They don’t use their GDOs, because they don’t feel this is a good way to communicate in their community. So I think the challenge is for Drupal organization around the world is to try to find the proper channels to communicate with them. So what I did, I do some research and I discovered they used QQ, which is a clone of ICQ, and then I create my account and it was in Chinese. It was a nightmare at the beginning, but now finally, I found the groups and they are totally open. If you follow this group, this is like 4,000 people talking about Drupal problems, issues, documents; and they really love when some people overseas tried to share something with them.

As Larry Garfield said, Drupal 7 was an island. In real life, we have islands in communities, because we don’t know what boats we need to take to get to that island.

Q: So are you doing this trip to build some bridges between those islands and start to connect us better?

That is the point. It is one of the ideas. I have to learn about them. As I say, we need to learn what is doing for them, because maybe IRC, as you’ve said in the beginning in the session, is popular for Drupalers, but that doesn’t mean it’s the unique way to reach people. So I think in any country or any region, we need to find the options we have to communicate with them.

Interview video - 28 min.

120 days, 3 missions

Q: You've got three themes you're highlighting during your 120 trip. What are they?

Enzo: "The first thing is convincing local communities to believe in themselves and to grow themselves to produce documentation, to produce – to help each other in their own languages."

Q: Second. What is it that makes Drupal 8 an especially good fit for people in the developing world that you’re visiting?

Enzo: "Okay, because I grew up in a developing country, I am Colombian by birth, sometimes we don’t use first class software because we believe it’s expensive and will be really hard to find resources to do that. So for the reason in developing countries, you see some government sites that are really bad. So I think if we can provide the tools to teach them, you can create first class product for yourself; not to sell in USA, for America or Europe. So you can create first class products for your government, for universities. So the quality of life will be elevated. Because for instance, in Africa they have more mobiles and they don’t have mobile or responsive government websites, because all the solutions they have are really expensive. So this is my point of view. So giving them the tools to do a first class product, will we change their societies. The Drupal community is providing the best possible enterprise professional government quality software to anyone who wants to solve a problem in their own country. So they don’t need to look solutions out there. They just need to learn the first class product to do first class stuff for your citizens.

Q: Third. Now, your third message. The Drupal Console that run with Jesus Olivas and some other great people. What is the Drupal Console is and why people should be using it? What does it do?

Enzo: Drupal Console is a tool built using Symfony Console in the same way the Drupal 8 used Symfony components to create Drupal 8. We do the same to try to bring the awesomeness that Symfony Console provides in the Drupal work, and the main feature is to generate Drupal 8 code. You can generate controllers, models, forms, or in the basic stuff you need to be as a Drupal developer. In that way...

Q: So it saves me writing a lot of boilerplate code, for one.

Enzo: "Exactly. So you don't need to worry about that at the beginning. You could be productive in five minutes, and then just be concentrate in the business logic of the company. The second thing is we can create content that is good. In terms of local community, Drupal Console provides a special addition to local communities. We have right now 12 languages supported. Hindi, for example. That is good for DrupalCon India, and it’s translated in more than 80% to Hungarian, Romanian, Chinese, and Vietnamese.

It’s like Nelson Mandela said, "If you speak to someone in their mother language, you touch their heart." So we are trying to do that. So you can do two [Unintelligible] stuff fast and quickly, and if you speak Chinese, that is like that opened your mind totally.

Guest dossier
  • Name: Enzo
  • Work affiliation: CTO, Anexus
  • Drupal.org: enzo
  • Twitter: @enzolutions
  • LinkedIn: Eduardo Garcia
  • Website: enzolutions.com
  • Current projects: Drupal Console
  • 1st version of Drupal/PHP: Drupal 6. Enzo read Pro Drupal Development in 48 hours before a job interview, got the job, trained two others in Drupal and delivered his first project in three months!
Podcast series: Drupal 8Skill Level: Beginner
Categories: Drupal

Pages

Subscribe to As If Productions aggregator - Drupal