سیاره دروپال

Drupal.org - aggregated feeds in category Planet Drupal
Subscribe to خوراک سیاره دروپال

Like many other Drupallers, I'm in Nashville this week. Unlike previous DrupalCons, I'm less excited about being here than previous year. While my team at the University of Colorado Boulder currently manages 1000 D7 sites, it looks increasingly less likely that we'll be upgrading to D8.

Angela “Herder of Cats” Byron recently tweeted...

OK, time for our semi-annual poll/group therapy session. ;)

What are the 5 top things you or your clients run into problems with on #Drupal 8?

— webcsillag (@webchick) March 9, 2018

The last time she tweeted this, we responded with a few specific issues we had at the time. After maintaining a handful of D8 sites in production for a few months and meeting with 20+ developers and designers from teams at all campuses in the University of Colorado system earlier this year, we now have a more comprehensive list to answer the question of why the University of Colorado Boulder isn't moving forward with updating the Express install profile to D8.

We've already written and presented about some of these, but my goal at DrupalCon is to find people who will convince me that we're wrong or point out what we're missing. I can't emphasize this enough that we really want to be proven wrong and pointed in the right direction about some of these so we can stop evaluating options other than D8:

  • When running 1000 sites, D8 requires much more CPU and memory resources to render the same HTML output as D7. Because D8's core can't be run from symlinks, it doesn't support atomic deployments or efficient opcode caching when running 1000 copies of the same codebase. This leaves traditional multisite or containers as options. Multisite's limitations are well known. Containers add complexity and require more resources that provide little benefit when running Drupal as a service.
  • D8 seems slower than D7 or other PHP alternatives. Everything from updating with Composer, menu routing, and editing pages. While this isn't as much of an issue for users browsing the sites since the output is cached and served by Varnish, the slow renders are very noticeable to editors and developers.
  • Install profile inheritance is still unstable. Despite 6 years of development, being included in popular D8 distributions like Lightning, and Dries blogging about it, it is unclear this core patch will ever be committed. Acquia drove the patch in a different direction for over a year trying to make a base profile's dependencies optional. When we suggested making the Umami demo a sub-profile of Standard, it became clear how few members of the core team knew anything about profile inheritance or supported updating core to support it.
  • Our experience with highly promoted D8 "successes" like Webform wasn’t great. The D7 version of Webform reports more than > 440K installs. The D8 version, ~32K reported installs. This isn't a criticism of @jrockowitz or the Webform code. He is doing amazing work, but we felt the lack of a larger base of developers contributing fixes and extending Webform when working with Webform and Views.
  • The lack of license compatibility with 2 of the 3 most popular licenses off the island (Apache-2.0 and GPL-3.0) is a dead end. This is related to @jrockowitz's repeated attempts to find away to give work away while earning a living developing for Drupal. Drupal's strict GPL policies now seem to stifle development vs. encouraging it when compared to the more balanced approach taken by projects like WordPress.
  • D8’s Layout Initiative isn’t a good match for how we currently manage Drupal as a service. Now that the dust has settled on 8.5.0, we'll post more on this soon.
  • We're finding fewer well-maintained contrib projects. While using contrib projects can be golden handcuffs that only get you 80% of a solution with options and assumptions you end up fighting against in the end, we've mastered the embrace and customized/extend/contribute back approach. We rely heavily on contrib and actively contribute back. We maintain or co-maintain projects used by more than 100K D7 sites. When we find fewer D8 contributions to meet even 80% or our needs, it makes less sense to develop our own solutions for Drupal than a leaner, faster framework.
  • The "let's throw everything in core" approach results in an increase in critical security releases for code we aren't using. This is an issue in environments with distributed development, systems, networking and security teams, where a security team is periodically scanning for known vulnerabilities with tools like Qualys, Arachni or Nessus. With something like sa-core-2018-001, these scans don't care that the Comments module is disabled or even deleted. They scan the code looking for anything less than Drupal 8.4.3 and report that the entire code base is a security issue. We can respond to the issue by explaining that it is mitigated by X, but that fact remains that more code in core will likely translate to more staff time applying security updates to 1000+ sites. Ideas like what @davidhernandez suggested package Drupal both framework (essential core) and product (core) aren't getting the same attention from the DA as demos and other improvements to attract non-technical users to Drupal. LTS support services offered for D6 aren't really enough since they aren't altering the code fingerprint that the security scans are looking for.

I wish moving from D7 to D8 was an obvious move for us. It would make my job much easier. After watching the normal stability requirements ignored to sneak Umami into 8.5 and realizing that the initiatives DA was promoting for core (automatic updates, project browser, telemetry and in site announcements from the DA) are NOT features we'd use in our service, it's becoming increasingly clear our needs no longer align with what is driving the priorities of the Drupal project. When I evaluate D8 through the Umami demo, it's clear that we aren't even the target audience for what the project wants to highlight to people evaluating it. When we evaluate a framework, product or service, part of what we evaluate is the cost to maintain. When fatal errors are acceptable in a demo after a core update, we question whether we'll be able to easily apply upgrades if the developers most familiar with this framework can't upgrade the demo?

The Express install profile we've developed and use at multiple campuses is the 5th most popular D7 distribution on Drupal.org.

It's not that the entire University of Colorado system is against D8 either. Both the University of Colorado Colorado Springs (UCCS) and Auraria Library are both using D8, but for very different use cases than the Web Express service we offer for free on the Boulder campus.

UCCS is moving from Ingeniux to D8. For those of you who aren’t familiar with Ingeniux, it is a XML/XLST static site generator with limited features for dynamic content.  UCCS initial D8 offering has similar limitations to Ingeniux, but they are leveraging Migrate to move sites from Ingeniux to Drupal very quickly.  They are also hosting their Drupal 8 sites themselves on the most advanced server architecture within the CU system which well set them up well to add new features in the future.

