Development News

WPTavern: WP Engine Acquires StudioPress

Wordpress Planet - Thu, 06/28/2018 - 08:11

StudioPress, founded by Brian Gardner in 2007, has been acquired by managed WordPress hosting company WP Engine, for an undisclosed amount.

In 2007, Gardner created the Revolution theme which took the WordPress world by storm. According to some people, it ignited the WordPress Premium theme market.

Revolution Church Theme

In the midst of a GPL debate regarding themes in 2008, Gardner decided to license the Revolution theme as 100% GPL. In 2009, Gardner rebranded Revolution to StudioPress due to legal reasons.

Early in 2010, StudioPress released the Genesis Framework. This framework would go on to power thousands of themes and be the cornerstone of StudioPress’ theme business. In 2010, StudioPress was merged into Copyblogger Media LLC, which eventually went on to create the Rainmaker platform.

Fast forward to 2018 and StudioPress has been acquired by WP Engine, a managed WordPress hosting company founded in 2010 that earlier this year, received $250M in venture capital funding from Silver Lake. 

According to Jason Cohen, founder of WP Engine, this is the largest acquisition in the company’s history.

“In all, our contributions to the WordPress community in time, money, writing, coding and thought leadership totaled more than $1.7 million in 2017 and we’re already doing even more this year,” he said.

“As WP Engine continues to grow and scale, the way we give back to the WordPress community must grow and scale also, which was one of the deciding factors behind our acquisition of StudioPress—our largest acquisition in WP Engine’s history.”

The company plans to heavily invest in the Genesis Framework community and ecosystem by hiring people to work on different aspects of the framework. Support will receive a boost as well as the ecosystem surrounding StudioPress’ products.

With Gutenberg on the horizon, Cohen says the Genesis Framework will be a shining example of what’s possible with WordPress’ new editor.

“There’s been plenty of concern about how Gutenberg will affect existing plugins and themes, so Genesis can serve as an example for how Gutenberg can work brilliantly,” Cohen said. 

“This directly advances the goals of WordPress Core. This precedent doesn’t stop with Gutenberg, either. Gutenberg is the transformation of today—there will be more tomorrow. While the topic of the day will change, the idea of supporting Core through themes and theme frameworks that support those efforts is an asset for the wider WordPress community.”

Gardner will stay on board and be part of StudioPress’ leadership team at WP Engine with an emphasis on product development and community. Nathan Rice along with the support team will transition to WP Engine with Rice continuing to serve as the lead developer of Genesis.

Gardner admits that the acquisition is bittersweet, but that it’s a founding moment in the company’s history.

“As my new colleague, Jason Cohen, the founder of WP Engine often says, ‘There are many founding moments in the history of a company.’ This is one of those moments and I know it’s time for StudioPress to take the next step—and WP Engine is the right partner to take it with.”

StudioPress customers can expect better support, more themes to choose from, and little to no disruption of service. 

ADCI Solutions: ADCI Solutions Recognized as a Top Web Developer in Russia!

Main Drupal Feed - Thu, 06/28/2018 - 07:08

Our Drupal team was featured in a press release highlighting leading Eastern Europe B2B companies on Clutch!

We are proud to deliver projects for our clients and keep working hard.

Learn more here

myDropWizard.com: CiviCRM secrets for Drupalers: Fundraising Campaigns

Main Drupal Feed - Thu, 06/28/2018 - 04:38

We're Drupalers who only recently started digging deep into CiviCRM and we're finding some really cool things! This series of videos is meant to share those secrets with other Drupalers, in case they come across a project that could use them. :-)

In the screencast below, I'll show how how you can set-up a new Campaign in Roundearth's CiviCRM! The thing about campaigns is that until there is activity, there isn't much to see, but we have to start somewhere! So, here we setup a campaign.

Watch the screencast to see how to use a Campaign with Roundearth:

Video of CiviCRM secrets for Drupalers: Fundraising Campaigns

Some highlights from the video:

  • Set-up a new Campaign Type
  • Set-up a new Campaign
  • Send a Mailing attached to a Campaign!

Please leave a comment below!

WPTavern: Free “JavaScript for WordPress Conference” to Stream Live Friday, June 29

Wordpress Planet - Thu, 06/28/2018 - 02:49
JavaScript for WordPress conference

Zac Gordon is hosting a “JavaScript for WordPress Conference” with two tracks on Friday, June 29, from 9:30 AM – 5:30 PM EDT. The free conference, sponsored by 10up and WP Buffs, includes a full day of online talks from JavaScript professionals who work in the WordPress ecosystem.

Gordon will be streaming the talks live via Crowdcast. Approximately 1,300 seats have been reserved so far, a number that rivals most WordCamps. Unlike WordCamps, however, the entire schedule is focused around developer education, featuring more technical talks that are often missing from traditional WordPress events.

“I figured there was an interest in more JS-specific WordPress content and, given my courses and getting to know some people working a lot with JavaScript, I figured I would give it a shot,” Gordon said.

Gordon has been working for the past several years as a freelance educator after his former employer, Treehouse, dropped support for WordPress education. He said his first project, the JavaScript for WordPress Master Course, was a huge undertaking. He is not offering that course anymore but is instead focusing on smaller, more targeted courses on his site javascriptforwp.com.

“Most of my courses this year will be Gutenberg related (have one now and a theme course launching next week, followed by an Advanced one after that),” Gordon said. He has also done courses at Udemy, Frontend Master, WP Sessions, WP101, and some consulting with Udacity.

“I’m still learning the right price points and packaging and size,” Gordon said. “A few companies have gotten group accounts for their teams which is really positive and encouraging for me.”

Gordon took a deep dive into JavaScript education after Matt Mullenweg issued a challenge to “Learn JavaScript Deeply” during his 2015 State of the Word address. He said so far the courses he offers have been going well and the community seems to have embraced the challenge.

