Event Organizers: Camp Debrief: Colorado WebCamp 2022

This is the second in a series of “Camp Debriefs” by the Drupal Event Organizer Working Group. In this debrief, Fei Lauren (feilauren) interviews Matthew Saunders (MatthewS)  about DrupalCamp Colorado 2022. If you would like your Drupal event to be featured in a Camp Debrief, contact the EOWG.

How did you learn about Drupal, and what drew you in?

Matthew had already established a career in tech when he stumbled into the Drupal community over 15 years ago. He was working in the non-profit sector building custom PHP and MySQL solutions. In an effort to branch out and consider the potential for new tooling, he was asked to organize a Think Tank involving a variety of tech professionals and areas of expertise. 

“We all just got together to talk about where this crazy thing The Internet was headed.”

Enter Drupal, stage left.

“I sat there sort of in amazement as they went through Drupal, 4.5.1 or 4.5.2… I thought to myself looking at this, wow, I never have to write another authentication system ever again!”

Not long after that, Matthew was attending the first DrupalCon in Barcelona. He was able to meet and share ideas with Dries, Moshe and some of the other folks who are known as the “Elder Statesmen”, so to speak. Drupal has been a hub of his career ever since.

What are you most proud of? 

Two things. Well, technically three. 

 Matthew was on the team that moved Examiner.com from ColdFusion to the soon to be released Drupal 7. At the time, it was the largest Drupal 7 migration in the history of Drupal. 

“I think we ended up writing about 18% of Drupal 7”

Matthew also sat on the Drupal Association Board of Directors for about two and a half years. But there is another important accomplishment in his career that he is also extremely proud of - the reason we are all here, reading this blog - his work in establishing DrupalCamp Colorado.

How was DrupalCamp Colorado born? 

Originally, it was never meant to be such a large event. It wasn’t even meant to be a web camp. It was a meetup hosted by an agency in Boulder. 

“It was a bunch of nerds sitting around a table showing each other things that they'd worked on and you know, having a couple of cold adult beverages and eating pizza.”

Four or five months later, the casual meetup turned into a very small web camp with only about 20 attendees. The camp grew from there until 2011. DrupalCamp Colorado’s organizers were also part of the organizing committee for DrupalCon, so when Denver was announced as the host to DrupalCon 2012, a lot of people tuned in. That year there were about 600 attendees at DrupalCamp Colorado. The following year, DrupalCon Colorado had about 1400 - and it was the last community-driven DrupalCon. Professional consultants have been involved ever since.
 
Building momentum like that is no small feat, how did it happen so quickly?

20 attendees to 600 is no small feat, but it didn’t happen overnight. 

“It was 6 or 7 years to get up to that point. And fortunately… many of us were working for Examiner at that point, so we had some pretty remarkable resources behind us. And a whole lot of support in people like our CTO, Michael Meyers.” 

Matthew also mentions how many organizers were putting in full time hours in order to hit deadlines successfully. I think an important takeaway for new organizers is that a successful event with 20 attendees is still a successful event.

What would you say are the most impactful things that we, as newer organizers, could be doing to help breathe life into our initiatives, into our camps, into our events?

“A big part of it is early planning.”

Especially when working to establish a new camp, many volunteers and attendees will likely learn about it by word of mouth. Leaving lots of time for people to plan and promote is really important. 

Finding a venue is also challenging, but again, working with potential venues is much easier to do when there is a lot of lead time. You are much more likely to get something inexpensively or even free if you give the venue lots of time to plan. Try reaching out to a charter school, Matthew suggests, as most of what they do is already community driven. But schools in general have fewer rooms occupied in the summer, and all the equipment a camp might need is already in place. 

What are some of the things that were initially a struggle, but are now not an issue at all? 

There are so many resources that exist on drupal.org - use a recipe!

Hearing this answer, it certainly doesn’t seem like rocket science. But just like following a recipe in a kitchen, the first time can still be challenging – that’s okay. A recipe still gives you a significant boost. Don’t try and reinvent wheels if you don’t have to!  
Once you get used to following a recipe that works for your event, “you don't even have to think about it at the end of it. You've got a camp that is just gonna run itself because you've broken it up into bite size chunks”. 

Okay so, maybe it doesn’t really run itself but it’s difficult to argue the benefit of knowing the steps and making sure you have all the ingredients lined up in advance.