Auraria Library is another high profile D8 site.  This site has more features and functionality than the UCCS sites, but it also has a small development team supporting a small group of content editors and is hosted on Pantheon.

While D8 makes sense for both of these use case, neither of these groups had insights on how we could overcome what we think are D8's short comings for the ~1000 sites we manage for the University of Colorado Boulder.

While I'd prefer to continue maintaining D7 sites while developing new projects in D8, the lack of clarity from the DA around the EOL of D7 is forcing us to invest time in evaluating alternatives now. When I read that Symfony 4.1's router is now the fastest PHP router, I get both excited and terrified. I'm excited since, in some ways, this would prove everyone that pushed to get off the island and collaborate with the larger PHP community right. I'm terrified because I realize that Drupal going from Symfony 3 to Symfony 4 most likely means D8 to D9. If D9 means the end of support for D7 and quarterly justification for running software our security team views as insecure, we have to go all in on a direction other than D8 soon.

We've spent some time trying to answer the question, "if not Drupal, then what?" If we can't figure out how to make D8 work for us, I'll post more about what we found when evaluating alternatives to D8. This week, I'm focused on trying to make D8 work well when hosting Drupal as a Service in higher ed.

If you see me at DrupalCon, PLEASE change my view. I won't be hard to spot.

I've started a thread on r/drupal/ for everyone who's not at DrupalCon.

Developer Blog

 

Drupal Commerce 2 shipping module let you quickly add and configure various shipping methods for your site. Out-of-the-box, you can easily set up basic shipping methods for flat-rate per-order or per-item shipping options. The plug-in based system allows for more advanced shipping integrations with suppliers for real-time rate calculation.

In this Acro Media Tech Talk video, we user our Urban Hipster Commerce 2 demo site to show you just how easy it is to create a simple flat-rate shipping fee for your eCommerce store. We set it up and then run through the checkout so that you can see exactly what your customers would see.

Its important to note that this video was recorded before the official 2.0 release of Drupal Commerce useing a beta release of the Commerce Shipping module. You may see some differences between this video and the current releases. The documentation is also evolving over time.

Urban Hipster Commerce 2 Demo site

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

More from Acro Media Drupal modules in this demo

You may already know that we've been providing Drupal 6 Long-Term Support (D6LTS) for over two years.

What we have been hearing over and over lately - especially at Drupalcon - is "what about Drupal 7?"

Typically, only two major versions of Drupal are supported at once: the latest version, and the previous one. Right now, that means Drupal 7 and Drupal 8.

We don't know when the community's support for Drupal 7 will end or if the community itself will do some kind of LTS. But we do know that community support will come to end at some point. While the details will depend on what the community does, we just wanted to let everyone know...

We intend to provide Long-Term Support for Drupal 7, in order to keep your site going long after the end of official support!

Read more to learn more about our plans for D7LTS...

I presented at DrupalCon Nashville about working with the City of San Francisco to make a better transaction experience for residents. Moving beyond a simple content site where we tell users how to do things, we are now developing a brand new city website in Drupal 8, where residents can actually do those things online. The presentation covers how to run an agile project of this scale in a government environment, what we did as a part of discovery, where we're going, and how our foray into design & development is progressing so far.

Here are the slides to digest. Don't hesitate to reach out if you have any questions!

After seeing our logo alongside others in various places it was clear to us that we were starting to look outdated. The work we were doing was getting more and more advanced and our branding did not reflect this. We needed to rebrand.

We briefly stripped things right back and considered a company name change, as although it did represent what the company did when starting out, it didn’t completely represent what we do now. We quickly concluded that this was too big a change, it was important to keep the name for existing clients and also for the history of the company. This discussion did get me thinking, though, and although we weren’t changing the name, we could look toward representing the name differently. We often referred to the company as ‘CM’ and I was keen to explore using this more prominently.

One thing not so obvious that I wanted to consider was future proofing. Our current logo looked outdated, I wanted to avoid this happening to the new logo a few years down the line. It was important not to choose current styles that could easily date.

Although discussions and research revealed that the squares in our logo didn’t represent anything, we kinda liked them so I was happy to attempt to include them. This would also create a better transition from the old logo, as if I was to consider representing the company without the name fully displayed, including squares would mean it would be recognisable to existing clients.

Next up, we would need a new font, or two. Only one for the logo but I also wanted a second font for body text that could be used throughout the whole brand. Having had concerns from working with clients about the cost of using certain fonts, as these would be used throughout all official documentation these fonts had to be free to use.

What was really important to me when facing the rebrand was colours. I felt the old red was too aggressive and strangely even felt it was an outdated colour. Perhaps it was through looking at it for many years, either way it needed to change. I was very keen to introduce multiple colours that would not just be used in the logo, but spread throughout the website and other places. These colours needed to be softer, happier, current and accessible. I was also very keen to be exact even on somewhat less important colours like greys and blacks.

The last thing I needed to consider before starting was responsiveness. More and more over the years I’ve seen companies creating multiple logos that can be used in differing scenarios based on available space. Having had issues with our wide logo in the past I was keen to create 3 logos for this reason.

So, now I had a clear understanding of what I needed to create and of the deliverables we would have at the end of the process. Here’s a summary list of everything above, which I used as a reference when completing the next phase.

  1. Experiment using CM instead of ComputerMinds in logo.
  2. Future proof as best possible.
  3. Use squares in logo.
  4. Use free fonts; we need a heading and a body font.
  5. Create a palette of soft, happy, current, accessible colours
  6. Create logos for use at different sizes.

Now I could begin. It was important to create SVGs for scalability, so using Adobe Illustrator I started experimenting with squares, fonts and colours before settling on the final look. Rounded corners, 3D effects, crazy concepts were all experimented with but following feedback sessions from other ‘Minds I was happy with what we had.

 

I created three logos, each for use at different widths of available space and in different scenarios. The smallest did not display the company name as discussed earlier, I was excited to see it in use.