“The funny thing about Learning JavaScript Deeply is that people will still be able to build things in Gutenberg and beyond without really knowing it deeply,” Gordon said. “However most in the community have already picked up React or delved deeper into Vanilla JavaScript, and those who haven’t I believe certainly will be in the coming months and years.

“Now with React in Core and the rebuilding of many parts of the admin with JS, we will have more real practical reasons to heed Matt’s call than we did before.”

If the “JavaScript for WordPress Conference” goes well, Gordon said he hopes to make it an annual event. He is also considering doing a free day of workshops. All the talks given during the conference on Friday will be recorded and Gordon plans to drip them out over the coming months on his YouTube channel.

WPTavern: Gutenberg 3.1 Introduces Tips Interface to Guide New Users

Wordpress Planet - Wed, 06/27/2018 - 19:44

Gutenberg 3.1 added a tips interface that supports and guides new users who are learning to navigate the editor’s blocks and settings. The tips appear when a new user opens Gutenberg, highlighting useful items on the page.

Although the tips may seem cluttered and intrusive to users who already know what they are doing, they are a necessary evil for introducing the UI to new users. Gutenberg is not yet intuitive enough to be able to stand on its own without explanation inside the interface.

10up recently conducted Gutenberg usability tests that unearthed some startling realities about how new users interact with the new editor. The tests were done on previous versions of the plugin (2.9.2) with users who frequently create content using the classic WordPress editor. 10up asked testers, who have had no training on Gutenberg, to write a news-style blog post.

One of the most surprising results was that participants struggled with the simple task of adding an image to a post.

“Although the interface is clean, a lack of focused attention or hierarchy on the page became apparent,” 10up Experience Designer Sarah James said. “Participants struggled to complete tasks like adding an image that did not have a clearly exposed and labeled element like the title and paragraph fields. Heatmap tracking of the backend captured 734 unique clicks in the new post interface and only 40 of these clicks were on actual clickable elements. This suggests a struggle to find basic interactive elements, such as image blocks.”

Participants also had a difficult time finding and inserting additional block types – several testers overlooked the “+” symbol that triggers interface for adding a new block.

Gutenberg 3.0 and 3.1 have already improved on these pain points with changes that highlight common tasks. The 3.0 release redesigned the inserter, ditching tabs for collapsible panels. This makes it more friendly for hunting among blocks. Version 3.1 includes a new design of the sibling inserter (the “+” symbol that appears to allow user to insert blocks between other blocks).

In addition to improving usability issues with the inserter, Gutenberg 3.1 fixes some of the mechanics of previewing and saving posts. Users can now preview changes to a published post without updating the post. The editor was also updated to trigger autosave as a standard save for a draft by the user currently authoring the post.

HTML blocks that have been converted into shared blocks now show in preview mode, which makes it easier for users to see what they do and insert them visually. The code will only show if the user wants to edit the block.

For a full list of the changes in 3.1, check out the release post on make.wordpress.org.

myDropWizard.com: Drupal 6 security update for Generate Password!

Main Drupal Feed - Wed, 06/27/2018 - 19:06

As you may know, Drupal 6 has reached End-of-Life (EOL) which means the Drupal Security Team is no longer doing Security Advisories or working on security patches for Drupal 6 core or contrib modules - but the Drupal 6 LTS vendors are and we're one of them!

Today, there is a Less Critical security release for the Generate Password module to fix an Insecure Randomness vulnerability.

The Generate Password modules allows administrators to create a new user account without setting a password, allowing the system to automatically generate one. The module doesn't use a strong source of randomness, creating weak and predictable passwords.

See the security advisory for Drupal 7 for more information.

Here you can download the Drupal 6 patch.

If you have a Drupal 6 site using the Generate Password module, we recommend you update immediately! We have already deployed the patch for all of our Drupal 6 Long-Term Support clients. :-)

If you'd like all your Drupal 6 modules to receive security updates and have the fixes deployed the same day they're released, please check out our D6LTS plans.

Note: if you use the myDropWizard module (totally free!), you'll be alerted to these and any future security updates, and will be able to use drush to install them (even though they won't necessarily have a release on Drupal.org).

Lullabot: The Hidden Costs of Decoupling

Main Drupal Feed - Wed, 06/27/2018 - 19:00

Note: This article was originally published on August 23, 2017. Following DrupalCon Nashville, we are republishing some of our key articles on decoupled or "headless" Drupal as the community as a whole continues to explore this approach further. Comments from the original will appear unmodified.

Decoupled Drupal has been well understood at a technical level for many years now. While the implementation details vary, most Drupal teams can handle working on decoupled projects. However, we’ve heard the following from many of our clients:

  1. We want a decoupled site. Why is this web project so expensive compared to sites I worked on in the past?
  2. Why do our decoupled projects seem so unpredictable?
  3. If we decide to invest in decoupled technologies, what can we expect in return?

Let’s dive into these questions.

Why Can Decoupled Sites Cost More?

Before getting too much into the details of decoupled versus full-stack, I like to ask stakeholders:

“What does your website need to do today that it didn't 5 years ago?”

Often, the answer is quite a lot! Live video, authenticated traffic, multiple mobile apps, and additional advertising deals all add to more requirements, more code, and more complexity. In many cases, the costs that are unique to decoupling are quite small compared to the costs imposed by the real business requirements.

However, I have worked on some projects where the shift to a decoupled architecture is fundamentally a technology shift to enable future improvements, but the initial build is very similar to the existing site. In those cases, there are some very specific costs of decoupled architectures.

Decoupling means forgoing Drupal functionality