For you, what is the best part about organizing? 

Matthew offers two things. 

“We always have a really good party at the end, and it's sort of a it's sort of a release for all of the for all of the organizers” 

And the second is a bit more of a ubiquitous reply among organizers - “the camp is a way of giving back”. 

2022: The great hybrid challenge - tell us more about how this went.

Hopin,  Zoom, StreamYard – there are so many tools out there, what has worked for you?
“Don't try to do it with Zoom or something like that. Make sure that you're using a tool like Hopin”. 

Hopin is expensive at a glance, but there are things that can be done to bring that cost down. As of now, they sell annual subscriptions which can be quite costly. But you can pay monthly and pause your subscription. There may also be potential to collaborate with other Drupal web camps and events to lower the impact on a single event (as long as there is a single admin coordinating). 

Even if you do pay for an entire year (somewhere in the range of $1000), they also provide a lot of features out of the box - including the ability to offer virtual spaces for any of your potential sponsors. Such as any that might be willing to cover the cost of Hopin. 

Additionally, Hopin provides other features that really add up. A “ready made” structure for virtual events out of the box with automatic recordings for sessions means less work before and after the event. The friendly scheduling interface for users and presenters means everyone knows where they need to be while the event is running. Registrations are easier too, they even offer payment handling. 

If you have ever organized a camp or any large event, you know how much work it is. So this next piece of advice is important. Matthew warns, “Expect to have twice as much work. You're doing two events. We used Hopin, but we also had our physical venue.”. It’s twice as much work but you don’t have to schedule full days - they tried out half days it helped a bit, he reports. 

But is it worth it? I guess that depends on resources, but if the option is within reach it certainly seems so.

“We actually ended up with some amazing content last year and it's because our participants ranged from all over the world. We ended up with several people from India who presented. We ended up with lots of local people. We ended up with people from all over the United States, Canada, all over Europe.”

Attendee engagement. One of the most ubiquitous challenges of hybrid events. What can you share with us about how you have addressed this? 

When we talk about hybrid challenges, many of us might imagine trying to solve problems that help restore engagement to where it was previously. Matthew’s insights really illustrate how important it is to consider our definitions of “inclusiveness”.

“I would not have been able to attend. I can’t attend events. I am really glad you did this.” 
Resident of Alaska

With people pouring in from all over the world, it’s not just a matter of keeping the doors open for those who live in and around Colorado. Hybrid events provide an opportunity for inclusiveness that can’t otherwise exist. With 12 attendees who were in India including two speakers, the question Matthew and many other organizers seem to be asking is not should our events continue to be hybrid or remote. It’s how do we keep improving the hybrid model, and what other advantages exist?  
 

#! code: Drupal 9: Creating Ajax Dialogs

Ajax Dialogs in Drupal are a good way of presenting content to a user without them having to navigate away from the page they are looking at.

This is useful when presenting a list of items or a link to something like a terms and conditions page. Users can click a link and view the content as a dialog box.

Creating dialogs in Drupal is built into the platform and are powered through the jQuery UI dialog component.

Drupal provides a way to create the following types of dialogs.

  • Normal dialogs - The dialog shows on top of the content on the page. It is possible to show multiple dialogs on the page at the same time.
  • Modal dialogs - The dialog creates an overlay that disables other elements on the page. Only one modal dialog can be shown on the page at once.
  • Off-canvas dialogs - The dialog slides in from edge of the browser window. This is useful if you want to show lots of content and is also a better option for showing dialog boxes on mobile views.

There are a number of ways in which dialogs can be created, but there is very little documentation on the subject.

This article will cover how to create different types dialogs in Drupal and in a few different ways, including how content editors can easily add dialogs into content with little programming knowledge.

Creating Dialogs Using PHP Classes

Ajax dialogs are generated in Drupal using a number of PHP classes. The different classes are used to generate different types of dialog. First, let's look at generating a normal ajax dialog box.

Read more.

Evolving Web: Strength Through Adversity: Interview with Drupal Developer Ivan Doroshenko

Image removed.

The city of Lutsk in northwestern Ukraine has seen its fair share of upheaval and bloodshed over the course of its long history. Located near the borders of Poland and Belarus, it has been invaded and occupied by numerous outside forces over the centuries – most recently by Nazi Germany and the Soviet Union – before finally becoming part of an independent Ukrainian state in 1991.