In addition to the logos, I also chose two free-to-use fonts from Google Fonts and compiled an assortment of colours fitting earlier requirements. Being keen for consistency, I produced a brand guidelines document available to all ‘Minds. This detailed each logo and in which circumstance to use each, all the colours with a sample and both hex and RGB values. Each heading and paragraph font samples and other specific brand guides, leaving no room for confusion and inconsistencies going forward.

 

After 7 years of our brand and website, we felt the outdated look did not reflect the cutting edge work we were doing, so it was time for a change.

With the relatively recent release of Drupal 8 there was no better time for a complete overhaul, so I set to work. But before any website design or build could begin it was important to rebrand the company fully so this could be carried through and be consistent throughout.

We released the new site and branding at the same time a few weeks ago. This series of articles talks through the complete process from rebranding to designing, development and deployment. Here’s what we’ll look at:

  1. Branding
  2. SEO analysis, planning and Information Architecture
  3. Website design
  4. Pattern lab
  5. Development
  6. Migration
  7. Deployment
  8. Lessons learned and looking forward

So, let’s jump straight in to the branding!

Recently, I detailed how to get PHP 7 and Composer installed natively inside Windows 10, but there are now two easy ways to get started with PHP on Windows, since Windows 10 introduced the Windows Subsystem for Linux (WSL), which is by far the easiest way to run Linux environments within Windows.

To get the WSL, and in our case, Ubuntu, running in Windows 10, follow the directions in Microsoft's documentation: Install the Windows Subsystem for Linux on Windows 10, and download and launch the Ubuntu installer from the Windows Store.

Once it's installed, open an Ubuntu command line, and let's get started:

Install PHP 7 inside Ubuntu in WSL

Ubuntu has packages for PHP 7 already available, so it's just a matter of installing them with apt:

Collecting Requirements for Your Project: Best Tools and Techniques adriana.cacoveanu Wed, 04/11/2018 - 12:06

Instead of stubbornly keeping yourself stuck, thinking that “Clients don't really know what they want”, how about you... give them a hand? Helping them identify and clearly articulate their needs! Especially since there are so many effective, tried-and-tested tools and techniques that grant you success when you're collecting requirements for your project.

And it sure is worth all the effort. Or, to put it this way:

It will cost you/your project a lot if you're doing it wrong.

In this respect, numbers make the most reliable proofs:

Behind the great majority of project failures, there's a lack of clarity on requirements.

Therefore, learning how to collect requirements for your project:
 

Should Drupal's installer be tailored towards the Enterpise?

In Dries' keynote at DrupalCon Nashville 2018 he discussed a blog post by Matthew Grasmick where the "first impression" or installer experience of Drupal was compared with Wordpress, Symfony, and Laravel. A tweet by Jeff Eaton then got me thinking:

Kind of weird that the #driesnote compares the install complexity of Drupal, Wordpress, Laravel, and Symfony. Why aren't AEM and Sitecore in there?

— Actually, (@eaton) April 10, 2018

Drupal powers about 2% of the web, but when looking at top websites, either by NASDAQ, FTSE, or number of visitors, Drupal powers a much bigger percentage of sites. This shows that Drupal is an Enterprise platform. When an enterprise level client is evaluating Drupal they would have much difference "first impression" experience than for example a hobbyist or blogger. Enterprise users would not often use the inbuilt installer, they'd be looking at tools such as Drush or Composer to facilitate the installation for them via some kind of continuous integration platform. For example, in my day job we install an instance of Drupal most hours of the day, this is all handled by a python script running on iron.io.

When tweeting about this blog post I had an interesting response from Kevin Oleary:

#2 is already true. The question should be “should Drupal go back to the simple install and extend model that produced it’s period of explosive growth”

— Kevin Oleary (@kolearyUX) April 10, 2018

This tweet made me readjust my thinking. Drupal was almost a ground up initiative. Drupal may not have had it's success without people like me running a blog on it, contributing to it, and fostering it within enterprise organisations. Kevin also completely derailed what the conclusion of this post was going to be. The post was going to conclude with thoughts and ideas about making things easier for enterprise clients. However, maybe the proposal in Dries' keynote to improve the installer experience will help grow Drupal from the ground up, yet again.

timmillwood Wed, 11/04/2018 - 11:47 Tags drupal planet drupal-planet drupal Add new comment

As all know, Drupal 8 is API driven first and keeps on adding in new API's which can be altered, extended for different decoupled Applications. When we talk about of decoupled Drupal, developers are allowed to use any technology frontend to bring in better User experiences. The actual UI experience is met when we present contents which fulfill the needs and requirements of the user.

Like last year I’m keeping an extremely rough setup of notes from DrupalCon as a repository of things I’m picking up and tracking of sessions that looked like they would be interested but that I couldn’t attend because I was in another session. I’ll clean then up a bit and add to them over time.

Thank you to everyone who is currently working really hard to make the event a success.

If you are kicking around con and want to meet up, contact me through here, Drupal.org, or Drupal Slack.

Monday I attended the Community Summit, and while I had lots of great discussions, I didn’t take a lot of notes. The biggest two things I noted were that Western New York DUG is doing interesting stuff with online meetings that might be worth checking out and emulating for the SC DUG. And that Mid-Camp keeps a list of all the various channels that have videos of Drupal Camp sessions.

DriesNote:

Roadmap:
The current roadmap looks pretty cool, assuming everything comes together as well as we all hope it will:

Announcing the new #Drupal8 Roadmap revealed by @Dries during today’s #DriesNote in #DrupalCon Nashville https://t.co/wKCQfvcbAr pic.twitter.com/mK5s4afe71

— DrupalCon Nashville (@DrupalConNA) April 10, 2018

Dries showed off some great stuff from the new demo site called Umami. Umami has been committed for 8.6, and we might be able to see it later in 8.5

Small correction: Umami demo is *already* in #Drupal 8.6 and we are hoping to even expose it in a later release of 8.5! #DrupalCon #driesnote