Many contributed modules provide the pre-built functionality we rely on for Drupal site builds. For example, the Quickedit module enables in-place editing of content. In a decoupled architecture, prepare to rewrite this functionality. Website preview (or even authenticated viewing of content) has to be built into every front-end, instead of using the features we get for free with Drupal. Need UI localization? Content translation? Get ready for some custom code. Drupal has solved a lot of problems over the course of its evolution, so you don’t have to—unless you decouple.

Decoupling is shorthand for Service Oriented Architectures

For many organizations, a decoupled website is their first foray into Service Oriented Architectures. Most full-stack Drupal sites are a single application, with constrained integration points. In contrast, a decoupled Drupal site is best conceived of as a “content service,” accessed by many disparate consumers.

I’ve found that the “black-boxing” of a decoupled Drupal site is a common stumbling block for organizations and a driver behind the increased costs of decoupling. To properly abstract a system requires up-front systems design and development that doesn’t always fit within the time and budget constraints of a web project. Instead, internal details end up being encoded into the APIs Drupal exposes, or visual design is reflected in data structures, making future upgrades and redesigns much more expensive. Writing good APIs is hard! To do it well, you need a team who is capable of handling the responsibility—and those developers are harder to find and cost more.

Scalable systems and network effects

Once your team dives into decoupling Drupal, they are going to want to build more than just a single Drupal site and a single JavaScript application. For example, lullabot.com actually consists of five systems in production:

  1. Drupal for content management
  2. A CouchDB application to serve content over an API
  3. A second CouchDB application to support internal content preview
  4. A React app for the site front-end
  5. Disqus for commenting

Compared to the sites our clients need, lullabot.com is a simple site. In other words, as you build, expect to be building a web of systems, and not just a “decoupled” website. It’s possible to have a consumer request Drupal content directly, especially in Drupal 8, but expect your tech teams to push for smaller “micro” services as they get used to decoupling.

Building and testing a network of systems requires a lot of focus and discipline. For example, I’ve worked with APIs that expose internal traces of exceptions instead of returning something usable to API consumers. Writing that error handling code on the service is important, but takes time! Is your team going to have the bandwidth to focus on building a robust API, or are they going to be focusing on the front-end features your stakeholders prioritize?

I’ve also seen decoupled systems end up requiring a ton of human intervention in day-to-day use. For example, I’ve worked with systems where not only is an API account created manually, but manual configuration is required on the API end to work properly. The API consumer is supposed to be abstracted from these details, but in the end, simple API calls are tightly coupled to the behind-the-scenes configuration. A manual set up might be OK for small numbers of clients, but try setting up 30 new clients at once, and a bottleneck forms around a few overworked developers.

Another common mistake is not to allow API consumers to test their integrations in “production.” Think about Amazon’s web services—even if your application is working from a QA instance, as far as Amazon is concerned there are only production API calls available. Forcing other teams to use your QA or sandbox instance means that they won’t be testing with production constraints, and they will have production-only bugs. It’s more difficult to think about clients creating test content in production—but if the API doesn't have a good way to support that (such as with multiple accounts), then you’re missing a key set of functionality.

It’s also important to think about error conditions in a self-serve context. Any error returned by an API must make clear if the error is due to an error in the API, or the request made of the API. Server-side errors should be wired up to reporting and monitoring by the API team. I worked with one team where client-side errors triggered alerts and SMS notifications. This stopped the client-side QA team from doing any testing where users entered bad data beyond very specific cases. If the API had been built to validate inbound requests (instead of passing untrusted data through its whole application), this wouldn't have been a problem.

There's a lot to think about when it comes to decoupled Drupal sites, but it’s the only way to build decoupled architectures that are scalable and lead to faster development. Otherwise, decoupling is going to be more expensive and slower, leaving your stakeholders unsatisfied.

Why are decoupled projects unpredictable?

When clients are struggling with decoupled projects, we’ve often found it’s not due to the technology at all. Instead, poor team structure and discipline lead to communication breakdowns that are compounded by decoupled architectures.

The team must be strong developers and testers

Building decoupled sites means teams have to be self-driving in terms of automated testing, documentation, and REST best practices. QA team members need to be familiar with testing outside of the browser if they are going to test APIs. If any of these components are missing, then sprints will start to become unpredictable. The riskiest scenario is where these best practices are known, but ignored due to stakeholders prioritizing “features.” Unlike one-off, full-stack architectures, there is little room to ignore these foundational techniques. If they’re ignored, expect the team to be more and more consumed by technical debt and hacking code instead of solving the actual difficult business problems of your project.

The organizational culture must prioritize reliable systems over human interactions

The real value in decoupled architectures comes not in the technology, but in the effects on how teams interact with each other. Ask yourself: when a new team wants to consume an API, where do they get their information? Is it primarily from project managers and lead developers, or documentation and code examples? Is your team focused on providing “exactly perfect” APIs for individual consumers, or a single reusable API? Are you beholden to a single knowledge holder?

This is often a struggle for teams, as it significantly redefines the role of project managers. Instead of knowing the who of different systems the organization provides, it refocuses on the what - documentation, SDKs, and examples. Contacting a person and scheduling a meeting becomes a last resort, not a first step. Remember, there’s no value in decoupling Drupal if you’ve just coupled yourself to a lead developer on another team.

Hosting complexity

One of the most common technological reasons driving a decoupled project is a desire to use Node.js, React, or other JavaScript technologies. Of course, this brings in an entire parallel stack of infrastructure that a team needs to support, including:

  • HTTP servers
  • Databases
  • Deployment scripts
  • Testing and automation tools
  • Caching and other performance tools
  • Monitoring
  • Local development for all of the above

On the Drupal side, we’ve seen many clients want to host with an application-specific host like Acquia or Pantheon, but neither of those support running JavaScript server-side. JavaScript-oriented hosts likewise don’t support PHP or Drupal well or at all. It can lead to some messy and fragile infrastructure setups.