Today, this city of roughly 217,000 has a different claim to fame – as the Drupal Capital of Ukraine, with numerous developers working in the city. And despite the war that has enveloped much of the country, Lutsk continues to thrive as a local hub for Drupal developers, bringing in important foreign capital for a country facing difficult times.

Image removed. DevBranch team joined the initiative called "The Marathon in New York No One Wants to Run". More about the marathon here

Between seven and ten Drupal-based development companies are situated in Lutsk at present. Among the most prominent and prolific is DevBranch, which has 49 employees, mostly Drupal developers. In addition to serving clients directly, DevBranch partners with agencies from across Europe and North America – with Evolving Web being among their key partners since 2019.

Image removed. DevBranch team

Ivan Doroshenko is among the DevBranch developers who work closely with Evolving Web. A graduate of Lutsk National Technical University with a master’s degree in automated management of technological processes, Ivan began working for DevBranch shortly after graduation as a Drupal developer and contributor and has been working for Evolving Web from his Lutsk base for three years.

“At this moment, we have a team of three DevBranch members working for Evolving Web,” says Ivan of the partnership.

“The partnership started before the war and has remained strong. Some of our fellow companies lost business due to clients being scared off by the war, but fortunately, that hasn’t been our situation.”

Image removed. DevBranch team in DrupalCamp London, 2020

Ivan notes that the “Drupal Capital of Ukraine” moniker his hometown possesses – a factoid that even the city’s Wikipedia page asserts – is indeed factually accurate.

Image removed. DevBranch running team won a team relay in Ivano-Frankivsk Half-Marathon

“It started as a local meme among our DevBranch team in the late 2010s. Then we actually counted the number of firms located here and realized it wasn’t just a meme but a statistical fact, so we started promoting it.” 

An Uneasy “Normal”

Being situated in the far western region of Ukraine, Lutsk has thus far been minimally impacted by the Russian invasion, although the city did suffer two Russian missile strikes in March 2022, one of which killed two Ukrainian military members and wounded six others when an air base in the city was attacked.

Ivan says life during the conflict was extremely stressful in the early days, but that life is now mostly normal.

“During the first days of the war, it was very hard to work. I couldn’t focus. But after a couple of weeks, things got back to “normal”. In general, the city was affected, with many people moving to Poland and elsewhere in Europe during the early days. But these days people are returning home and in general, things are back to normal. Restaurants and cafés are open again, and most local businesses operate normally.”

Image removed. Just a photo at the office in ammunition

Normal, however, doesn’t mean detached from the conflict that continues to inflict suffering on thousands of Ivan’s compatriots to the east and southeast. Many local businesses are prioritizing supporting the war effort, either through volunteer work or charitable donations. Meanwhile, children are required to carry emergency supplies in their school backpacks should they be caught in an air raid. 

Air raid sirens are also a regular reminder of the war embroiling the country, although Ivan says he and his colleagues barely notice them anymore.

Work continues to keep Ivan busy in these calm but uncertain times. Current projects on his plate include work for the City of Hamilton, Sollio Cooperative Group, York University and McGill University. With the normal rhythms of the year disrupted for so many Ukrainians, he worked straight through the summer, only recently taking a short break.

“In Ukraine, there was no spring and no summer this year,” he explains. “In August I realized summer was almost over so I took time off to go to the lake and tried kayaking for the first time in months.”

The Road Ahead

While life may have returned to more-or-less normal for Ivan and his fellow Lutsk-based developers, he is likewise aware that things could change for the worse at any time and that things are bound to get more difficult as fall turns to winter.

“I am preparing myself for the worst,” he says.

“Winter is going to be hard. Things are going to be complicated. Our energy supply has been undermined by direct Russian attacks on critical infrastructure. Our economy has declined and will continue to drop. And of course, much of the country is now occupied, whole areas have been destroyed. In the end, I’m confident that we’ll get our territories back but it’s not going to be easy.”

Ivan expresses gratitude to Evolving Web and other DevBranch partners from overseas who have not only stuck with their Ukrainian collaborators but also contributed to the Ukrainian cause in a number of important ways.

“Our partners have been very understanding from the beginning. They understood that we wouldn’t always be available for meetings, due to all of us being involved in local volunteer efforts. Our clients have not only stayed with us during the war, but many have donated money to defence funds that support military units. Our partners never gave up on us, and for that I’m grateful.”