— webcsillag (@webchick) April 10, 2018

JS modernization and a new admin interface design are on their way, media library is part of that, but is likely a year out from being ready for prime-time.

Webchick summed this section of the talk nicely:

So rad to see the Out-of-the-Box and Layout initiatives being shown off together. Feels like #drupal 8 is really coming together for site builders and content authors! #driesnote #drupalcon

— webcsillag (@webchick) April 10, 2018

We are very over due for the needs of content creators, so it’s great to see meaningful headway on some of these processes.

Dries then moved on to start talking about values. It’s something he’s still not clearly fully comfortable doing, but it was good to see him try. The first public version of his attempt to define a set of values is up.

My read is that its well intended and has some ground to cover is it gets revised. I haven’t done a deep dive into its details yet, nor the response, but early reviews are mixed.

Frankly that Values statement leaves me a little cold. “Treating others with dignity and respect” !== “Creating a safe and inclusive community” #Driesnote #drupalcon

— Heather Rodriguez (@hrodrig) April 10, 2018

Although there was much less discussion today in hallways and informal chatting than I’d expected to here.

And there is definitely some ground to cover on issues that got us here in the first place:

Tech conf presenters who are white dudes, with slides of only images of white dudes, quotes only from white dudes

as a service

— Johanna Bates @ DrupalCon (@hanabel) April 10, 2018

(That’s not related to the DriesNote directly, something she ran into at later session but was on topic of my comments)

JavaScript and Accessibility: Don’t Blame the Language

https://events.drupal.org/nashville2018/sessions/javascript-and-accessibility-dont-blame-language

This was a really good session on accessibility with both a real world set of examples and realistic discussions of what’s hard and what happens when things pass tests but don’t get tested by humans.

Major take aways:

  • Modern tools support JS and it no longer gets in the way of accessibility. WCAG 1.0 said this was a problem 20 years ago, but that’s not the current best practice.
  • There are constraints to the work because of accessibility, but it they don’t have.
  • “There are times that I go to use an interactive calendar on the web and all I hear is 1, 2, 3, 4, 5, 6, 7, 8, 9, and so on to 30 or 31…with no indication that these are dates…just a mass of numbers in the middle of the page.”
  • We used to test sites by disabling CSS/JS. Now it makes more sense to try to navigate the site with a keyboard and see what happens. Remember that just because something is possible it doesn’t mean it’s obvious or good. This doesn’t get you to a great site, but allows you to pick off errors before someone finds them for you later.
  • When you tab to things, the visual affordances some designers hate can be put back in as a compromise for people using accessibility tools.
  • I need to spend more time with the iPhone voice over tool so I can test things better.
Things I didn’t go to in this window:
  • https://events.drupal.org/nashville2018/sessions/making-inclusion-happen-through-mentoring
  • https://events
  • .drupal.org/nashville2018/sessions/build-banging-sites-bpm-bricks-paragraphs-and-modifiers
  • https://events.drupal.org/nashville2018/sessions/big-changes-small-agencies
  • https://events.drupal.org/nashville2018/sessions/managing-your-most-important-resource-you
UX for Admin:

https://events.drupal.org/nashville2018/sessions/modernize-d8-admin-ux-and-accessibility-material-admin-theme

This was a really interesting session on the Material Admin theme, and what’s been needed to make it work.  It’s not perfect, and may or may not be ready for prime-time, but it looks like a great idea and show what we can do to make the admin much better.

Related projects:

  • https://www.drupal.org/project/material_admin
  • https://www.drupal.org/project/material_admin_support
  • https://www.drupal.org/project/type_style

Major take aways:

  • We’re behind, some of fixing that is easy, some of fixing that is hard.
  • When you’re UX is bad, people perceive things to be slow even if they aren’t. People think that material theme is faster even though it is demonstrably not.
  • Growth and survival of the project require us to have a better admin.
  • He’s trying to make sure add-ons for the theme/module are pretty standalone and just work. But theme’s can’t require modules which is silly.
  • Contenta uses Material by default on front and back because it provides decoupling well.
Skipped in this window:
  • https://events.drupal.org/nashville2018/sessions/take-images-to-next-level-drupal-8
  • https://events.drupal.org/nashville2018/sessions/web-accessibility-higher-education (Canceled )
  • https://events.drupal.org/nashville2018/sessions/drupal-core-auto-update-architecture
  • https://events.drupal.org/nashville2018/sessions/pdfs-drupal (overcrowded)
Salesforce BOF:

This BOF was a chance for Cornell to show off some great stuff they have been doing with Message Agency. They have done some cool stuff that shows the power for D8 and a good Salesforce integration.

@Cornell in the house at #DrupalConNA #Drupalcon2018 talking CRM (salesforce) & CMS integrations and best practices using both and interconnecting them at key points. pic.twitter.com/sH5nW9c73R

— Patrick Burns (@digitalburns) April 10, 2018

It should go without saying, but it needs saying too much:

A Salesforce is a CRM. Drupal is a CMS.

Use your tools for what they are best at.

The content in Drupal, actions recorded back into Salesforce.

Lessons:
1) Know strengths of each tool
2) Understand user needs
3) Determine how you will use each tool
4) Get the details right: SSO, Data Mapping, etc.

Drupal is much better at providing accessibility, including Form Assembly which is hard. The SF eco-system is mixed on the whole.

One option for multiple databases is https://www.snaplogic.com/ (apparently it is “capital intensive”).

So you have a Code of Conduct… now what?

https://events.drupal.org/nashville2018/sessions/so-you-have-code-conduct-now-what

This was a mini session that is worth watching if you’re unsure about the importance and value of having a code of conduct.  The hope had been to have a discussion about the importance of Drupal’s CoC, but everyone who attended largely agreed about the broad strokes of the major issues that have been discussed lately in the community.  We ended up talking more about how to broaden the discussion than about the CoC itself.