All of this means that it’s very difficult for a team to estimate how long it will take to build out such an infrastructure, and maintenance after a launch can be unpredictable as well. Having strong DevOps expertise on hand (and not outsourced) is critical here.

Decoupled often means “use a bunch of new Node.js / JavaScript frameworks”

While server-side JavaScript seems to be settling down towards maturity nicely, the JavaScript ecosystem for building websites is reinventing itself every six months. React of today is not the same React of 18 months ago, especially when you start considering some of the tertiary libraries that fill in the gaps you need to make a real application. That’s fine, especially if your project is expected to take less than 6 months! However, if your timeline is closer to 12-18 months, it can be frustrating to stakeholders to see a rework of components they thought were “done,” simply because some library is no longer supported.

What’s important here is to remember that this instability isn't due to decoupling—it’s due to front-end architecture decisions. There’s nothing that stops a team from building a decoupled front-end in PHP with Twig, as another Drupal site, or anything else.

If we invest in Decoupled Drupal, what’s the payoff?

It’s not all doom and decoupled gloom. I’ve recommended and enjoyed working on decoupled projects in the past, and I continue to recommend them in discoveries with clients. Before you start decoupling, you need to know what your goals are.

A JavaScript front-end?

If your only goal is to decouple Drupal so you can build a completely JavaScript-driven website front-end, then simply doing the work will give you what you want. Infrastructure and JavaScript framework churns are most common stumbling blocks and not much else. If your team makes mistakes in the content API, it’s not like you have dozens of apps relying on it. Decouple and be happy!

Faster development?

To have faster site development in a decoupled context, a team needs to have enough developers so they can be experts in an area. Sure, the best JavaScript developers can work with PHP and Drupal but are they the most efficient at it? If your team is small and a set of “full-stack” developers, decoupling is going to add abstraction that slows everything down. I’ve found teams need to have at least 3 full-time developers to get efficiency improvements from decoupling. If your team is this size or larger, you can significantly reduce the time to launch new features, assuming everyone understands and follows best development practices.

Multichannel publishing?

Many teams I’ve worked with have approached decoupled Drupal, not so much to use fancy JavaScript tools, but to “push” the website front-end to be equal to all other apps consuming the same content. This is especially important when your CMS is driving not just a website and a single app, but multiple apps such as set-top TV boxes, game consoles, and even apps developed completely externally.

With full-stack Drupal, it’s easy to create and show content that is impossible to view on mobile or set-tops apps. By decoupling the Drupal front-end, and using the same APIs as every other app, it forces CMS teams to develop with an API-first mentality. It puts all consumers on an equal playing field, simplifying the development effort in adding a new app or platform. That, on its own, might be a win for your organization.

Scaling large teams?

Most large Drupal sites, even enterprise sites, have somewhere between 5-10 active developers at a time. What if your team has the budget to grow to 30 or 50 developers?

In that case, decoupled Drupal is almost the only solution to keep individuals working smoothly. However, decoupled Drupal isn’t enough. Your team will need to completely adopt an SOA approach to building software. Otherwise, you’ll end up paying developers to build a feature that takes them months instead of days.

Decoupling with your eyes open

The most successful decoupled projects are those where everyone is on board—developers, QA, editorial, and stakeholders. It’s the attitude towards decoupling that can really push teams to the next level of capability. Decoupling is a technical architecture that doesn't work well when the business isn't buying in as well. It’s worth thinking about your competitors too—because if they are tech companies, odds are they are already investing in their teams and systems to fully embrace decoupling.

Drupal Association blog: Where your money goes - DrupalCI tests

Main Drupal Feed - Wed, 06/27/2018 - 16:52

During this month's membership campaign, we mention that the average cost of a DrupalCI core test is $0.24-$0.36. Every time a contribution to the Drupal project needs to be tested, DrupalCI spins up a testbot on AWS to test those changes. DrupalCI runs about 5,000 core tests, and 13,000 contrib tests in an average month.  

The test runs on Drupal.org are paid for by our generous partners and members. This is just one of the services provided by the Drupal Association as part of our commitment to maintain Drupal.org so you can focus on Drupal development and community building.

You can help sustain the work of the Drupal Association by joining as a member. Thank you!

Want to hear more about the work of the team? Check out the Drupal.org panel session recording at DrupalCon Nashville.

Drupal blog: Working together to promote Drupal

Main Drupal Feed - Wed, 06/27/2018 - 15:57

This blog has been re-posted and edited with permission from Dries Buytaert's blog. Please leave your comments on the original post.

The Drupal community has done an amazing job organizing thousands of developers around the world. We've built collaboration tools and engineering processes to streamline how our community of developers work together to collectively build Drupal. This collaboration has led to amazing results. Today, more than 1 in 40 of the top one million websites use Drupal. It's inspiring to see how many organizations depend on Drupal to deliver their missions.

What is equally incredible is that historically, we haven't collaborated around the marketing of Drupal. Different organizations have marketed Drupal in their own way without central coordination or collaboration.

In my DrupalCon Nashville keynote, I shared that it's time to make a serious and focused effort to amplify Drupal success stories in the marketplace. Imagine what could happen if we enabled hundreds of marketers to collaborate on the promotion of Drupal, much like we have enabled thousands of developers to collaborate on the development of Drupal.

Accelerating Drupal adoption with business decision makers

To focus Drupal's marketing efforts, we launched the Promote Drupal Initiative. The goal of the Promote Drupal Initiative is to do what we do best: to work together to collectively grow Drupal. In this case, we want to collaborate to raise awareness with business and non-technical decision makers. We need to hone Drupal's strategic messaging, amplify success stories and public relation resources in the marketplace, provide agencies and community groups with sales and marketing tools, and improve the Drupal.org evaluator experience.

To make Promote Drupal sustainable, Rebecca Pilcher, Director of MarComm at the Drupal Association, will be leading the initiative. Rebecca will oversee volunteers with marketing and business skills that can help move these efforts forward.

