Feed aggregator

Drupal Association News: DrupalCon Sprint Adjustments

Planet Drupal -

As Drupal, the Project, keeps growing and changing, so does DrupalCon. As the Events Team at the Drupal Association, we are continually working to improve the event - to strengthen the programming and to better fit the needs of attendees. Over the past year, we've heard through both formal and informal conversations that DrupalCon sprints are ready for a change.


A consistent topic in those conversations was that Extended Sprints, held on weekends before and after DrupalCon, may be too much. While 9 days of sprinting at previous DrupalCons evolved informally, they were a key part of the hard push that got Drupal 8 out the door. Concerns were raised that it is not healthy for contributors to continue at this pace. Contributors said that they were a little burnt out and didn't need as many days of sprinting.


A few weeks ago, we met with some of the sprint leads to discuss DrupalCon sprints to really hear what the Project needs at this point in its life-cycle. What we heard was: "Shorter sprints, with greater support." Based on this conversation with sprint leads, informal conversations from community members, and some feedback from the attendee survey, DrupalCon staff will no longer be organizing weekend Extended Sprints at DrupalCon going forward.


We will continue to support full day sprints from Monday through Friday. There is a dedicated sprint room throughout the week at the convention center, open Monday through Friday, as well as a designated location at the host hotel for 24 hour sprinting sessions. Sprint mentors are available at the DA sponsored mentor table in the exhibit hall throughout the conference to answer any questions about the contribution process, help new contributors pick which sprint best fits them, encourage new mentors to join Friday, and help both new contributors and new mentors know what to do to prepare for the sprints on Friday. We will concentrate our support on providing sufficient quality sprint space, and lunch and coffee, sprint room signage, supplies, special t-shirts for mentors, etc. - things that will help everyone have a quality productive sprint experience.


With these changes, our main objectives for DrupalCon sprints are to support current contributors, bring in new contributors, and nurture those who've dabbled, but not fully jumped in. We believe this is an imperative for the health of Drupal.


If you've attended a sprint at DrupalCon in the past, we certainly hope you will join us again in Baltimore. Our full conference website launched this week - be sure to check out the call for papers, buy a ticket, or apply for a scholarship.

Personal blog tags: drupalcon

valechatech: Manage drupal 8 site configuration with features

Planet Drupal -

Manage drupal 8 site configuration with features

There are several ways to manage the drupal site configuration in Drupal 8 either by keeping it in the database or managing it at from the file system or managing with features.

I have launched couple of sites with the combination of the following best practices with managing features and configuration in file system

User Roles and Permissions are being managed by the Configuration Management because features does not export the permissions with the Roles
Using features for managing the other entities and rest of the stuff.

Below the screenshot of attached site structure of one my project

 

naveenvalecha Thu, 12/08/2016 - 00:04

Lullabot: Drupal as a Political Act

Planet Drupal -

Like so many of you, both here in the United States and elsewhere, I am deeply troubled by the incidents of hateful harassment and the threats to democracy that have spiked since November 8. My thoughts have been routinely consumed with the task of analyzing my work and motivations, trying to detect any positive impact that my contributions have on the world. Because of my involvement in the Drupal community, my thoughts are as much about Drupal as they are about me. I am a proud member of our community and I cannot help but reflect on how the organization of our community brings people together, discourages hate, and promotes democracy.

What it would mean to "make the world better" is up for debate. We cannot be experts in all subjects, and a group of Drupal developers might not fully understand, for example, the policies that allow tax havens, the economic implications of a $15 minimum wage, how to combat predatory lending, or the solutions to climate change. Perhaps we have strong opinions on these topics, but many of us would begrudgingly admit that we know more about dependency injection, re-rolling patches, or even the hook system. That is, we know how to build Drupal websites. More importantly, to succeed in the Drupal community we are required to be considerate, respectful, and collaborative. We, as a community, vigorously reject bigotry, racism, sexism, homophobia, and xenophobia. This, in my view, makes the world better.

What is more, I would argue that Drupal blurs traditional boundaries. While certainly there are market forces that determine how Drupal is constructed, powerful legal and cultural nonmarket forces push back. Some Drupal agencies exist to turn a profit, but do so working primarily with public sector or non-profit organizations. Drupal agencies can be seen as capitalist in the sense that they accumulate surplus value by "exploiting the working class," but socialist in the sense that they produce goods that are owned collectively. Some have stated goals to invest value back into the community and others are "benefit corporations," required to make the world a better place. While I am tempted to place new labels on the Drupal community, such as "post-capitalist," I find such terms to be of limited use, and I am far more interested in finding common ground that unites our community.

Drupal code has only limited value without the community, and our community stands for values that transcend our code. I participate in the Drupal community because I believe it represents ideals that are consistent with my own. One of the beliefs that we hold in high regard is "doing good." It would be difficult to convince me that people, such as George DeMet and Tiffany Farriss, Todd Ross Nienkerk, or Lev Tsypin, have anything but the best intentions in the way they run their businesses. More importantly, these individuals, like so many others in our community, actually do make the world a better place through their work, compassion, and advocacy.

In some respects, the well-intentioned subset of our community exemplifies what Luc Boltanski and Eve Chiapello describe as "the new spirit of capitalism." In their study of management textbooks, they find this "new spirit" is characterized by, among other things, a "high moral tone" (58), a belief that workers should "control themselves" (80), structures where managers are essentially replaced with customers (82), and where bureaucracy represents a kind of "totalitarianism and arbitrariness" that should be avoided (85). While Boltanski and Chiapello find many faults with this "new spirit," generally, I would suggest that is has become more important than ever to acknowledge the many benefits that the people and organizations in our community have for the world. While critique and criticism will surely be needed, we should also continue to celebrate the impact that our software and colleagues plays in efforts towards ending poverty, empowering independent journalists, defending the free and open Internet, and educating people. Even though Drupal has been used for nefarious purposes, and there are many reasons to critique the Drupal community, I feel emboldened knowing that when people came together to build websites for DeanSpace, the United Nations, Amnesty International, Greenpeace, Oxfam, the ACLU, the Electronic Frontier Foundation, National Public Radio, Free Press, and the White House, they choose Drupal.

More than just software, part of the reason we "stay for the community" is because we place such a high premium on human interaction. Drupal contributors create public goods (free software) that can be used by one person without reducing the availability to others. If the public relations departments of mega-corporations extol the value of business and markets, while criticizing government and fair labor, the Drupal community takes an alternative approach that values solidarity. In this sense, our democratic practices threaten unjust power. Throughout history people in power have pushed back against the democratizing effects of solidarity to defend their positions of power. In his 1776 magnum opus on political economy, Wealth of Nations, Adam Smith famously observed, "All for ourselves and nothing for other people, seems, in every age of the world, to have been the vile maxim of the masters of mankind." With every Drupal Camp, DrupalCon, code sprint, community summit, and user group meeting we gather together in solidarity. Let us not forget all we do to encourage hope and camaraderie.

If you are discouraged by a world that turns workers against each other and treats citizens as consumers, pushing them to the malls rather than the public library, remember that we as a Drupal community are pushing back against the "masters of mankind." In the 1970s, Buckley v. Valeo may have determined that money is a form of speech, but because we work together, Drupal becomes another kind of speech. Most of us (the working class) must sell our labor in return for a wage or salary. So what I am arguing is not for our community to become noncommercial or anti-commercial, but instead that we consider expanding our horizon of expectations to allow for a conception of Drupal as a political act. I want us to celebrate our community and stand up against hate, inequality, corruption, and depoliticization. If that idea makes you uncomfortable, then perhaps consider the words of the historian Howard Zinn and his suggestion that what matters are "the countless deeds of unknown people who lay the basis for the events of human history." I hope that we can find common ground, build on what we have accomplished, and organize against the forces that seek to divide us against ourselves.

Drupal as a Political Act

Lullabot -