Skipped:

https://events.drupal.org/nashville2018/sessions/keeping-kittens-safe-while-altering-drupal-core

Handling a Big Year: ACLU.org in 2017

https://events.drupal.org/nashville2018/sessions/handling-big-year-acluorg-2017

This session was an interesting look at the impact on ACLU’s D6 (yes that’s right) advocacy site running on Pantheon.

Moved to Pantheon in 2013. And that move dealt with limits of their old hosting solution. Unfortunately some of my old-timey knowledge of why that had that solution was so old they couldn’t tell me much about how they had managed to make that move.

“Crazy things happen all the time”

After the their ED made a Rachel Maddow appearance on 11/16/16 they saw an 85x traffic spike. Tag1 was called in to help sort out what happened.

Traffic spiked to just over 500 requests per minute during the interview.

They found it was database bound, which was very common on D6, but still something they see frequently.

Found queries with 3 table join with no indexes on the base table. Able to go from 200,000 rows being scanned, down to 76. They were responding in real-time in crisis response mode.

After the wave passed, they called Pantheon to help build out environments for testing using multi-dev.

During the spikes that followed for the first travel ban, which were even larger they worked to reroute errors to Fastly, which served a PayPal fundraising link: at least the donations kept coming but that wasn’t good enough.

They needed a botnet to replicate the traffic. Tag1 used: Locust to create load tests, SaltStack to organize the bots, and EC2 to be the bots. They were failing at ~600 requests per minute and they were able to get to ~5,000 requests per minute. At that point the payment gateways were also starting to buckle, which isn’t a thing most people see.

The final wave they discussed came after the Net Neutrality lose, which peaked around 1,900 form submissions/min.

ACLU needed more logging, but didn’t want them logging personal information. Turned out the payment gateway’s CDN was detecting a DDOS and blocking them. See curl_log and curl_loadbalance. They also intentionally shift load from MySQL to Redis and PHP(?!?) because they knew Pantheon could scale that are far and as fast as needed to handle the waves, but MySQL was a limiting factor.

Skipped:
  • https://events.drupal.org/nashville2018/sessions/automate-your-automation
  • https://events.drupal.org/nashville2018/sessions/principles-content-layout
There is plenty left to come.
Day one at DrupalCon Nashville started with the traditional keynote by Drupal's founder Dries Buytaert. Dries talked about what is new and where are we heading. One of the main announcements was the Promote Drupal Initiative. The goal of this initiative is to start a promotional campaign that will enable to make Drupal known and loved by new decision makers. The same evening I happen to see a tweet from a formal active Drupal contributor that was questioning the director of Drupal. The tweet that got deleted very quickly said that we are compromising quality with marketing bulls**t. My first… READ MORE

Over the past few years, we’ve been listening to the community ask for explanation as to why we haven’t had any DrupalCon North America locations outside of the United States - after all it’s called DrupalCon North America, not DrupalCon U.S.A. This isn’t something we’ve taken lightly or ignored. DrupalCon North America is a major funding source for the Drupal Association, and in that regard, a major funding source of Drupal.org and the engineering work that keeps the code accessible and available for everyone.

We’ve looked at many North American cities over the years - a lot in the United States, but some outside the U.S. also. For our 2019 and 2020 location search we directly asked several cities in Canada to bid on this event, so that we could do financial and accomodation comparisons against U.S. options. I will give you the spoiler up front: 2019 and 2020 will not be in Canada or Mexico, they will be in the United States. The cities that bid were competitive, but in the end did not prevail due to things like dates overlapping with Passover and simply not being the most effective bid in comparison to the winners.

But with these cities in mind, and the voices of the community in our ears, we decided to go deeper and explore what a Canadian or Mexican DrupalCon would look like, based on survey feedback from the community and hard numbers from our history and bids. Here is that deeper look.

First, let me say that Drupal Association staff does not think solely about finances in making these decisions. We spend a lot of time getting to know the city, the vibe, the culture and the openness to a community that celebrates diversity and has a plethora of unique needs. It’s important to you, and it’s important to us.

Let’s also acknowledge that DrupalCon North America greatly underwrites the Drupal Association work and Drupal.org infrastructure to help keep the project going. So while money is not the only thing - it is very important.

So, let’s talk about finances. There are a lot of things that go into making a DrupalCon financially viable, and we did a pretty thorough job of outlining them all in our blog series last fall dedicated to the finances of DrupalCon Europe. I suggest you take a look at those, specifically the one on Solving The Financial Problem to get a good understanding on what it takes to make DrupalCon happen. A truncated look shows that there are three (3) main aspects and goals to DrupalCon finances:

  • Expenses: everything we have to spend to make it happen
    • Goal: produce show on a tight budget
  • Revenue, attendee tickets: how many people will show up
    • Goal: people show up
  • Revenue, sponsorship commitment: how much sponsors will spend to support the event
    • Goal: sponsorships have value and continue to support us
Expenses

In a look at expenses there are a vast array of things that we spend money on - from facilities and catering to program guides and paying the person who watches coat check while you’re sprinting on Friday. And overall, the proposals we’ve received from cities within the United States and outside of the United States have been fairly competitive for expenses directly related to the venue and infrastructure. That’s awesome!

There are some other indirect expenses we consider too like cost of hotel rooms, which can greatly affect whether people can afford to stay in the city, and generally Canadian cities - for example - tend to be a bit more expensive than some of our U.S. options. Other considerations include: whether the city is a airport hub for enough domestic and international flights to get people there easily; ease of setting up foreign bank accounts or legal business statuses in specific countries in order for us to operate there (including increased staff time to do this); cost of import/export for our production gear (this applies to sponsors as well). There are workarounds for some of these, and that's what we explore during an RFP process. Based on estimates, a DrupalCon outside the United States tends to pen out to be at least 10% more expensive than one within the United States - that’s around $100,000 - $150,000.