Promote Drupal Fund: 75% to goal

At DrupalCon Nashville, we set a goal of fundraising $100,000 to support the Promote Drupal Initiative. These funds will help to secure staffing to backfill Rebecca's previous work (someone has to market DrupalCon!), produce critical marketing resources, and sponsor marketing sprints. The faster we reach this goal, the faster we can get to work.

I'm excited to announce that we have already reached 75% of our goal, thanks to many generous organizations and individuals around the world. I wanted to extend a big thank you to the following companies for contributing $1,000 or more to the Promote Drupal Initiative:

If you can, please help us reach our total goal of $100,000! By raising a final $25,000, we can build a program that will introduce Drupal to an emerging audience of business decision makers. Together, we can make a big impact on Drupal.

Acquia Developer Center Blog: Experience Express in Alicante: Analytics, Security, and Horizons at DrupalCamp Spain

Main Drupal Feed - Wed, 06/27/2018 - 15:10

Atop the Castle of Saint Barbara in Alicante, time sometimes seems to slow down, and words that once held grand meaning seem inadequate. I had a similar feeling both during and on the heels of DrupalCamp Spain, organized by the Spanish Drupal Association and held this year at Las Cigarreras cultural center in a seaside city that is one of the crown jewels of not only the Valencian Community but also of Spain.

Tags: acquia drupal planet

InternetDevels: InternetDevels at DrupalCamp Kyiv 2018: how it was

Main Drupal Feed - Wed, 06/27/2018 - 13:36

Dear reader, we would like to invite you to follow us. Where? On an exciting virtual journey to DrupalCamp Kyiv 2018! The 10th anniversary of drupalers’ meetup was amazing, and unusual moments added some spicy flavor to it. A mysterious bearded man in a pilot’s helmet, bikes on the speakers’ stage, the phantom of Drupal 9, and much more is coming right now. Ready? Follow us! ;)

Read more

HeroPress: The Power Of WordCamps

Wordpress Planet - Wed, 06/27/2018 - 13:04

WordCamps have a unique power to impact lives and careers. Without people and community, WordPress is simply software. But when you add in a large group of passionate people, people who are and are interested, everything changes. There’s excitement, encouragement, and education. Entrepreneurship can be a long and lonely road. Having a solid support community can make all the difference, and WordCamps can be a huge shot in the arm.

This week’s HeroPress replay is by Juan Hernando from Pontevedra, Spain. His essay details his journey from an unknown member of his local WordPress community to being a leader in that same community.

Becoming Known in the WordPress Community

The post The Power Of WordCamps appeared first on HeroPress.

Amazee Labs: Drupal Dev Days Lisbon 2018

Main Drupal Feed - Wed, 06/27/2018 - 10:55
Drupal Dev Days Lisbon 2018

Join us for Drupal Dev Days in Lisbon! 

Anli de Jager Wed, 06/27/2018 - 12:55

If Drupal development is your thing, then the upcoming Drupal Developer Days in Lisbon is the place to be.

The programme promises to keep the conversations going with code sprints, workshops, sessions and BoFs.

Amazee Labs is proud to be a Gold Sponsor and we look forward to catching up with you during, in-between and after the event.

See you there!

Dates: 2-6 July 2018

Venue: ISCTE-IUL University

If you want to know more about what's happening when, you can view the full programme here.

Drupal Europe: Drupal Europe: Social & Non-profit directions in the tech world.

Main Drupal Feed - Wed, 06/27/2018 - 09:58

Community. Sharing. Helping. This is the spirit of Drupal. These things bind us all together. Be a part of it by joining us during Drupal Europe between 10–14 September 2018 in Darmstadt, Germany.

photo credit Susanne Coates @flickr

The track dedicated to Social + Non-Profit will gather ambitious life stories about helping others and projects whose purpose is to invest everything in making the world a better place. You will have the opportunity to meet colleagues from your field of interest and join forces, learn how to use pre-configured Drupal distributions and get inspired by ambitious social impact projects built with Drupal. Also learn how Drupal can be used to ensure accountability, trustworthiness, honesty, and openness to every person who has invested time, money, and faith into a non-profit organization. Talk and share ideas, learn from each other, improve, innovate … and take a leap forward. There are a lot of things you will learn, no matter your technical skill level. From developers to people with a big heart, you will for sure find something that inspires you.

Interested in attending? Buy your ticket now at https://www.drupaleurope.org/tickets.

We are looking for submissions in various topics. Here are some ideas to share your experience on with the rest of the world.

  1. Every nonprofit organization must apply the 3 E’s: Economy, Efficiency, Effectiveness. Economy forces you to handle your project with low budgets, that is almost always the case with non-profit organizations. Efficiency is required also due to low resources available to most non-profit organizations. Effectiveness ensures you get the job done and complete your targets. How are you doing that? What tools and practices ensure this?
  2. We live in a world that is changing every day and technology is a big part of it. What are the new technologies you integrate in social projects? What do you need and what do you find on the market? How drupal is helping you achieve your goals?
  3. Transparency, accountability and full disclosure on operations is a must for all non-profit organizations. People will donate to and support campaigns only if they know exactly where the money goes and how are things handled. This way, they ensure their credibility in front of the world. How do you technically implement this?
  4. A lot of people talk about making the world a better place. But talking is not enough. You have to take action! How do you plan to do it? How do social activities raise the level of engagement in your community? How are people’s lives improved by your actions?
  5. Non-profit is done mainly from the heart. Volunteering is the key word. What are your life stories about helping others, inspirational first hand experiences? Why, what and how did you do it? What drives you? What are your goals?

We look forward to your submission sharing you experience with the other attendees.

See you in Darmstadt!

About industry tracks