Like so many of you, both here in the United States and elsewhere, I am deeply troubled by the incidents of hateful harassment and the threats to democracy that have spiked since November 8. My thoughts have been routinely consumed with the task of analyzing my work and motivations, trying to detect any positive impact that my contributions have on the world. Because of my involvement in the Drupal community, my thoughts are as much about Drupal as they are about me. I am a proud member of our community and I cannot help but reflect on how the organization of our community brings people together, discourages hate, and promotes democracy.

What it would mean to "make the world better" is up for debate. We cannot be experts in all subjects, and a group of Drupal developers might not fully understand, for example, the policies that allow tax havens, the economic implications of a $15 minimum wage, how to combat predatory lending, or the solutions to climate change. Perhaps we have strong opinions on these topics, but many of us would begrudgingly admit that we know more about dependency injection, re-rolling patches, or even the hook system. That is, we know how to build Drupal websites. More importantly, to succeed in the Drupal community we are required to be considerate, respectful, and collaborative. We, as a community, vigorously reject bigotry, racism, sexism, homophobia, and xenophobia. This, in my view, makes the world better.

What is more, I would argue that Drupal blurs traditional boundaries. While certainly there are market forces that determine how Drupal is constructed, powerful legal and cultural nonmarket forces push back. Some Drupal agencies exist to turn a profit, but do so working primarily with public sector or non-profit organizations. Drupal agencies can be seen as capitalist in the sense that they accumulate surplus value by "exploiting the working class," but socialist in the sense that they produce goods that are owned collectively. Some have stated goals to invest value back into the community and others are "benefit corporations," required to make the world a better place. While I am tempted to place new labels on the Drupal community, such as "post-capitalist," I find such terms to be of limited use, and I am far more interested in finding common ground that unites our community.

Drupal code has only limited value without the community, and our community stands for values that transcend our code. I participate in the Drupal community because I believe it represents ideals that are consistent with my own. One of the beliefs that we hold in high regard is "doing good." It would be difficult to convince me that people, such as George DeMet and Tiffany Farriss, Todd Ross Nienkerk, or Lev Tsypin, have anything but the best intentions in the way they run their businesses. More importantly, these individuals, like so many others in our community, actually do make the world a better place through their work, compassion, and advocacy.

In some respects, the well-intentioned subset of our community exemplifies what Luc Boltanski and Eve Chiapello describe as "the new spirit of capitalism." In their study of management textbooks, they find this "new spirit" is characterized by, among other things, a "high moral tone" (58), a belief that workers should "control themselves" (80), structures where managers are essentially replaced with customers (82), and where bureaucracy represents a kind of "totalitarianism and arbitrariness" that should be avoided (85). While Boltanski and Chiapello find many faults with this "new spirit," generally, I would suggest that is has become more important than ever to acknowledge the many benefits that the people and organizations in our community have for the world. While critique and criticism will surely be needed, we should also continue to celebrate the impact that our software and colleagues plays in efforts towards ending poverty, empowering independent journalists, defending the free and open Internet, and educating people. Even though Drupal has been used for nefarious purposes, and there are many reasons to critique the Drupal community, I feel emboldened knowing that when people came together to build websites for DeanSpace, the United Nations, Amnesty International, Greenpeace, Oxfam, the ACLU, the Electronic Frontier Foundation, National Public Radio, Free Press, and the White House, they choose Drupal.

More than just software, part of the reason we "stay for the community" is because we place such a high premium on human interaction. Drupal contributors create public goods (free software) that can be used by one person without reducing the availability to others. If the public relations departments of mega-corporations extol the value of business and markets, while criticizing government and fair labor, the Drupal community takes an alternative approach that values solidarity. In this sense, our democratic practices threaten unjust power. Throughout history people in power have pushed back against the democratizing effects of solidarity to defend their positions of power. In his 1776 magnum opus on political economy, Wealth of Nations, Adam Smith famously observed, "All for ourselves and nothing for other people, seems, in every age of the world, to have been the vile maxim of the masters of mankind." With every Drupal Camp, DrupalCon, code sprint, community summit, and user group meeting we gather together in solidarity. Let us not forget all we do to encourage hope and camaraderie.

If you are discouraged by a world that turns workers against each other and treats citizens as consumers, pushing them to the malls rather than the public library, remember that we as a Drupal community are pushing back against the "masters of mankind." In the 1970s, Buckley v. Valeo may have determined that money is a form of speech, but because we work together, Drupal becomes another kind of speech. Most of us (the working class) must sell our labor in return for a wage or salary. So what I am arguing is not for our community to become noncommercial or anti-commercial, but instead that we consider expanding our horizon of expectations to allow for a conception of Drupal as a political act. I want us to celebrate our community and stand up against hate, inequality, corruption, and depoliticization. If that idea makes you uncomfortable, then perhaps consider the words of the historian Howard Zinn and his suggestion that what matters are "the countless deeds of unknown people who lay the basis for the events of human history." I hope that we can find common ground, build on what we have accomplished, and organize against the forces that seek to divide us against ourselves.

DrupalCon News: Setting Diversity as a DrupalCon Goal

Planet Drupal -

The Drupal Association and the volunteers that contribute to DrupalCon strive to make our conference an inclusive and welcoming environment for all who come. We're actively seeking to increase the diversity of our speakers, attendees, and sponsors at DrupalCon Baltimore.

Acquia Developer Center Blog: Migrate API in Drupal 8: A Tech Talk

Planet Drupal -

It’s one of the hottest tools in the Drupal 8 toolkit: the Migrate API, now part of Drupal 8 Core.

If you know how to use it, you can dramatically improve how quickly and efficiently you can upgrade a site to Drupal 8. In addition, you can use it to build regular, repeatable migrations in Drupal 8 that can pull in data from a variety of sources.

That’s why you should tune into this Tech Talk by Adam Jensen, Technical Account Manager at Acquia: (Don’t Hate) Migrate in Drupal 8.

Tags: acquia drupal planet

Debugging war story: the mystery of NXDOMAIN

Cloudflare Blog -

The following blog post describes a debugging adventure on Cloudflare's Mesos-based cluster. This internal cluster is primarily used to process log file information so that Cloudflare customers have analytics, and for our systems that detect and respond to attacks.

The problem encountered didn't have any effect on our customers, but did have engineers scratching their heads...

The Problem

At some point in one of our cluster we started seeing errors like this (an NXDOMAIN for an existing domain on our internal DNS):

lookup some.existing.internal.host on 10.36.0.9:53: no such host

This seemed very weird, since the domain did indeed exist. It was one of our internal domains! Engineers had mentioned that they'd seen this behaviour, so we decided to investigate deeper. Queries triggering this error were varied and ranged from dynamic SRV records managed by mesos-dns to external domains looked up from inside the cluster.

Our first naive attempt was to run the following in a loop:

while true; do dig some.existing.internal.host > /tmp/dig.txt || break; done

Running this for a while on one server did not reproduce the problem: all the lookups were successful. Then we took our service logs for a day and did a grep for “no such host” and similar messages. Errors were happening sporadically. There were hours between errors and no obvious pattern that could lead us to any conclusion. Our investigation discarded the possibility that the error lay in Go, which we use for lots of our services, since errors were coming from Java services too.

Into the rabbit hole

We used to run Unbound on a single IP across a few machines for our cluster DNS resolver. BGP is then responsible for announcing internal routes from the machines to the router. We decided to try to find a pattern by sending lots of requests from different machines and recording errors. Here’s what our load testing program looked like at first:

package main import ( "flag" "fmt" "net" "os" "time" ) func main() { n := flag.String("n", "", "domain to look up") p := flag.Duration("p", time.Millisecond*10, "pause between lookups") flag.Parse() if *n == "" { flag.PrintDefaults() os.Exit(1) } for { _, err := net.LookupHost(*n) if err != nil { fmt.Println("error:", err) } time.Sleep(*p) } }