In general, the expenses section is a place where we can explore more work-arounds and potentially find a way to make a non-U.S. DrupalCon happen. However, because of DrupalCon team capacity during 2017 (the timeframe while we were contracting 2019 - 2020 cities) this is not something we could do for the immediately upcoming DrupalCons.

Revenue

As I mentioned above, revenue from DrupalCon North America is a driving force for the Drupal Association and Drupal.org. Ensuring attendee ticket sales and sponsorship revenue remain consistent from year to year (or grow) is extremely important to helping ensure our staff are funded and Drupal.org is kept running. In order to make certain that funding holds consistent and we’re able to keep Drupal.org healthy we need to keep DrupalCon North America profit margins around roughly 30-35% per event.

Here is where things start to fall apart for non-U.S. cities in the immediate future.

To better evaluate our current and potential revenue, we created 2 surveys and put them out to the public/community to participate.

Survey targets:

  • Past and potential attendees
  • Past and existing sponsors
Revenue, Attendee Ticket Sales

DrupalCon attendees are the main audience where we hear the cry for a DrupalCon outside of the United States. Individual ticket sales make up 62% of our event revenue.

Our survey to attendees had 1258 respondents. 92% of those people have attended DrupalCon North America in the past, and 99% have attended a DrupalCon somewhere in the world. So this sample represents people who are likely to attend in the future.

Since we’re talking about Revenue, it’s important to know who is paying for these people to attend. 79% of these attendees are funded by their employers. That’s a significant number and important to think about as we move into a business case for companies to attend DrupalCon.

Next, we followed up on that. “If your employer funds your trip to DrupalCon, are they willing to pay for you to travel outside the U.S.?” Of our 79% - 38% answered “No” (this number is adjusted from the chart percentages below because the question was “IF your employer pays”, and 120 people answered that they pay for themselves). That means, of our original sample size, now only 71% of attendees are still eligible to attend (22% self-funded + (62% of 79%) = roughly 71%).

Based on the responses, our projected revenue would decrease by roughly 29%.

Revenue, Sponsorships

Sponsors provide 38% of DrupalCon revenue, their sponsorships currently underwrite the cost of early bird tickets (that’s a whole other problem), and the event would simply not happen without them. They provide the foundation for the event in financing, they are the exhibit hall, and a large portion of our attendees are sponsor company employees. If sponsors don't come, we lose money and don't achieve a key purpose of our event: connecting new business decision makers with agency owners to grow adoption.

In our survey to them, we presented a hypothetical scenario in which DrupalCon takes place in Canada.

Our leading question for sponsors was “Do you do business in Canada?” and 70% of 44 responses said “No”. This doesn’t eliminate possibility, but it is the trend for the questions that followed.

We also asked “Would you sponsor a DrupalCon in Canada at same levels as you have in the past?” and only 39% of respondents answered “Yes”.

Of these sponsors, many wrote anecdotally that they simply could not support a business case for having an event in Canada.

To Sum it Up

While we’ve had advanced talks with Canadian cities, and two were finalists for 2019 and 2020 making it past initial RFP rounds, as of now we haven’t found solutions to enough of these issues to fit a DrupalCon North America within our required profit margin.

The numbers presented by the surveys would put profit margin for a DrupalCon North America outside the U.S. at an estimated 6% profit margin and would risk actually losing money for the Drupal Association. A situation and risk we cannot allow the Association to bear.

This is disappointing for many of us - and we know it is for many of you as well. We would love to see DrupalCon North America move beyond the U.S. borders, however it will not happen until at least 2021.

In between now and our next location RFP, we will continue to look at models that might make this possible. As we explore these challenges and talk more with sponsors and cities, we will share with the community any progress or new challenges as they become relevant. We appreciate your passion on this topic and understand the concerns with hosting DrupalCon in the United States for another two (2) years, especially based in our current climate of travel restraints in to the U.S. We wish it were not difficult for our community to come together.

We appreciate everyone who took the time to participate in our surveys and were honest about their desires, motivations and realities of their travel to and participation in DrupalCon. We're excited seeing many of you in Nashville this week, and hope many of you will join us in 2019 for DrupalCon Gedfyuikemndjfkioiujhtrj - sorry, something has happened to my keyboard. ¯\_(ツ)_/¯

_________________________

We invite you to share thoughts in the comments section below on how you think DrupalCon 2019 and 2020 can help provide more opportunity for community members outside the United States to participate in the event - either through direct attendance or through virtual participation of some kind. What are your ideas?

File attachments:  Business in Canada.png Employer Fund International Travel.png WhoFunds.png Would you Sponsor.png

The post Mobomo Speaks at the Government Summit appeared first on .

Since its founding, Drupal has grown a great deal, and today there are thousands of contributors and organizations that make up our community. Over the course of seventeen years, we have spent a great amount of time and effort scaling our community. As a result, Drupal has evolved into one of the largest open source projects in the world.

Today, the Drupal project serves as a role model to many other open source projects; from our governance and funding models, to how we work together globally with thousands of contributors, to our 3,000+ person conferences. However, the work required to scale our community is a continuous process.

Prompted by feedback from the Drupal community, scaling Drupal will be a key focus for me throughout 2018. I have heard a lot of great ideas about how we can scale our community, in addition to improving how we all work together. Today, I wanted to start by better establishing Drupal's values and principles, as it is at the core of everything we do.

Remarkably, after all these years, our values (what guides these behaviors) and our principles (our most important behaviors) are still primarily communicated through word of mouth.

In recent years, various market trends and challenging community events have inspired a variety of changes in the Drupal community. It's in times like these that we need to rely on our values and principles the most. However, that is very difficult to do when our values and principles aren't properly documented.

Over the course of the last five months, I have tried to capture our fundamental values and principles. Based on more than seventeen years of leading and growing the Drupal project, I tried to articulate what I know are "fundamental truths": the culture and behaviors members of our community uphold, how we optimize technical and non-technical decision making, and the attributes shared by successful contributors and leaders in the Drupal project.