As you’ve probably read in one of our previous blog posts, industry verticals are a new concept being introduced at Drupal Europe and replace the summits, which typically took place on Monday. At Drupal Europe these industry verticals are integrated with the rest of the conference — same location, same ticket and provide more opportunities to learn and exchange within the industry verticals throughout three days.

Now is the perfect time to buy your ticket for Drupal Europe. Session submission is only open for a few more days so please submit your sessions and encourage others who have great ideas.

Please help us to spread the word about this awesome conference. Our hashtag is #drupaleurope.

To recommend speakers or topics please get in touch at program@drupaleurope.org.

About the Drupal Europe Conference

Drupal is one of the leading open source technologies empowering digital solutions in the government space around the world.

Drupal Europe 2018 brings over 2,000 creators, innovators, and users of digital technologies from all over Europe and the rest of the world together for three days of intense and inspiring interaction.

Location & Dates

Drupal Europe will be held in Darmstadtium in Darmstadt, Germany — which has a direct connection to Frankfurt International Airport. Drupal Europe will take place 10–14 September 2018 with Drupal contribution opportunities every day. Keynotes, sessions, workshops and BoFs will be from Tuesday to Thursday.

heykarthikwithu: Sites Still Vulnerable to Drupalgeddon 2

Main Drupal Feed - Wed, 06/27/2018 - 07:25
Sites Still Vulnerable to Drupalgeddon 2

Attackers are exploiting Drupalgeddon 2 critical vulnerability in Drupal to compromise systems & secretly turn them into malicious cryptocurrency mining machines like cryptojacking malware, mine for Monero.
The only side effects a victim might notice is that their system is running slower or doing more work than usual.

heykarthikwithu Wednesday, 27 June 2018 - 12:55:39 IST

Drupal Europe: Drupal Europe 2018: Digital transformation and enterprise

Main Drupal Feed - Wed, 06/27/2018 - 07:04
Photo by Floriane Vita on UnsplashWhat is digital transformation?

It is 2018 and we are still talking about digital transformation? Wasn’t that finished and done ten or fifteen years ago? Not completely. Based on the study from Grand View Research the global digital transformation market size was valued at $177.27 billion in 2017 and is expected to reach $798.44 billion by 2025. It seems like we have just started and a business that does not join the movement will be left behind.

But what is digital transformation? We see it as the integration of digital technology into all areas of a business, resulting in fundamental changes to how businesses operate and how they deliver value to customers. This new approach to customer experience through digital experience is where a platform like Drupal fits in perfectly.

Digital transformation and Drupal

To build connected, omnichannel customer experiences, the technology must have a built in way to support communication between channels, such as physical locations, ecommerce, mobile applications, and social media. Drupal 8 provides APIs for creating solutions and is definitely not limited to being a website platform. With this approach, the ability to engage customers through multiple channels at the same time has become a reality. Enterprises like Bayer, who evaluated and chose Drupal as their preferred platform in November 2017, have embraced the idea of embarking on the digitalization journey with an open source software that has been around for almost two decades and has a clear vision to become the world’s leading omnichannel customer experience solution.

Europe’s biggest Drupal event in 2018

Drupal Europe will be the largest conference in Europe happening in 2018. Drupal Europe organizes the program and session selection process around industry verticals. These focus on usage of Drupal in real life scenarios, in specific target industries, alongside space to cover cutting edge technologies. Digital transformation has become an important movement and the Drupal community has recognized that and dedicated a track to it.

The track provides unique networking opportunities with — and expert advice by — award-winning vendors, with sessions and break out groups focusing on digital strategies, digital transformation, innovation management, hybrid systems and ambitious digital experiences, showcasing large-scale implementations of Drupal platforms and solutions integrating Drupal for global corporations.

Join us on September 10–14, 2018 in Darmstadt, Germany to learn first hand how Drupal enables digital transformation. You can register for the event at https://drupaleurope.org/tickets.

Present your vision at Drupal Europe

Drupal Europe is organized for the community by the community. This means everyone is invited to participate in the program and share their ideas with us. We are currently looking for submissions for sessions, panels, and workshops. To create an excellent submission, you should write a good abstract that helps track chairs and conference visitors to understand how and why you approach your topic, what will be the benefits and learnings gained by attending your session, and what is the expected experience level of the audience.

Main topics we are looking for:

  • Digital transformation with Drupal (case studies)
    What was your process of digital transformation, what were the business goals, what part Drupal plays in the solution and how did you measure success?
  • Enterprise products made for or made with Drupal

What can enterprise use to complement Drupal to support their requirements? Are there reusable solutions out there that can serve as enterprise platform?

  • Technical solutions provided with Drupal
    Having Drupal as the chosen technology for digitalization, what does Drupal offer out of the box or what did your organization develop on top of the framework?

You will speak in front of digital leaders like CTOs, CIOs and CMOs of businesses who will be there to evaluate Drupal on a strategic level. Sessions will attract people looking to gain tactical advice on how to tackle the challenges of digitalization of their organizations or their clients.

We are looking to provide value to our track’s attendees, to empower them with insights and give them information that will enable them to make better decisions when choosing Drupal as their platform of choice.

We are looking forward to great content submitted, please go to https://drupaleurope.org/speakers and propose a session at Drupal Europe before 30 June 2018.

Dries Buytaert: Working together to promote Drupal

Main Drupal Feed - Tue, 06/26/2018 - 22:28

The Drupal community has done an amazing job organizing thousands of developers around the world. We've built collaboration tools and engineering processes to streamline how our community of developers work together to collectively build Drupal.

This collaboration has led to amazing results. Today, more than 1 in 40 of the top one million websites use Drupal. It's inspiring to see how many organizations depend on Drupal to deliver their missions. What is equally incredible is that historically, we haven't collaborated around the marketing of Drupal. Different organizations have marketed Drupal in their own way.