Image removed. Volunteer activities Image removed. Volunteer activities

For those eager to help the Ukrainian cause, Ivan says several good charities are out there. The best known of these is the Come Back Alive foundation, which was founded back in 2014 when Russia first invaded Crimea and war erupted in the Donbas region. Through international donations, Come Back Alive purchases equipment that helps save military lives, including thermal imaging optics, quadcopters, cars, and security and intelligence systems.

Other organizations doing similar work in Ukraine include the Serhiy Prytula charity foundation, which, like Come Back Alive, directly funds military equipment such as communication and optical devices, drones, UAVs, transport and tactical medicine. Another group recommended by Ivan is Hospitallers, a volunteer organization of paramedics also founded back in 2014 that provides invaluable frontline medical support.

“Any contribution helps,” says Ivan. “Even your support on social media helps, as people see this. It’s been deeply gratifying to see the support from Evolving Web and elsewhere.”

Image removed. Meeting with Alex in Kyiv

+ more awesome articles by Evolving Web

DevCollaborative: 5 Biggest Cost Drivers of Nonprofit Website Projects

Folks often ask us, “What are the things that can make website redesign and rebuild projects more expensive?” The quick answer: things that take up a lot of time. The longer answer: over many years and hundreds of projects, we can tell you exactly what the biggest cost drivers usually are. Here are our top 5 hits: Design & Development Stakeholder Wrangling, Internal Capacity, & Timeline Content Migration CMS: Drupal vs WordPress Transactional vs Consultative Partnerships There are ways to save time and cost in some of these areas; others can’t be cut. Let’s dive in and explore each a bit more.

ComputerMinds.co.uk: Allow editors to use HTML attributes by default

Image removed.

Drupal provides an excellent sanitisation system to filter the HTML content that editors might create. Think of it like a series of traffic cops that filter different vehicles into different lanes. Some content is allowed through to its destination, some has to be transformed along the way, and some is simply blocked from displaying. Administrators can use the 'Limit allowed HTML tags and correct faulty HTML' option to configure which HTML elements and attributes they can use. This helps protect a site against nefarious HTML - whether it might be malicious or just ugly. Under Drupal 9, editors can't use attributes on their HTML unless an admin explicitly allows them to. But on Drupal 7 sites, it was the opposite way around: attributes were allowed by default, until an admin restricted them. So Drupal 9 might have tightened up this security measure, but that can be a problem when you're migrating a site from Drupal 7 to 9.

We at ComputerMinds have spent a huge amount of 2022 on Drupal 9 upgrade projects. Our content migrations are always tailored to the specific needs of our clients going forward, but also looking back on how they used Drupal to write their content. In many cases, editors were in the habit of liberally spreading HTML attributes around their content across all sorts of different elements. Sometimes this was to achieve specific designs, sometimes it wasn't really intended, and sometimes it was to embed specific forms of external content. (YouTube iframes, I'm looking at you!) Here are three examples of HTML elements (tags), each with attributes that Drupal 9 would commonly strip out, breaking their intended functionality and/or appearance:

Contact us content here...

When editors expect to be able to do this, and we trust them sufficiently, I think it's fair to allow them to continue using HTML attributes on their shiny new Drupal 9 sites in the same way that they did on their legacy Drupal 7 sites. We trusted our editors sufficiently before, so why not now? I suggest keeping Drupal 9's default HTML filtering behaviour for new projects, to set expectations that customising HTML attributes isn't recommended. But when editors are used to doing so - and their content relies on that ability - a solution is needed. We still want to restrict which HTML elements editors can use, because we don't want them adding and tags at least. But we don't mind them setting various attributes on elements. Auditing their content to see which attributes have been used on which elements isn't really viable, as that could involve parsing thousands (maybe even millions?) of fields of HTML.

The solution I chose was to build a plugin for Drupal 9 that simply copies its ordinary 'Limit allowed HTML tags and correct faulty HTML' filter, to allow most attributes by default, instead of blocking them by default. It's as simple as adding this single file to a custom module:

<?php namespace Drupal\MYMODULE\Plugin\Filter; use Drupal\filter\Plugin\Filter\FilterHtml; /** * Provides a filter to limit allowed HTML tags. * * The attributes in the annotation show examples of allowing all attributes * by only having the attribute name, or allowing a fixed list of values, or * allowing a value with a wildcard prefix. * * @Filter( * id = "MYMODULE_filter_html_allowing_most_attributes", * title = @Translation("Limit allowed HTML tags, allowing most attributes, and correct faulty HTML"), * description = @Translation("This replicates the legacy behaviour from Drupal 7 that allowed use of attributes that weren't internally explicitly limited."), * type = Drupal\filter\Plugin\FilterInterface::TYPE_HTML_RESTRICTOR, * settings = { * "allowed_html" = "
    1. ", * "filter_html_help" = TRUE, * "filter_html_nofollow" = FALSE * }, * weight = -10 * ) */ class FilterHtmlAllowingMostAttributes extends FilterHtml { /** * {@inheritDoc} */ protected function findAllowedValue(array $allowed, $name) { if (isset($allowed['exact'][$name])) { return $allowed['exact'][$name]; } // Handle prefix (wildcard) matches. foreach ($allowed['prefix'] as $prefix => $value) { if (strpos($name, $prefix) === 0) { return $value; } } // When an attribute has not been specifically allowed or disallowed, allow // it. return TRUE; } }

    This should be placed in a src/Plugin/filter directory within a custom module, and 'MYMODULE' in the code should be replaced with your module machine name. Then simply configure your text formats that use the 'Limit allowed HTML tags and correct faulty HTML' filter to use this 'Limit allowed HTML tags, allowing most attributes, and correct faulty HTML' one instead.

    To explain this code: the class is just an extension of Drupal core's 'Limit allowed HTML tags and correct faulty HTML' filter class (FilterHtml). It overrides just the part that blocks attributes by default, to instead allow them by default. It still filters elements, and will filter attributes on any element that has an explicit list of attributes to allow. Even with this, Drupal is still smart enough to block style and on* attributes on all elements by default. So your editors can rest easy that their content from Drupal 7 would still come out the same in Drupal 9, without allowing the most obvious security or design problems through.

    Normally I like to contribute code back to the community as modules on drupal.org, but as this one is just a single file, and means overriding security defaults, I'm just posting it here as a more cautious option. Still, feel free to use it, as long as you understand what you're doing! Hopefully, I've helped you do exactly that - and now your editors can enjoy their content on their sparkly new Drupal 9 site.

    If you'd like help with bespoke needs for your Drupal migration project, get in touch with us.

    Finalist Blog: Drupal techtalk 20 October

    Last Thursday it was finally time for the first meeting as part of the new series Drupal techtalks. In these meetings, organized by Swis, Synetic, React Online and Finalist, developers will give presentations on a wide variety of technical topics. Although the subject has a wide variation, the presentation always has to do with Drupal. The location for the first four editions is at the offices of the organizing parties. After that, participants can propose a location themselves. The first tech talk took place at Finalist in Maarssen. The presentations In Maarssen three speakers…

    Salsa Digital Drupal-Related Articles: DrupalSouth 2022 keynote — managing a talented team

    Image removed.How to lead talented technical teams Sarah-Jane Peterschlingmann delivered the second keynote for DrupalSouth 2022 looking at how to lead (and keep) talented resources. View the presentation or read our summary below.  The landscape Sarah-Jane started off by talking about the skills shortage in the Drupal community and the current fight for talent in general. She presented some research and stats, including: Skills shortage across all industries was the number one issue facing Australian business at the moment (Director Sentiment Index, 17 October 2022) Globally, it’s a big challenge in the tech industry, with Korn Ferry estimating >85million unfilled jobs by 2030 The tech skills shortage has been exacerbated by COVID-19’s push on digital transformation.

    Salsa Digital Drupal-Related Articles: DrupalSouth 2022 keynote — hackathons and open source

    Image removed.Hackathons and open source: The ideal combination for driving innovation Zaidul Alam delivered the first keynote for DrupalSouth 2022 looking at hackathons and open source. View the presentation or read our summary.      About Zaidul  Zaidul started off with a bit of information about himself. Zaidul is the current board director and national data lead of GovHack Australia. He also works at the South Australian Department of Premier and Cabinet and has won many awards for his projects.  About GovHack GovHack is the largest open data hackathon in the southern hemisphere. It’s also known as ‘The festival of ideas’. GovHack started in 2009 but was ‘restarted’ in 2012 by Pia Andrews and has been consistently running since then.