Capturing our values and principles as accurately as I could was challenging work. I spent many hours writing, rewriting, and discarding them, and I consulted numerous people in the process. After a lot of consideration, I ended up with five value statements, supported by eleven detailed principles.

I shared both the values and the principles on Drupal.org as version 1.0-alpha. I labeled it alpha, because the principles and values aren't necessarily complete. While I have strong conviction in each of the Drupal principles and corresponding values, some of our values and principles are hard to capture in words, and by no means will I have described them perfectly. However, I arrived at a point where I wanted to share what I have drafted, open it up to the community for feedback, and move the draft forward more collaboratively.

While this may be the first time I've tried to articulate our values and principles in one document, many of these principles have guided the project for a very long time. If communicated well, these principles and values should inspire us to be our best selves, enable us to make good decisions fast, and guide us to work as one unified community.

I also believe this document is an important starting point and framework to help address additional (and potentially unidentified) needs. For example, some have asked for clearer principles about what behavior will and will not be tolerated in addition to defining community values surrounding justice and equity. I hope that this document lays the groundwork for that.

Throughout the writing process, I consulted the work of the Community Governance Group and the feedback that was collected in discussions with the community last fall. The 1.0-alpha version was also reviewed by the following people: Tiffany Farriss, George DeMet, Megan Sanicki, Adam Goodman, Gigi Anderson, Mark Winberry, Angie Byron, ASH Heath, Steve Francia, Rachel Lawson, Helena McCabe, Adam Bergstein, Paul Johnson, Michael Anello, Donna Benjamin, Neil Drumm, Fatima Khalid, Sally Young, Daniel Wehner and Ryan Szrama. I'd like to thank everyone for their input.

As a next step, I invite you to provide feedback. The best way to provide feedback is in the issue queue of the Drupal governance project, but there will also be opportunities to provide feedback at upcoming Drupal events, including DrupalCon Nashville.

Automated testing is like flossing your teeth: you know you should do it, you might even tell people you do it, but chances are you don't do it nearly as often or as consistently as you ought to. Maybe you only run one automated test. On five percent of your code. Sometimes.

Manual testing vs automated testing

Manual testing—where a real live person clicks around and verifies that the code does everything it's supposed to do—has its uses. But for large-scale projects, or in cases where you need to test the same code repeatedly, automated testing can be both more cost-effective and more fruitful. You know how your eye can look at the same spelling error six times without seeing it? Automated testing can catch issues like that. It's great for rote, boring tasks that humans gloss over.

In test-driven development, you actually build the tests first and then write the code that fulfills those tests. But you don't necessarily have to do automated testing that way. Tests can be written afterwards. Sometimes it's old code that gets automated tests built for it, for instance.

Writing the test probably takes more time than it takes to initially test it. But then it's done, and you can re-run the test any time you make any change to that site. Even if you don't change anything near that code, you can run the test anyways and catch those instances where you're like, "I'm sure it won't break that"…but it does.

Drupal maintainers try to be really strict about the automated tests. Since lots of people use the modules, and lots of people contribute to them, you have all these different people submitting code. Having a good test suite can really improve your confidence in a module. If each submission comes with new tests that you can run and verify, you can be far more confident in the quality of that code.

Time savings

Say you do 10 hours of manual testing for each release. If, on the other hand, you spend 10 hours writing automated tests for each release, then for release #2, you're actually doing 20 hours of testing, and for release #3 you're doing 30 hours of testing. You're only putting in 10 man hours each time, but your test suite keeps growing, and the scope of what you're testing increases exponentially because you can rerun the same tests each time.

Why is automated testing such a hard sell?

Going back to the flossing example: why don't you floss? It takes 60 seconds. But you only really get the benefits if you do it all the time.

More to the point: not doing it takes time to become bad. Skipping automated testing on your first release is maybe not a big deal. Your code base is small, it's probably only doing a couple things, so manual testing is very feasible. But as the project grows and gets more complex, manual testing becomes increasingly unwieldy, and then you get to a point where you think, we're too far into this to add automated testing now.

But the truth is you can start at any point. It's never too late to start proactively doing things that will benefit your site.

What prevents people from getting started?

Usually the thing that stymies people is that they're not set up for automated testing: they don't have a continuous integration environment or a nice testing environment to run the tests on. Or maybe they've neglected it for so long that the regular tests don't work anymore; they write their first test and they have all these other problems because they've let things languish, so they give up.

What is continuous integration, you ask? It means every time you do a change and you push it out, it attempts to integrate it in with the whole project. It will deploy it to a server, it will compile the code if necessary, it will run code standards and automated tests and so on. When you have that stuff all set up to run automatically, you just make the code, push it to your version control, and forget about it. If something goes south, it'll send you an email saying this didn't pass. Otherwise, you don't have to think about it again.

How much of your code should be covered by automated testing?

You kind of want to be in that 95% range, although it's true that you can have parts that aren't easily testable. You can cover a lot of code, but you might still be missing use cases. Maybe you test taxes, and you test discounts, but you don't test taxes and discounts together. So technically you have full code coverage, but you're not using them in combination. So code coverage is a nice metric, but it doesn't tell the whole story.

TLDR: Automated testing is like flossing. You should really do it.

More from Acro Media Chat with us

If you'd like to talk about adding automated testing to your Drupal Commerce website, or if you just want to to discuss how Drupal Commerce fits into your ecommerce solution, give us a shout. We're happy to chat.

BEE makes it easy to quickly implement all kinds of booking & reservation use cases. We've created a new video that walks you through setting up an event calendar displaying BEE reservations.

Once upon a time, we wrote an article about how to render fields on their own in Drupal 7, which was really handy because Drupal 7 wasn't always intuitive. It's common to want to display a field outside of the context of its main entity page, like showing author information in a sidebar block or in a panel, but you had to just know which functions to use. Drupal 8 has come along since then using 'grown up' things like objects and methods, which actually makes the job a little easier. So now we have this:

The short answer $node->field_my_thing->view();Quick reference

I'll cover these in detail below, but here are the things you might want to be doing:

  1. Render a field as if it were on the node/entity page (e.g. with the markup from the normal formatter and full field template)

Drupal 7: field_view_field(), optionally passing a view mode string, or formatter settings array.
Drupal 8: $node->field_my_thing->view(), optionally passing a view mode string, or formatter settings array.

  1. Just get a single value out of a field (i.e. raw values, usually as originally inputted)

Drupal 7: field_get_items() and then retrieve the index you want from the array.
Drupal 8: $node->field_my_thing->get(0)->value, passing just the index you want to get(). Properties other than 'value' may be available.

  1. Render a single value as if it were on the node/entity page (e.g. with the normal formatter's markup, but not all the wrappers that Drupal's field templates give you)

Drupal 7: field_view_value(), optionally passing a view mode string, or formatter settings array, but always passing the actual items array.
Drupal 8: $node->field_my_thing->get(0)->view(), passing just the index you want to get() and optionally passing a view mode string, or formatter settings array to view().

The long answer

Now that entities like nodes are properly classed objects, and fields use the fancy new Typed Data API, we don't need to care about the underlying data structure for nodes or their fields, we can just call the method to perform the operation we want! You know, just what methods are supposed to be for! You want to view a field? Just call its 'view' method.

The output will be automatically sanitised and goes through the normal formatter for the field, as well as the regular field template. You can specify whether you want it rendered as if it were in a teaser or other view mode, by passing in the view mode string, just as we did with field_view_field(). (Or you might have used something like $node->field_my_thing['und'][0]['value'] - in which case, go back and read our article for Drupal 7!)

$node->field_my_thing->view('teaser');

Or even override the formatter to be used altogether (which is handy if the field would normally be hidden in any view mode):

$node->field_my_thing->view([ 'type' => 'image', 'label' => 'hidden', 'settings' => array( 'image_style' => 'larger_thumbnail', 'image_link' => 'content', ), ]);

This does assume that your field ('field_my_thing') in my examples does at least exist on your node (even if it's empty). You may want to wrap the whole code in a try/catch block, just in case it might not.

For bonus points, you could load up the normal formatter settings, and tweak them:

use Drupal\Core\Entity\Entity\EntityViewDisplay; // If you have the entity/node you want, use collectRenderDisplay() as it may // already be statically cached, plus it goes through various alter hooks. $display_options = EntityViewDisplay::collectRenderDisplay($node, 'teaser') ->getComponent('field_images'); // Otherwise - or if you intentionally want to re-use the settings from another // unrelated entity type, bundle or display mode - just load the display config. $display_options = EntityViewDisplay::load('pagaraph.media_pod.teaser') ->getComponent('field_images'); // Then tweak those display options and view the field. $display_options['settings']['image_style'] = 'even_bigger_thumbnail'; $node->field_my_thing->view($display_options);

This all assumes you've at least loaded your node, or other entity. (It works with any content entity, like terms, paragraphs, etc!) You'd probably be putting the result of the view() method (which will be a render array) into a variable to be used in a twig template via a preprocess hook. Or maybe you're just adding it into an existing render array, like a custom block plugin. (Either way, you probably shouldn't then be rendering it into a string yourself, let Drupal do that for you.)

You can even just view a single item within a multi-value field like this, here using an 'if' condition to be a bit more graceful than a try/catch. This is the equivalent of using field_view_value() from Drupal 7, so also skips Drupal's full field template, though includes markup produced by the field's formatter:

// View the third value, as long as there is one. if ($third = $node->field_my_thing->get(2)) { $output = $third->view(); } else { $output = []; }

That helps you see how you might get a single value too, with the get() method, though note that it still returns a classed object. To just get a raw value, without any wrapping markup or value processing/sanitisation, you might want to use something like this, instead of Drupal 7's field_get_items() :

$text = $node->field_my_thing->get(0)->value; // If the field is just a single-value field, you can omit the get() part. $value = $node->field_single_thing->value; // Some types of field use different properties. $url = $node->field_my_link->uri; // You can use getValue() to get all the properties (e.g. text value + format). $text_values = $node->field_formatted_text->getValue(); // References can be chained! $referenced_title = $node->field_my_reference->entity->field_other_thing->value;

In Drupal 7, there was also confusion around what to do for multilingual content. In Drupal 8, as long as you've got the translation you want first, all the methods I've discussed above will get you the appropriate values for your language. To get a specific translation, use:

if ($node->hasTranslation($candidate)) { $node = $node->getTranslation($langcode); } This Rocks.

You get to use proper modern methods on a proper typed data API. Sanitisation is done for you. You don't need to care what the underlying data structure is. And you don't need to remember some magic global procedural functions, because the methods are obvious, right there on the thing you want to use them on (the field item class). If the Drupal 7 version of this was brilliant, that makes the Drupal 8 version of this even better. Brilliant-er?

CCBot/2.0 (http://commoncrawl.org/faq/)

آخرین ارسال ها

محتواهای محبوب

درباره ما

Author
اینجا دروپال یعنی همه چیز. در مورد دروپال صحبت میکنیم. ماژول هامون رو به اشتراک میزاریم در مورد قالب دروپال ، فروشگاه دروپال، دروپال فارسی و تاریخ شمسی دروپال صحبت میکنیم و هرچیزی که در مورد طراحی سایت با دروپال میدونیم به هم انتقال میدیم. دروپالیون یک سایت شخصی نیست. ما دست همه کسانی که برای پیشرفت دروپال تلاش میکنند رو میفشاریم و با آغوش باز اونها رو در این سایت میپذیریم.

تماس با ما

با ما تماس بگیرید.

logo-samandehi