In my DrupalCon Nashville keynote, I shared that it's time to make a serious and focused effort to amplify Drupal success stories in the marketplace. Imagine what could happen if we enabled hundreds of marketers to collaborate on the promotion of Drupal, much like we have enabled thousands of developers to collaborate on the development of Drupal.

Accelerating Drupal adoption with business decision makers

To focus Drupal's marketing efforts, we launched the Promote Drupal Initiative. The goal of the Promote Drupal Initiative is to do what we do best: to work together to collectively grow Drupal. In this case, we want to collaborate to raise awareness with business and non-technical decision makers. We need to hone Drupal's strategic messaging, amplify success stories and public relation resources in the marketplace, provide agencies and community groups with sales and marketing tools, and improve the Drupal.org evaluator experience.

To make Promote Drupal sustainable, Rebecca Pilcher, Director of MarComm at the Drupal Association, will be leading the initiative. Rebecca will oversee volunteers with marketing and business skills that can help move these efforts forward.

Promote Drupal Fund: 75% to goal

At DrupalCon Nashville, we set a goal of fundraising $100,000 to support the Promote Drupal Initiative. These funds will help to secure staffing to backfill Rebecca's previous work (someone has to market DrupalCon!), produce critical marketing resources, and sponsor marketing sprints. The faster we reach this goal, the faster we can get to work.

I'm excited to announce that we have already reached 75% of our goal, thanks to many generous organizations and individuals around the world. I wanted to extend a big thank you to the following companies for contributing $1,000 or more to the Promote Drupal Initiative:

If you can, please help us reach our total goal of $100,000! By raising a final $25,000, we can build a program that will introduce Drupal to an emerging audience of business decision makers. Together, we can make a big impact on Drupal.

Joachim's blog: Making builder code look like output code

Main Drupal Feed - Tue, 06/26/2018 - 21:30

One of the big challenges with updating Drupal Code Builder for Drupal 8 has been the sheer variety of code to be output. On earlier versions of Drupal, it was just about hooks, and all that needed to be done was to take the API documentation code and replace 'hook_' with the module name. There were info files too, and Drupal 7 added the placing of hooks into different .inc files, but compared to this, Drupal 8 has things like plugin annotations, fluent method calls for content entity baseFieldDefinitions(), FormAPI arrays, not to mention PHP class methods, and more.

But one of the things I enjoy about working on DCB is that I am free to experiment with different ideas, much more so than with work on core or even contrib. It is its own system, without any need to work with what a framework supplies, and it has no need to be extensible. So I can try a new way of doing things as often as I want, and clean up when I've had time to figure out which way works best.

For example, up until recently, the code for a field definition in baseFieldDefinitions() was getting generated in three different ways.

First, the old-fashioned way of doing it line by line, then concatenating the array with a "\n" to make the final code. This is the way most of the old code in DCB was done, but with things that need handling of terminal commas or semicolons, and nesting indents and so on, it was starting to get really clunky.

So then I tried writing something loosely inspired by Drupal's RenderAPI. Because that's a nice big hammer that seems to fit a lot of nails: make a big array of data, chuck your stuff into it, then hand it over to something that makes the output. Except, not so good. Writing the code to make the right sort of array was fiddly. The array of data needed to combine actual data and metadata (such as the class of an annotation), which added levels to the nesting.

Then I hit on an idea: baseFieldDefinitions() fields are a fluent interface, like this:

$fields['changed'] = BaseFieldDefinition::create('changed') ->setLabel(t('Changed')) ->setDescription(t('The time that the node was last edited.')) ->setRevisionable(TRUE) ->setTranslatable(TRUE);

What if the code that builds this could be the same, to the point where you could just copy-paste code from, say, the node entity class, and make a few tweaks? Creating the code in DCB would be much simpler, and having the DCB code look like the output code would make debugging easier too.

Using a class with the magic __call() method lets us have just that: a renderer object that treats a method call as some information about code to render. Here's what the builder code for the base field definition code looks like now:

$changed_field_calls = new FluentMethodCall; $changed_field_calls ->setLabel(FluentMethodCall::t('Changed')) ->setDescription(FluentMethodCall::t('The time that the entity was last edited.')); if ($use_revisionable) { $changed_field_calls->setRevisionable(TRUE); } if ($use_translatable) { $changed_field_calls->setTranslatable(TRUE); } $method_body = array_merge($method_body, $changed_field_calls->getCodeLines());

It's not yet perfect, as the first line isn't done by this, and the handling of the t() calls could do with some polish; probably by creating a separate class called something like FunctionCall, such that FunctionCall::somefunction() returns the code for a call to somefunction().

But the efficiency and elegance of this approach has led me to devise a new principle for DCB: builder code should look as much as possible like that code that it outputs.

So applying this approach to outputting annotations, the code now looks like this:

$annotation = ClassAnnotation::ContentEntityType([ 'id' => 'cat', 'label' => ClassAnnotation::Translation("Cat"), 'label_count' => ClassAnnotation::PluralTranslation([ 'singular' => "@count content item", 'plural' => "@count content items", ]), ]); $annotation_lines = $annotation->render();

Magic methods used there as well, this time for static calls. The similarity to the output code isn't as good, as annotations aren't PHP code, but it's still close enough that you can copy the code you want to output, make a few simple changes, and you have the builder code.

This work has embodied another principle that I've come to follow: complexity and ugliness should be pushed down, hidden, and encapsulated. Here, the ClassAnnotation and FluentMethodCall have to do fiddly stuff like quoting string values, recurse into nested arrays. They have to handle special cases, like the last line of a fluent call has a semicolon and the last line of an annotation has no comma. All of that is hidden from the code that uses them. That can get on with doing the interesting bits.

WPTavern: TaxJar to Host Free Webinar June 27: Tax Experts Answer Questions on State Tax Compliance for Online Stores