We run net.LookupHost in a loop with small pauses and log errors; that’s it. Packaging this into a Docker container and running on Marathon was an obvious choice for us, since that is how we run other services anyway. Logs get shipped to Kafka and then to Kibana, where we can analyze them. Running this program on 65 machines doing lookups every 50ms shows the following error distribution (from high to low) across hosts:

We saw no strong correlation to racks or specific machines. Errors happened on many hosts, but not on all of them and in different time windows errors happen on different machines. Putting time on X axis and number of errors on Y axis showed the following:

To see if some particular DNS recursor had gone crazy, we stopped all load generators on regular machines and started the load generation tool on the recursors themselves. There were no errors in a few hours, which suggested that Unbound was perfectly healthy.

We started to suspect that packet loss was the issue, but why would “no such host” occur? It should only happen when an NXDOMAIN error is in a DNS response, but our theory was that replies didn’t come back at all.

The Missing

To test the hypothesis that losing packets can lead to a “no such host” error, we first tried blocking outgoing traffic on port 53:

sudo iptables -A OUTPUT -p udp --dport 53 -j DROP

In this case, dig and similar tools just time out, but don’t return “no such host”:

; <<>> DiG 9.9.5-9+deb8u3-Debian <<>> cloudflare.com ;; global options: +cmd ;; connection timed out; no servers could be reached

Go is a bit smarter and tells you more about what’s going on, but doesn't return “no such host” either:

error: lookup cloudflare.com on 10.36.0.9:53: write udp 10.36.14.20:47442->10.36.0.9:53: write: operation not permitted

Since the Linux kernel tells the sender that it dropped packets, we had to point the nameserver to some black hole in the network that does nothing with packets to mimic packet loss. Still no luck:

error: lookup cloudflare.com on 10.36.2.9:53: read udp 10.36.14.20:39046->10.36.2.9:53: i/o timeout

To continue blaming the network we had to support our assumptions somehow, so we added timing information to our lookups:

s := time.Now() _, err := net.LookupHost(*n) e := time.Now().Sub(s).Seconds() if err != nil { log.Printf("error after %.4fs: %s", e, err) } else if e > 1 { log.Printf("success after %.4fs", e) }

To be honest, we started by timing errors and added success timing later. Errors were happening after 10s, comparatively many successful responses were coming after 5s. It does look like packet loss, but still does not tell us why “no such host” happens.

Since now we were in a place when we knew which hosts were more likely to be affected by this, we ran the following two commands in parallel in two screen sessions:

while true; do dig cloudflare.com > /tmp/dig.log || break; done; date; sudo killall tcpdump sudo tcpdump -w /state/wtf.cap port 53

The point was to get a network dump with failed resolves. In there, we saw the following queries:

00.00s A cloudflare.com 05.00s A cloudflare.com 10.00s A cloudflare.com.in.our.internal.domain

Two queries time out without any answer, but the third one gets lucky and succeeds. Naturally, we don’t have cloudflare.com in our internal domain, so Unbound rightfully gives NXDOMAIN in reply, 10s after the lookup was initiated.

Bingo

Let’s look at /etc/resolv.conf to understand more:

nameserver 10.36.0.9 search in.our.internal.domain

Using the search keyword allows us to use short hostnames instead of FQDN, making myhost transparently equivalent to myhost.in.our.internal.domain.

For the DNS resolver it means the following: for any DNS query ask the nameserver 10.36.0.9, if this fails, append .in.our.internal.domain to the query and retry. It doesn’t matter what failure occurs for the original DNS query. Usually it is NXDOMAIN, but in our case it’s a read timeout due to packet loss.

The following events seemed to have to occur for a “no such host” error to appear:

  1. The original DNS request has to be lost
  2. The retry that is sent after 5 seconds has to be lost
  3. The subsequent query for the internal domain (caused by the search option) has to succeed and return NXDOMAIN

On the other hand, to observe a timed out DNS query instead of NXDOMAIN, you have to lose four packets sent 5 seconds one after another (2 for the original query and 2 for the internal version of your domain), which is a much smaller probability. In fact, we only saw an NXDOMAIN after 15s once and never saw an error after 20s.

To validate that assumption, we built a proof-of-concept DNS server that drops all requests for cloudflare.com, but sends an NXDOMAIN for existing domains:

package main import ( "github.com/miekg/dns" "log" ) func main() { server := &dns.Server{Addr: ":53", Net: "udp"} dns.HandleFunc(".", func(w dns.ResponseWriter, r *dns.Msg) { m := &dns.Msg{} m.SetReply(r) for _, q := range r.Question { log.Printf("checking %s", q.Name) if q.Name == "cloudflare.com." { log.Printf("ignoring %s", q.Name) // just ignore return } } w.WriteMsg(m) }) log.Printf("listening..") if err := server.ListenAndServe(); err != nil { log.Fatalf("error listening: %s", err) } }

Finally, we found what was going on and had a way of reliably replicating that behaviour.

Solutions

Let's think about how we can improve our client to better handle these transient network issues, making it more resilient. The man page for resolv.conf tells you that you have two knobs: the timeout and retries options. The default values are 5 and 2 respectively.

Unless you keep your DNS server very busy, it is very unlikely that it would take it more than 1 second to reply. In fact, if you happen to have a network device on the Moon, you can expect it to reply in 3 seconds. If your nameserver lives in the next rack and is reachable over a high-speed network, you can safely assume that if there is no reply after 1 second, your DNS server did not get your query. If you want to have less weird “no such domain” errors that make you scratch your head, you might as well increase retries. The more times you retry with transient packet loss, the less chance of failure. The more often you retry, the higher chances to finish faster.

Imagine that you have truly random 1% packet loss.

  • 2 retries, 5s timeout: max 10s wait before error, 0.001% chance of failure
  • 5 retries, 1s timeout: max 5s wait before error, 0.000001% chance of failure

In real life, the distribution would be different due to the fact that packet loss is not random, but you can expect to wait much less for DNS to reply with this type of change.

As you know many system libraries that provide DNS resolution like glibc, nscd, systemd-resolved are not hardened to handle being on the internet or in a environment with packet losses. We have faced the challenge of creating a reliable and fast DNS resolution environment a number of times as we have grown, only to later discover that the solution is not perfect.

Over to you

Given what you have read in this article about packet loss and split-DNS/private-namespace, how would you design a fast and reliable resolution setup? What software would you use and why? What tuning changes from standard configuration would you use?

We'd love to hear your ideas in the comments. And, if you like working on problems like send us your resume. We are hiring.

Faichi.com: <a href="/blog/animate-your-site-in-drupal-8">Animate Your Site in Drupal 8</a>

Planet Drupal -

Currently we are using HTML5, JavaScript and CSS3 for animation. We have implemented these animations on a Drupal 8 site. Here are some basics of animation.   WHY ANIMATION?
  • Increases the usability
  • Guides the user
  • Facilitates branding
  • Helps user visualize
  WHEN TO USE ANIMATION?
  • To enhance design  
  • Interactive web application
  • Storytelling
  WHERE ANIMATION CAN BE USED?  
  • Navigation:
This is the most important element of the website because it is consistent across all pages of your website. Moreover it is the most frequently used element. Let us have a look at how navigation can be implemented via animation.     Here, when the user clicks on the hamburger icon, the navigation bar slides down. Sliding down is the animation use for navigation.  
  • Registration / Subscription Form:
When clicking or hovering on a particular field, we can implement the transitive effect which grabs the user’s attention.  Highlighting a particular block, shaking the screen when invalid content has been entered; these are a few examples of applying animation to the forms.     
  • Related elements animation:
When you want to display the relative content while hovering on it, related animations are used.       HOW TO USE ANIMATION?  
  • Interface Element Animation:
At times user repeatedly clicks on an object, unaware if the event triggered had any result.  For instance, in an e-commerce website if despite clicking on the Add to cart button the item being added in the cart is not displayed to the user, it may result in bad user experience.   However, if by clicking on the button, we make a cart icon pop up and increase the count by 1; this shows the user that the action has been performed successfully, thus avoiding the user to trigger the same event repeatedly.  
  • Waiting Animation:
If the content on your site is taking time to load, displaying a loader icon/sand clock prevents the user from clicking further. This is not something new for Drupal 8, this has almost been a standard since a long while now.  
  • Decorative Animation:
Animation is prevalent when it comes to designing a website. But it is crucial as to how we are using it.             An example of decorative animation could be; when a user clicks on the hamburger icon, the navigation panel appears and the hamburger icon turns into a cross icon.  
  • Responsive Animation:
Animation needs space to perform. The play area on desktop is very large compared to the area on a handheld device. There are two basic techniques to maintain the equilibrium between animation and devices.  
  1. Focused Art Direction
It is a technique that allows you to decide which element is important to animate.   If there are large numbers of animated elements on your website, it is difficult for you to move an element even 100 pixels on a handheld device.  Thus it is imperative to prevent unnecessary animations.  

 

Hovering effect applied on desktop, but avoided when on a handheld device.

 

RESPONSIVE CHOREOGRAPHY On a larger playground, i.e. on a desktop you have elements appearing in a linear manner. But the same when implemented and converted for a handheld device, appear in a stacked fashion.            PERFORMANCE Performance is always an issue. We can make your site animated and yet be exceptionally performant. There are a few fundamental rules and principles that need to be followed to animate your site effectively irrespective of whether it is built in Drupal 7 or Drupal 8.
  • Avoid the heaviest properties of CSS3
  Translate 3D – Translate 3D is very heavy for the browser to render. While working on an X Y and Z axis, The Z axis property for a browser is very difficult to render. It will take time to render in-turn impacting your site’s performance. An alternative for this is to use Perspective.    Backface (visibility) – A cube has 3 visible sides on the screen and the 4th face that is not visible. This property can be made True or False. When made True, it suggests that when that object is rotated the ‘backface’ property shows the 4th side which is unnecessary. We can omit this property completely since it is heavy for performance.    Will-change – This is a property available in the browser to indicate that something is going to change on this property in future. If you have 20 properties on a browser that are being animated, out of those 20 if you put ‘will-change’ property for 5 of them; the browser will not cache them. This impacts the performance, since it is not cacheable. For better performing website we need the elements to be cached, thus making them easy to render.  
  • Pick the correct technology
  1. Use of CSS3 will always be high priority because it has all the properties needed for animation.
  2. JavaScript significantly reduces performance. For instant, on a page load if there is a large JavaScript file to be loaded for animation, it would hamper performance.
  3. Use both (CSS3 and JavaScript) blended together carefully for animation.
  • Animate the most performant properties
  1. Opacity
  2. Scale
  3. Rotation
  4. Position
  These four properties are adequate for most of the animations needed on your site.    While conducting performance impact analysis, we notice how many properties in a web page are getting animated when the page is loaded. If there are 20 elements animated on a page during the page load, the browser needs to load all those animations in the background and before the page loads.   Another way to go about it is to delay the animation. The page loads and only the most important elements on the page are animated first. While in the background the rest of animations gradually load. This principle is called OFFSET ANIMATION START TIMES.   ANIMATION IN DRUPAL Drupal being a CMS, the content displayed on website should be animated, for effective presentation. And there are countless ways we can implement animation in Drupal. Drupal 7 has these modules developed:
  • Animate.css
  • Block Animation
  • Wow.js
  • Fullpage.js (sandbox)
  For Drupal 8
  • Either contribute
  • Use relevant .css or.js files

For a demo on how to implement animation in Drupal please visit: https://www.youtube.com/watch?v=G2KF6wcjnDw

 

Faichi.com: <a href="/blog/eu-cookie-implementation-in-drupal-8">EU cookie implementation in Drupal 8</a>

Planet Drupal -

In this blog we are going to talk about one such functionality. We were required to implement EU cookie functionality in Drupal 8. EU cookie is mandatory for all European websites. There are many solutions available online to implement this feature, I used JavaScript for this task and it worked like a charm. This is how it works.   First we need to get the required JavaScript code from https://cookieconsent.insites.com/ as per our required consent popup. Once the code is retrieved, we need to convert this plain JavaScript into the Drupal 8 format.   For our implementation we needed to create a configuration form for settings. Along with that we were also required to add configuration to change scroll length after which the cookie popup would disappear. To make it EU specific we had to get the continent code from the API.   Step 1: Create form.php in src/form containing form of settings in your module: <?php /** * @file * Contains \Drupal\module\Form\SettingsForm. */ namespace Drupal\module\Form; use Drupal\Core\Form\ConfigFormBase; use Drupal\Core\Form\FormStateInterface; /** * Form builder for the module basic settings form. */ class SettingsForm extends ConfigFormBase { /** * [email protected]} */ public function getFormId() { return 'module_settings_form'; } /** * [email protected]} */ protected function getEditableConfigNames() { return ['module.settings']; } /** * [email protected]} */ public function buildForm(array $form, FormStateInterface $form_state) { $config = $this->config('module .settings'); $form['activate'] = array( '#type' => 'checkbox', '#title' => $this->t('Activate Cookie Consent'), '#default_value' => $config->get('activate'), '#description' => $this->t('Cookie consent notification for site can be enabled or disabled from here.'), ); $form['eu_consent_pop_msg'] = array( '#type' => 'textarea', '#title' => $this->t('Set message for cookie consent popup'), '#default_value' => $config->get('eu_consent_pop_msg'), '#description' => $this->t('Cookie consent pop up message can be set from here.'), ); $form['eu_consent_pop_scroll'] = array( '#type' => 'textfield', '#title' => $this->t('Set scroll length (pixels)'), '#default_value' => $config->get('eu_consent_pop_scroll'), '#description' => $this->t('Set after scrolling how many pixels the popup should disappear. Ex: 500'), ); return parent::buildForm($form, $form_state); } /** * [email protected]} */ public function submitForm(array &$form, FormStateInterface $form_state) { parent::submitForm($form, $form_state); $config = $this->config('module.settings'); $config->set('activate', $form_state->getValue('activate')); $config->set('eu_consent_pop_msg', $form_state->getValue('eu_consent_pop_msg')); $config->set('eu_consent_pop_scroll', $form_state->getValue('eu_consent_pop_scroll')); $config->save(); } }   Step 2: Define a controller in module/src/controller. This will have functions that retrieve country code from API. The config setting determines if EU cookie is enabled or not: <?php /** * @file * Contains \Drupal\module\Controller\EuCookie. */ namespace Drupal\module\Controller; use Drupal\Core\Controller\ControllerBase; use Symfony\Component\HttpFoundation\JsonResponse; use GuzzleHttp\Client; /** * Class EuCookie. * * @package Drupal\module\Controller */ class EuCookie extends ControllerBase { /** * Autocomplete. */ public function continent() { $ip_eu_consent = \Drupal::request()->getClientIp(); $config_status = \Drupal::config('module .settings')->get('activate'); if($config_status == 1) { $continent_code['consent'] = $this::eucookie_get_country_code($ip_eu_consent); if (\Drupal::currentUser()->isAnonymous()) { $continent_code['isanon'] = true; } else { $continent_code['isanon'] = false; } } return JsonResponse::create($continent_code); } /** * Get continent code from external free service for eu consent. */ function eucookie_get_country_code($ip_eu_consent) { try { $uri = 'http://www.geoplugin.net/json.gp?ip=' . $ip_eu_consent; $client = \Drupal::httpClient(['base_url' => $uri]); $request = $client->request('GET', $uri, ['timeout' => 5, 'headers' => ['Accept' => 'application/json']]); if ($request->getStatusCode() == 200) { $response = json_decode($request->getBody()); if (empty($response)) { return []; } else { return ($response->geoplugin_continentCode); } } else { return []; } } catch (\GuzzleHttp\Exception\ClientException $e) { $message = $e->getMessage() . '. Make sure you provided correct IP to get country code .'; \Drupal::logger('module_get_country_code')->notice($message); return []; } } }   Step 3: Add hook page attachment alter to get variables defined in config and send them to js: <?php function hook_page_attachments_alter(&$page) { $ip_eu_consent = \Drupal::request()->getClientIp(); $config_status = \Drupal::config('module.settings')->get('activate'); $mesage_consent = \Drupal::config('module.settings')->get('eu_consent_pop_msg'); $scroll_length = \Drupal::config('module.settings')->get('eu_consent_pop_scroll'); if($config_status == 1) {     $page['#attached']['library'][] = 'path to library'; $page['#attached']['drupalSettings']['message_eu_consent'] = $mesage_consent; $page['#attached']['drupalSettings']['eu_consent_pop_scroll'] = $scroll_length; } } ?> Step 4: Routing file, with route to retrieve settings form and get the continent code via ajax: module.admin_settings: path: '/admin/config/eucookie' defaults: _form: '\Drupal\module\Form\SettingsForm' _title: 'EUCookie settings' requirements: _permission: 'administer site configuration' module.ajax_continent: path: '/ajax/continent' defaults: _controller: '\Drupal\module\Controller\EuCookie::continent' _title: 'ajax continent' requirements: _permission: 'access content' Step 5: Add js below in custom/js as condition for scroll, get defined variables from config and display EU cookie popup. (function($) { 'use strict'; Drupal.behaviors.moduleeuconsent = { attach: function(context, settings) { $(document).scroll(function() { var scroll_len = drupalSettings.eu_consent_pop_scroll; var scrollBottom = $(window).scrollTop() + $(window).height(); scrollBottom > scroll_len ? $('.cc-window').fadeOut() : $('.cc-window').fadeIn(); }); var msg = drupalSettings..message_eu_consent; $.ajax({url: "/ajax/continent", success: function(result){ if (result['consent'] == 'EU' && result['isanon']==true) { window.cookieconsent.initialise({ palette: { popup: { background: '#252e39' }, button: { background: '#14a7d0' } }, content: { message: msg, dismiss: 'Close', link: 'Show Cookie Policy' } }); } }}); } }; }(jQuery));   Step 6: External js needs to be defined in libraries.yml which creates popup module_lib: version: v3.14 css: theme: //cdnjs.cloudflare.com/ajax/libs/cookieconsent2/3.0.1/cookieconsent.min.css: { type: external } js: //cdnjs.cloudflare.com/ajax/libs/cookieconsent2/3.0.1/cookieconsent.min.js: { type: external, scope: footer } js/module.js: { scope: footer } dependencies: - core/jquery - core/drupal - core/drupalSettings   And hence the EU Cookie functionality will be implemented in your Drupal 8 website. Please do comment if you have any feedback or if this code does not work for you.  

Faichi.com: <a href="/blog/building-a-chatbot-using-aiml-parser-in-drupal">Building a Chatbot using AIML parser in Drupal </a>

Planet Drupal -

  Introduction AIML Parser module lays down the foundation for introducing AIML in Drupal and creating Chatbots. As you may know, Chatbot is a program that chats with users automatically. In this blog I will introduce and highlight basic concepts that have been used for building this module.   Things you need to know before you start using this module:   1) What is AIML? AIML (Artificial Intelligence Markup Language) is an XML-compliant language that is easy to learn, making it possible for you to customize a Chabot (Drubot) or create one from scratch within minutes. AIML pattern syntax is very lucid, significantly less complex than regular expressions. To compensate for the simple pattern matching abilities, AIML interpreters could provide pre-processing functions to expand abbreviations, remove misspellings, etc.   2) What is a Chatbot? A chat robot (Chatbot) is a conversational agent. A computer program designed to simulate an intelligent conversation with one or more users via auditory or textual medium. This Chatbot can pose as a knowledge agent in place of an FAQ or can be used as a call-center agent.   3) What is an AIML file? AIML file is similar to an xml file with its own tags. AIML files are open source, and can be found over the web for free. We have uploaded a few of them here, (Download Sample AIML files).   Let’s take a look at an example. WHAT ARE THE LAWS OF THERMODYNAMICS? I'm not a physicist, but I think this has something to do with heat, entropy, and conservation of energy, right?   In the above example the pattern is: "WHAT ARE THE LAWS OF THERMODYNAMICS?" And the template is: "I'm not a physicist, but I think this has something to do with heat, entropy, and conservation of energy, right?"   If you upload this AIML file through an AIML parser module, module will parse the file and store respective tags in database. Later you can access them through a query and your Chatbot answers the question:     "WHAT ARE THE LAWS OF THERMODYNAMICS" Answer: "I'm not a physicist, but I think this has something to do with heat, entropy, and conservation of energy, right? Here are some Basic Tags which are present in an AIML file and can be parsed by this module.   AIML - defines the beginning and end of a AIML document. Category - defines the unit of knowledge in knowledge base. Pattern - defines the pattern to match what a user may input to an Drubot. Template - defines the response of an Drubot to user's input   Who creates AIML tags?  These tags are open source, with a number of communities and companies contributing to enhance them.   Now that we know all about Chatbot and AIML, you must be wondering how Chatbot works? Chatbot needs AIML files as knowledge source, a database from where Chatbot can retrieve responses for the asked pattern.   Use Case of this module: After the AIML tags are parsed and stored in the database, you are ready to create a Chatbot,   We are working on a Chatbot called Drubot.   Steps to create a Chatbot using AIML parser:   Step1: Create a custom block. Step2: Add a robot image to the block. Step3: Create a form in the block with a text-field. Step4: This text field will accept input from user.   This accepted input is the pattern, which when queried in Drupal database, gives you the response. Referring to the example stated above, if user types: ‘WHAT ARE THE LAWS OF THERMODYNAMICS?’ into the text field.   It displays ‘I'm not a physicist, but I think this has something to do with heat, entropy, and conservation of energy, right?’ as the response.   How does AIML parser module empower the Chatbot to learn?   There are open source AIML files available that serve this purpose. For example- science.aiml, sports.aiml, love.aiml.   AIML files have questions and answers related to each category. If you want to educate your Chatbot about science, then upload science.aiml and Chatbot can then use the responses stored in the database to answer science related questions.   We are currently working on a Chatbox in Drupal download link which uses AIML parser as a dependent module.   Now use all this information to create your own chatbot. Feel free to connect with us for any assistance.

 

Faichi.com: <a href="/blog/drupal-8-from-omnichannel-content-strategy-to-omnichannel-digital-experiences">Drupal 8: From Omnichannel Content Strategy to Omnichannel Digital Experiences</a>

Planet Drupal -

Omnichannel Content Strategy

In today’s digital world, users are always at the center. All the systems with which users interact need to be in sync with each other to serve a unified user experience. Various touch points from which user accesses information or content or products to buy has significantly increased. Ensuring uniformity and consistency of content across multiple devices and social channels becomes a challenge.

Omnichannel content strategy is a way to describe the unified experience across all the channels and touchpoints. With respect to omnichannel, users have become demanding. Irrespective of how and where the content or products are being accessed or bought by the user, complete consistency and a unified experience is expected. For instance, in ecommerce, a customer may view products on multiple channels such as Facebook, Instagram or Website, Mobile App or even the brick and mortar store. To make a sale via this customer, companies these days need to be able to complete the checkout process from any of the channels or touch points.

Addressing the User Journey to Bridge the Gaps

Any gaps or inconsistencies in user’s experience eventually leads to a lost customer and hence lost sales. To better understand and cater to the user’s needs, entire ecosystem accessed by the user needs to be thoroughly architected. All the steps user would take, all the multiple touchpoints and channels the user can access to consume the content or information or products need to be mapped out and properly executed for consistency in user information, product information and all content.

Omnichannel Digital Experiences

With the advent of technologies such as Machine Learning, IOT, Virtual Reality, Augmented Reality etc., web is just not limited to sites, apps or social media channels. Hence, omnichannel is now bound to go beyond content strategy, omnichannel is now about the entire digital experience of the user.

Identifying the same, Dries mentioned some Drupal 8 implementations in his keynote at DrupalCon Dublin where Drupal 8 has been leveraged to create amazing digital experiences.

  • Drupal 8 is going to power the Digital Kiosks of New York Subway system
  • Vodafone’s in store kiosks would be all centrally managed powered by Drupal. In Europe alone they have thousands of such kiosks
  • Lufthansa’s in-flight entertainment system would be powered by Drupal 8

In future, traditional web is going to be replaced by conversational computing, virtual and augmented reality. For Drupal to be able to keep up with these developments, Acquia has launched an R & D division which will be led by Dries himself.

Drupal 8: Built to support Omnichannel Digital Experiences

There are multitude of features shipped with Drupal 8 in core that make it a perfect fit to cater to the current needs of creating omnichannel digital experiences. Some of the features are highlighted below

API First Publishing

Drupal 8 has web services in core. What that means is that any system can be integrated with Drupal 8 via APIs. Drupal’s core content management features can hence be extended to other systems via APIs or services layer. Omnichannel’s basic capability, to be able to integrate with all the systems that interact with user, can easily be built in Drupal 8.

Mobile first and Out of the Box Responsive

Omnichannel content needs to be accessible via devices of any form factor. Drupal 8 beautifully caters to this. Drupal 8 has been designed with mobile first strategy. Its responsive design ensures that content and layout are scaled based on the viewport size available. Drupal 8 core ships with two modules that ensure mobile first behavior – Breakpoint and Responsive Image.

Conclusion

Omnichannel digital experiences are soon going to be a norm rather than an exception. As and when other technologies ensuring best digital experience scale up, Drupal needs to be ready. Web, as we know it today, is not going to be limited to just pages (on laptop or mobile). To ensure that Drupal and CMS in general remain relevant, it is crucial to scale the core architecture. Gladly, Drupal 8 is a step in the aforesaid direction and we would see many other features in Drupal 8 in future releases that would make Drupal 8 a robust backend to create omnichannel digital experiences. 

Faichi.com: <a href="/blog/open-social-drupal-8-distribution-building-social-communities-with-drupal-8">Open Social Drupal 8 Distribution-Building Social Communities with Drupal 8</a>

Planet Drupal -

Introduction Welcome to the third post in the series of Drupal 8 and Distributions. In the first post we discussed about what Drupal Distributions are and what are some of the prominent distributions available in Drupal 8. In the second post, we explored Lightning Drupal 8 distribution by Acquia. We discussed about how Lightning can be leveraged to create amazing publishing experiences and how it proves to be an ideal distribution to get started with Drupal 8 development.   About Open Social  Open Social is a distribution built in Drupal 8 to create social communities and intranets. It comes with an array of features and functionalities useful in building any social framework. In the Drupal community, Open Social is positioned as a successor of Drupal Commons. Drupal Commons is a Drupal 7 distribution that is an out of the box community collaboration website.   Since Open Social is built in Drupal 8, it wraps in itself an array of possibilities leveraging the features of Drupal 8. It is interesting to see that the distributions built in Drupal 8 in general are much more light weight as compared to the distributions built in Drupal 7. Hence, if we compare Open Social with Drupal Commons, the latter is relatively a heavier distribution and ships with many modules that the user may not really need while building the website. Open Social on other hand is a platform that is generic yet useful.   With the advent of Drupal 8, Drupal is evolving into a product and Open Social is an apt use case of the same. We also, at Faichi, believe in using Drupal as a product development framework. We have leveraged Drupal to build a product that helps you expedite project estimations. We plan to continue to use Drupal to build products.    Out of the Box Features in Open Social User Profiles and Signup
  • Signup – Open signup or Closed Signup are easily configurable
  • Profile Setup – You can add your full name, image, interests and biography along with location, address etc.

 

 
  • User Roles – There are four user roles available, namely, Authenticated User, Administrator, Content Manager and Site Manager. This is the perfect recipe to build a community in which you require a team to manage the content and other sections of the community platform. 
 

 

User Groups
  • Group module of Drupal 8 – This module has extensively been used. Conceptually it is a replacement of Organic Groups module available in Drupal 7.
  • Ability to create an Open Group for discussions, add members, create events and topics.  
    Content Types and Structure
  • Two content types – Events and topics. Taxonomy has been used to create different topics. This architecture makes Open Social light weight to install and use.
  • Blogs, News etc. are all same content type as topic but have different taxonomy.
  Stream (or Timeline) and Commenting
  • Users can create posts on the timeline (or stream) which is then visible to all other users. Currently just text can be posted on the stream. We can expect the ability to add media as a post on Stream in future.
  • All the recent activities by the user such as creating an event, enrolling in an event, joining a group etc. are showcased in Stream. 
  • Commenting is available on events, posts and user groups too.

 

  Media Management
  • Ability to add images wherever needed such as profile and events.
  • File System, Images Styles and all other media configurations needed to add, resize and adjust images in built.
  Notifications and Search
  • Extensive notification center has been built by messaging feature.
  • Ability to search for Content, Users and Events.
    Events Management
  • Ability to Create, Publish, Un-publish events. Groups specific events can also be created.
  • Users can enroll for events and be notified about it.

 

  Responsive and Multilingual Support    Main Contributed Modules Used Many contributed modules have been used to build Open Social, some of the prominent Drupal 8 modules used are as follows
  • Group 
  • Address
  • Bootstrap
  • Messages
  • Composer used heavily and is needed for installation and updating the platform
  Future Product Roadmap Open Social is constantly evolving and following are some of the features which are there in the product roadmap and can be expected in future.
  • Closed and Secret Group. Currently only Open Group is supported
  • Aggregating the notifications to enhance the user experience
  • Mention – To be able to tag or mention a user with @.
  • LDAP Integration
  • Progressive Web App – For push notifications, offline usage capability
  Conclusion Open Social has the right blend of features needed to build a social community and is surprisingly quite light weight to use. There are many features which the users may require while building a social community but shipping the distribution with all of them is probably not the right approach. Hence, Open Social proves to be an apt platform to get started with building your community or intranet and add more features as and when needed.    

Faichi.com: <a href="/blog/everything-about-dries%E2%80%99s-keynote-at-drupalcon-dublin-2016">Everything about Dries&#039;s Keynote at DrupalCon Dublin 2016</a>

Planet Drupal -

Introduction by Megan Sanicki The Executive Director at Drupal Association Megan Sanicki began the keynote. She emphasized on Drupal Association’s mission and said that she would further be working to unite the community so that we build and promote Drupal.   Individuals and Businesses together making Drupal great She told about how individuals and businesses are working together to make Drupal great. There are many instances that support this  
  • Hubert Burda Media based out of Germany fell in love with Open Source and Drupal. They came together with competitors and created Thunder, a Drupal 8 distribution for professional publishers and made it available for everyone in the community
  • Appnovation has funded the development of Composer
  Top 30 Contribution Sponsors Megan talked about how in drupal.org now the contributors can attribute their contribution(s) to their employer, agency or client. Ever since this data has been tracked, interesting insights have been revealed. The following is the graph of top 30 contribution sponsors and we are proud to see Faichi’s name at the 9th position there.   Matthew Tift from Lullabot and Dries studied the data and found that 69% of contributions are sponsored. Also, 21% of contributions are sponsored by these 30 companies.       Journey to Drupal – Contribution and/or Adoption Megan highlighted that Contribution or Adoption are the two ways in which one steps into Drupal. She said both the journeys need to be strong. Drupal Association has been helping in both sides of the journey by following methods.    
  • Contribution Side
    • DrupalCon – Mentors, Sprints, Core Conversations
    • Drupal.org – Always On, Improved tools
  • Adoption Side
    • Future proof, an entire community is present to back on
    • Users are finding the information they need – testimonials, case studies etc. but could not find that on Drupal.org earlier, changed UI and UX of drupal.org would be helpful
    • DrupalCon is a great way to adopt Drupal via various training sessions targeted to beginners as well as experienced developers
  Dries’s Keynote Dries was welcomed on stage by Drew Gorton, Director of Community and Agency Outreach at Pantheon. As usual Dries taking over the stage was followed by loud applauds. Dries’s keynote was primarily categorized in two areas
  • Drupal 8 and Update
  • The WHY
  Drupal 8 and Update Dries announced that Drupal 8.2 is set to be released on 5th Oct 2016. It would come with a lot of new features.
  • Block Placements – Till Drupal 8.1 one had to identify the region in which the block needs to be placed, then go to the backend, identify the block to be placed and specify the region there and go back to homepage again to see the changes. In Drupal 8.2 no need to go through this entire process, just identify the region on the page itself and place the block right there.
  • Changing a Menu – In Drupal 8.2 we have a settings tray that provides an Outside In experience of editing the menu. Settings Tray appears right on the page and the changes done in the menu can be seen right there. This will be a real game changer in terms of usability.
  • REST API Improvements – Making them more robust and easy to use. 
  • Migration Improvements- Migrate path from D6 to D7 and D7 to D8 has been improved significantly. In an example Dries migrated his own D7 site to D8 in just 10 minutes. Interesting to see that this migration leaves D7 site intact. The UI provided migrates all the configurations and the content to D8. It does not migrate any legacy tables.
  Dries talked about certain implementations where Drupal 8 is leveraged to create amazing digital experiences 
  • Drupal 8 is going to power the Digital Kiosks of New York Subway system
  • Vodafone’s in store kiosks would be all centrally managed powered by Drupal. In Europe alone they have thousands of such kiosks
  • Lufthansa’s in-flight entertainment system would be powered by Drupal 8
  Strategic Initiatives Based on the survey data there have been certain areas that have been strategically chosen to work upon
  • Blocks and Layout
  • Migrate
  • API First
  • Workflow
  • Settings Tray
    How did we achieve this much progress?
  • Scheduled releases – A new release every 6 months
  • Semantic versioning – New features and easy upgrades
  • Experimental modules – Idea -> Alpha -> Beta -> Stable [Easy upgrade path for new modules]
Some new ideas
  • Default content to be available once Drupal has been installed
  • Settings tray to be used in different parts of Drupal
  • Media initiative – Building prototype to improve assets management in Drupal
  • Field Layout or Content Type Layout for enhanced experience
  • Refreshless – Reduces UI gap between native and web apps.
  The WHY Dries mentioned about his recent holiday to Tuscany. This holiday without internet for a week gave him time to reflect on the journey so far. Code was Dries’s passion and motivation initially to work on Drupal, over the years it has definitely changed, “My passion evolved beyond Code to include People and Impact”.   Dries recollected some of the meaningful moments in his life
  • Knowing that Drupal has changed people’s life, “When people find Drupal it gives them a better career path”
  • Seeing Drupal used for Aid Relief: DrupalCon Portland 2013 - People building Drupal to be used to provide aid for people hit by tornado
  • Keeping the web open – Drupal and the community’s contribution to this
  • Some other meaningful moments
    • Fund raising after the Great Server Meltdown
    • When Dries had to ask individuals to leave the project
    • The development of Drupal 8 – Hard work of many people across 4.5 years
  Dries talked about how we find meaning when our work results in life changing outcomes for others. He explained this in context of the Happiness Hypothesis as illustrated below.   How do we scale the impact of the project? Towards the end Dries also mentioned about some initiatives that are highly appreciable and are working towards scaling the impact of Drupal
  • India’s Drupal Campus Ambassador Program – A program to have one or more Drupal Ambassador in universities to represent and promote Drupal and eventually help the students get a job in Drupal.
  • UK Drupal Apprenticeship Program – A program to provide Drupal boot camps to people who want to learn Drupal and very quickly get into Drupal workforce. They also have an in depth training program to train the disadvantaged but talented young people and place them in Drupal companies.  
  Dries highlighted that “Collective purpose is what sets Drupal apart”. As we all say, “Come for the code, stay for the community.”

 

Faichi.com: <a href="/blog/faichi-at-drupalcon-dublin">Faichi at DrupalCon Dublin</a>

Planet Drupal -

Opening Reception   Date: 26th Sep 2016 Time: 17:00 to 19:00   Room: Forum Hall, Dublin Convention Centre   Faichi is sponsoring the Opening Reception from 17:00 to 19:00 today i.e. 26th Sep 2016, located in Forum of the Dublin Convention Centre. Please join us for  some snacks and refreshments and have some amazing discussions around creating incredible digital solutions in Drupal.   Animate Your Site   Date: 28th Sep 2016 Time: 17:00 to 18:00   Room: Liffey Meeting 2 | Amazee Labs    Nikhil and Vidit are presenting this session on the third day of DrupalCon. Animation is skeuomorphism. It is a custom created illusion that makes the websites highly user friendly and creates the perception of a highly dynamic website. It helps in grabbing the attention of visitors and hence results in increased ‘time on site’ as compared to non-animated sites.   In this session Nikhil and Vidit will discuss about the following
  1. What is Animation?
  2. Where to use?
  3. Types of animation
  4. 12 basic rules of Animation
  5. How can we make it interesting?
  6. How can we achieve animation across the devices?
  7. Performance impact and how can we avoid
  8. Animation in Drupal
  9. Demo of animation in Drupal 8
Be there to begin your own experiments with animate.js and many other front end js and CSS libraries.    Project Estimation Tool In this DrupalCon we are showcasing our Project Estimation Tool powered by Platform.sh and built in Drupal. Meet us to know everything about it and how it can help you expedite your project estimates. You may also click here to sign up for your 45-days free trial.         Hope you have a great DrupalCon!

Faichi.com: <a href="/blog/optimize-your-implementation-costs-with-salesforce-drupal-integration">Optimize your implementation costs with Salesforce-Drupal integration</a>

Planet Drupal -

Business Challenge Consider a use case in which you have your business website in Drupal and you have a lot of customer support requests to cater to. Now, the methods of capturing that information is by the Contact Form on your Drupal website, support email ID that you have provided to customers and also the toll free phone number that has been provided.   Solution   Users Mapping We would integrate your Drupal website with the Salesforce CRM in such a way that both the systems identify the user(s) being referred to when a support request is raised. Basically we will map your user profiles in Drupal to the user objects in Salesforce.    Support Tickets Mapping We would integrate Drupal with Salesforce in such a way that any tickets that are raised in Salesforce are replicated in Drupal and vice versa.   Methods of raising the support tickets
  1. Contact Form: Customers can fill out their support request on this form present on Drupal site. This would create a support request on Drupal as well as on the Salesforce real time. 
  2. Email ID: Salesforce will be directly integrated to this mail Id and hence each mail from this mail ID will be a support request raised in Salesforce which eventually will also be created in Drupal on cron run syncing.
  3. Toll Free Number: this will be integrated to your Salesforce account and hence all the calls will be mapped to create the support tickets in Salesforce. Again these tickets will then be replicated in Drupal too.
  Benefit Since all support tickets are available in Drupal along with user profiles of your customers, your support team (consisting of many engineers based on your business needs) works on Drupal enabled system and addressed those support tickets (without an account on Salesforce).    You only require one Salesforce developer license in this implementation.

Faichi.com: <a href="/blog/creating-amazing-publishing-experience-with-lightning-a-drupal-8-distribution">Creating amazing publishing experience with Lightning, a Drupal 8 Distribution</a>

Planet Drupal -

About Lightning  Lightning accelerates Drupal 8 development and streamlines authoring experience for business users. It enables developers to create great authoring experiences and is easy for non-technical users to create and manage content.    Although Lightning is focused towards creating authoring and publishing experiences, it can also be leveraged as a starter kit for Drupal 8 development. It brings together critical functionalities needed for scaling enterprise business solutions.   Modular development, adding more features via other custom and contributed modules can also be done. By using Lightning to get started on Drupal 8 development reduces the development time by 20% (as per Acquia).     Features of Lightning Lightning helps organizations in customizing the four key components of digital experience that any marketing or editorial team requires. Following are the details:   Drag and drop layout  Lightning enables non-technical users to create flexible and responsive layouts for creating pages and other content without any developer intervention.   Media Management There is no need of installing the media related modules and configuring them to build a library for media management. Entire media management including ready to use media library pre-exist. Users can directly start uploading images and videos to the platform either from URL or from their laptop.   Content Workflow Business users can easily configure content workflows to streamline review and ensure editorial quality. Since the basic content workflow is already available, adding governance to publishing by adding some additional states to the workflow is effortless.   Experience Preview  Lighting showcases publishing prowess with ability to conduct comprehensive review of entire content consisting of text, images, videos etc. before publishing. This is a crucial and highly beneficial feature for publishing process.   Let’s consider a Business Use Case Marketing team requires constant content publishing, consisting of text, images, and videos. It also requires managing marketing campaigns and cross channel experiences. The team consists of Content Writers, Editing Manager, Content Publisher, and Marketing Manager. With the use of Lightning distribution and Faichi’s Content Creation Publishing framework  one can create a seamless publishing solution.  Compared to building a solution ground up, this combination saves 30% of development / release time. Faichi’s framework handles multi-channel publishing and cross channel experiences inherently.   Layout Content publisher or Marketing manager can easily create a different layout needed for a specific marketing campaign with available layouts or creating a new layout  with the drag and drop functionality.      Media Content writer or the Editing Manager can add images or videos for marketing campaign. They can also select the previously used images or videos from the media library, ensuring re-usability of media assets.     Workflow It ensures seamless flow of content among Content Writer, Editing Manager, Content Publisher, and Marketing Manager. This workflow ensures seamless collaboration across different stages for e.g. Draft, Needs Review, and Send to Marketing Review.

Preview Marketing manager can preview content and conduct comprehensive reviews on various devices before publishing.    Benefits Lighting provides you sheer peace of mind due to the following merits.   Constant Development Support  Since it is a Acquia released distribution, it will constantly be supported with bug fixes, security patches, suite of automated tests etc.; reducing the maintenance burden for developers.   Enhanced Security All the stable releases of Lightning are scrutinized by Drupal’s Security Team. There is a dedicated security team constantly working towards making Lighting more secure.   Test Driven Development and Automated Testing Lightning focuses on automated testing, with a test-driven development approach for the modules added to the distribution. Automated testing has been used including unit tests, behavioral testing with Behat, and Selenium testing, ensuring that modules work cohesively.

 

Faichi.com: <a href="/blog/drupalcon-dublin">DrupalCon Dublin is here</a>

Planet Drupal -

Among the usual session tracks such as Business, Coding & Development and others, two session tracks have interestingly caught our attention are Being Human and Symfony. Symfony had 5 sessions in DrupalCon New Orleans while it was absent in DrupalCon Asia. In DrupalCon Dublin , Symfony has 5 sessions. Such sessions would help  leverage Drupal 8 to create enterprise oriented applications. It would also open Drupal 8 towards standardization in the tech world.     Sessions accepted in the Being Human tracks are quite interesting and have been introduced in DrupalCon for the very first time. With sessions talking about burnout, happiness, healthy teams etc. we are sure these sessions would ignite interesting debates.   We, at Faichi, are equally excited about DrupalCon Dublin. We are happy to announce, out of the three sessions we submitted, one session has been selected. Details of the sessions  are as follows. We congratulate all the 130 selected sessions, from a record number of session submissions mounting to 621.    Title: Shunya – A Circular Theme Track: Front End   In this session we are going to introduce the “Shunya” theme. We will talk about the use cases applicable for this theme and how it makes a difference to create sites using this theme for those use cases.   Implementing Motion animation to load the content is also there in the roadmap. The main circular pane which has the content could then be rotated via motion animation for an enhanced User Experience. If the content goes outside the Shunya shape, we dynamically convert it into pages and provide the pagination which then works as a gallery slider in the content region.   Title: Varnish – Journey from Beginner to Proficient Track: Performance and Scaling   Performance has always been a challenge that every new site faces irrespective of the technology in which it has been built. Performance of the site is of paramount importance because the website will not receive the desired visibility among its audience if it is slow. As an industry standard and based on statistics we already know that Loading time is a major contributing factor to page abandonment. Page abandonment increases upwards from 25% as the page load time increases from 4 seconds.   This session will explain how Varnish can be leveraged to load  sites faster. Starting from the basics of  Varnish, the session would cover the configurations of  Varnish and would also explain how Varnish can be used as a load balancer.   Title: Animate Your Site [Selected Session] Track: Front End   Animation is skeuomorphism. It is a custom created illusion that makes the websites highly user friendly and creates the perception of a highly dynamic website. It helps in grabbing the attention of  visitors and hence results in increased ‘time on site’ as compared to non-animated sites. In this session we will discuss about types of animation, basic rules of animation, impact of animation on performance and lastly implementing animations in Drupal   We hope this DrupalCon turns out to be a great experience for all the attendees.

Faichi.com: <a href="/blog/drupal-8-and-distributions">Drupal 8 and Distributions</a>

Planet Drupal -

What is a Drupal distribution? Drupal distribution is an installable package consisting of Drupal core, set of Drupal contributed modules, themes, libraries and installation profiles. Mostly every Drupal distribution caters to a specific business use case such as ecommerce, intranet, social media, community website etc.    Tell me more about Drupal distributions Well, Drupal Distributions have been around since Drupal 4. The very first distribution was built in Drupal 4.6 called CivicSpace. Ever since a lot more Drupal distributions have been built by the community and sponsors. Now, there are 1055+ Drupal distributions available on drupal.org. So, no matter what you are trying to build, chances are, that you should be able to find a distribution for it to begin with.   Drupal distributions in Drupal 8 Drupal 8 has been around since November 2015 i.e. close to 7 months now. The community has already started working on distributions in Drupal 8 and so far, 39 distributions are available in Drupal 8 including both the ported and the new ones. It is interesting to see that there are around 16 distributions that have been built in Drupal 8 itself and not ported from Drupal 7. Some of the distributions that have already gained popularity in the community are:   
  1. Lightning: It’s a distribution for enterprise authoring. It provides amazing authoring experiences and hence empowers the editorial teams. Lightning makes extensive use of Layout, Preview, Workflow and Media to create seamless experience for authoring.
  2. Thunder: It’s a distribution built for professional publishing. It has in built support for the latest publishing technologies such as Facebook Instant Articles, Riddle Interactive Content and has many other modules from the industry partners such as Nexxt.tv, Acquia, Valiton etc.
  3. Open Social: This distribution is an ideal choice if you are building a social community platform or an intranet solution. It is often seen as a successor to widely popular Drupal Commons which will not be ported from Drupal 7 to Drupal 8. It has all the features that a social community website is expected to have such as Timeline, Notifications, Groups, Events, Follow etc.
  4. LISSA Kickstart: It’s a technology stack for real time messaging in second screen applications. It enables the media companies to publish live and on demand video streams and push relevant notifications to clients.
In our next blog, we will explore the use of these and some other distributions in the Media and Publishing industry. With the same thought process that a distribution has, we have created various Drupal based solutions that solve multiple business problems.   Benefits of using Drupal distribution?  There are many benefits for using Drupal distributions, some of them are as follows
  • Expedited development and hence reduced time to market
  • Community support for issues and bugs
  • Highly extensible for integration with other systems due to REST API in core
  • Empowers and executes software reusability
  • With Drupal 8, the solutions are mobile first and out of the box responsive

Pages

Subscribe to Cruiskeen Consulting LLC aggregator