Wordpress Planet - Tue, 06/26/2018 - 21:26

TaxJar, a company that offers automated sales tax software, is hosting a free webinar June 27 at 11:30 AM CDT to answer questions regarding the U.S. Supreme Court’s decision on South Dakota v. Wayfair. The court ruled in favor of South Dakota on June 21st, 2018, allowing any state to require online sellers to collect taxes for sales made from customers in that state.

The provisions identified in the South Dakota vs. Wayfair ruling identifies retailers making $100K+ or 200+ transactions in the state as having an “economic presence” that would require out-of-state retailers to render sales tax. However, it’s not yet clear how other states will measure sales tax liability.

TaxJar has gathered a panel of tax experts to discuss the requirements of the new sales tax compliance burden for online businesses. Nearly 2,000 people are currently signed up to tune in and attendees can also submit questions in advance. A few popular questions submitted so far include:

“How will we know which states we are required to pay taxes in, and do we have to create accounts in every state and pay for returns in all 50?”

“I read that South Dakota, Colorado and Louisiana have a threshold of 100K in sales in their state to start collecting taxes. Is this really the case, and where can we find the threshold for other states?”

“Does each state that wants to participate have to pass a law like South Dakota or is this now automatic for all states with a sales tax?”

WooCommerce has created a guide to help users set up and collect taxes as required by the tax jurisdiction where their stores are located. Online store owners in the US and Canada can set enable automated tax calculations using either the WooCommerce Tax or TaxJar add-ons (both free), depending on whether the merchant operates within a single tax nexus or multiple nexus locations.

Automatic sales tax calculations are also available for merchants using Easy Digital Downloads. Pippin Williamson built a free integration for EDD and TaxJar that passes all tax rate determinations to TaxJar to calculate automatically, eliminating the need for manual tax rate entry.

The Supreme Court’s ruling is very new and many state-specific details are yet to be worked out, but state legislatures are likely to be highly motivated and eager to rake in this new source of revenue. The TaxJar blog will be a good source for updates as more compliance information becomes available.

Mediacurrent: PDFs in Drupal (DrupalCon Session Review)

Main Drupal Feed - Tue, 06/26/2018 - 13:10

There were a lot of amazing sessions at DrupalCon Nashville 2018, but one of the few sessions that sparked my interest was “PDFs in Drupal” presented by Dan Hansen. In this session, Dan goes through the importance of PDFs, gave a short introduction to some of the more popular PDF rendering libraries, and gave a demo on some tips and tricks that I found very useful for my future projects.

Most, if not all of us, have opened a PDF recently. PDFs are popular because they are universal as a document format and can easily be sent to others without having to worry about whether their machine can open them. Despite this, Dan notes that it feels like PDFs are behind in support, and it would be nice to have better PDF handling in Drupal core - similar to images in media libraries.

PDF Rendering Libraries

This session introduced a handful of popular PDF rendering libraries:

  • Print-to-PDF
  • jsPDF
  • FPDF
  • mPDF
  • TCPDF
  • FPDI
  • DOMPDF
  • Wkhtmltopdf
  • PDFtk
PDFs in Drupal

In Drupal 7, the most popular module for generating PDFs is the Print module - but does not support Drupal 8. Fortunately, there are options available for Drupal 8:

  • Printable - based on the Print module to allow generation of PDFs. It relies on the PDF API, which is currently not stable.
  • Entity Print (recommended) - allows for printing any Drupal entity or View (D8 only) to PDF. This module provides flexibility with PDF rendering libraries and is more lightweight compared to the Print module and has a stable release for both D7 and D8.
  • FillPDF - allows for filling PDF with values. This module can be used with the PDFtk library or a paid third-party service, and can help in reducing overhead of rendering PDFs.
     
Tips and Tricks

I found Dan’s demos to be the most interesting - as he showed some code examples of various (and seemingly common tasks) related to PDFs. The following examples from Dan’s session shows how simple and straightforward it is to work with PDFs:

Making a PDF from HTML

A custom controller can simply return the following output:

$dompdf = new Dompdf();
// Pass the HTML markup.
$dompdf->loadHtml($markup);
// Render the HTML as PDF.
$dompdf->render();
// Stream the generated PDF back to user via browser.
$dompdf->stream();

Combining 2 PDFs

Using the PDFtk library:

$pdf = new Pdf([ 
  'A' => '/path/file1.pdf', // A is alias for file1.pdf 
  'B' => ['/path/file2.pdf','pass**word'], // B is alias for file2.pdf ]);
$pdf->send();

Notice that you can specify a password for the PDF file (if there is one). You can also extract specific pages from the PDF files as well:

$pdf->cat(1, 5, 'A') // pages 1-5 from A 
  ->cat(3, null, 'B') // page 3 from B 
  ->cat(7, 'end', 'B', null, 'east') // pages 7-end from B, rotated East 
  ->cat('end', 3,'A','even') // even pages 3-end in reverse order from A ->cat([2,3,7], 'C') // pages 2,3 and 7 from C    
  ->saveAs('/path/new.pdf');

More of these examples can be found at https://packagist.org/packages/mikehaertl/php-pdftk.

Fill in a PDF Template

Using the FillPDF module:

$pdf = new Pdf([‘PATH_TO_PDF’]);
$pdf->fillForm([
  ‘name_of_text_field’ => ‘Some value’
])
->needAppearances()
->send(‘filled.pdf’);

I really enjoyed and learned a lot of useful tips from Dan’s session, and I encourage anyone who is looking to work with PDFs in Drupal to check out the session.

Related Content:
Accessibility: Let's Talk PDFs | Blog
Top Drupal 8 Modules | Blog
Mediacurrent Top Drupal 8 Modules: Drupalcon 2018 Edition | Blog

Pages