Drupal Planet

Drupal Association blog: Board Election 2022 Candidate: Meet John Doyle

2 weeks ago
Who are you? (biography/background)

My name is John Doyle (_doyle_) and I run my life, and my career following 3 core principles: #OwnIt , #GiveBack and #BuildItBetter. I am passionate about open-source technologies and believe in the future of open platforms. My career, community, and company is focused heavily around Drupal and I am very passionate about continuing to see the technology, the community, and the platform evolve. 

Why are you running for a board seat at the Drupal Association? (mission/motivation)

I am running for a board seat at the Drupal Association because I believe that Drupal has a future in the industry and I have a passion for making sure this belief becomes a reality. Drupal has enormous power as a content management system and an amazing community of people working on it. 

At a macro level, Drupal is losing talent market share to other technologies, notably new JS based frameworks. I believe this is something the community can (and is starting to) embrace as we continue to innovate Drupal’s API ecosystem to leverage the heart of Drupal’s CMS capabilities with the rapidly evolving client-side frameworks to build better, faster, stronger, more scalable applications. 

This opportunity is another way for me to give back to a community that has given so much to me. I am excited to get more involved with the Drupal Association and extend my contributions to the community. 

Why should members vote for you? (qualifications)

I run a successful development agency focused on building and maintaining Drupal applications for organizations large and small. I have been active in the Drupal community for over 10 years and have experience with a wide range of roles in the community including developer, architecture, technology buyer, speaker and business leader. This experience combined with the wide range of Drupal consulting engagements has given me a unique ability to understand the needs of various user personas leveraging Drupal today. 

As an active member of the board, I will be able to channel my passion for Drupal into action to help drive the future of Drupal. 

Serving a term as a board member of the Drupal Association is an opportunity to give back and support a community that has been such a big part of my life. If elected as a community at-large board member, I would dedicate time and energy into expanding the influence of the Drupal project and growing the community.

The legal responsibilities of a Drupal Association board member are: Duty of Care, of Loyalty, and of Obedience. Can you speak to how you would uphold these duties if you were elected? 

As a Drupal Association board member, I would be able to step into a new role and dedicate a portion of my time and energy to furthering the mission of both the Drupal Association and the Drupal Project. As a member, I would step out of my current role and fully embrace my responsibilities as a board member and uphold my legal responsibilities of Duty of Care, Duty of Loyalty, Deputy of Obedience. 

I would uphold these responsibilities the same way I uphold my obligation to clients and customers to have their best interests in mind when making unbiased decisions and recommendations. I do this by following a simple 2 step process for decision making:

  1. Gain a full understanding of the Drupal Associations goals, values and mission. 

  2. Ask the question: “Does this decision further the goals, mission and values of the association and does it have the community's best interests at heart?”

How could you serve as a link between the organization and the community?

My network in the Drupal community is large and extends around the globe. This helps me understand the needs of the community from a number of different perspectives and gives me a large feedback and communication channel to better understand how we are doing in the eyes of the community. 

What do you hope to achieve within your term limit (2 years)?

During my 2 year term, I hope to give back to the community that has given me so much by continuing to enable the growth and development of community members. I would like to help the organization spread the word about the capabilities of Drupal and extend the footprint. Drupal has been losing some steam to newer, "cooler" front-end frameworks and one of the big opportunities I see over the next 2 years is to continue sharing the story of the power of Drupal as a headless CMS and extend our footprint beyond the traditional CMS market as a partner to these new platforms, not competition. 

What’s a fact about yourself that no one would guess? 

One fact about myself that no one would guess is that I am an avid electronic dance music and heavy metal fan. Growing up, my preferred venues for music were OzzFest and Electric Daisy Carnival. I really enjoy the freedom that music provides and the power that it has to bring people together.

Voting Opens for the 2022 board election on 21 September at 00:00 UTC for 1 open at-large board seat. Your Drupal Association membership must be active a full 24 hours before voting opens to be eligible. Learn more.

Drupal Association blog: Board Election 2022 Candidate: Meet Esaya Jokonya

2 weeks ago
Who are you? (biography/background)

I am a web developer who has been working with Drupal for over 10 years. I have a lot of experience with both the codebase and the community. I am a committer on the project and have been involved in many of the major initiatives over the years.

Why are you running for a board seat at the Drupal Association? (mission/motivation)

The Drupal Association (DA) is a not-for-profit organization which promotes, supports, and defends the Drupal open source content management system. The DA Board of Directors consists of seven individuals who are responsible for the governance and management of the Association.

As a Drupal advocate and enthusiast, I would like to be a part of the DA Board of Directors. My goal is to help promote and grow the Drupal platform, while ensuring that the DA remains an effective and valuable resource for the Drupal community.

I have a strong background in business and technology, and have been involved in the Drupal community for several years. I am confident that I have the skills and qualifications needed to serve on the DA Board of Directors. I am committed to working with the other Board members to support the Drupal community and grow the Drupal platform.

I want to help the Drupal Association (DA) continue its work in promoting, supporting, and building the Drupal community.

The DA does a lot of great work in promoting Drupal and supporting the community, and I want to help them continue this work. I also want to help the DA build a stronger community by working on initiatives like increasing diversity and inclusiveness, and creating better tools and resources for Drupal users.

Why should members vote for you? (qualifications)

I'm passionate about Drupal and its potential to help make the web more open and accessible. I've been involved in the Drupal community for over 10 years, and I've been a member of the Drupal Association for the past two years. I'm excited to continue contributing to the Drupal Association and help it grow and thrive. I have a lot of ideas for how to make the Drupal Association more effective and more responsive to the needs of the Drupal community, and I believe I can make a valuable contribution to the board. I'm also committed to transparency and accountability, and I believe that the Drupal Association should be open and responsive to the needs of its members. I would be proud to serve on the board of the Drupal Association and I enthusiastically endorse my candidacy.

I have a lot of experience with Drupal and I want to share my knowledge with others. I am also experienced in marketing, communication, and event planning, and I can contribute my skills to help the DA reach more people and inspire them to use Drupal. I am excited to help the DA achieve their goals and promote Drupal as the best open source platform for web development.

How could you serve as a link between the organization and the community?

There are many  ways that  I could serve as a link between the Drupal organization and the community. 

One way would be to act as a bridge between the Drupal organization and the community by organizing and hosting events. This could involve hosting meetups, webinars, or even larger events such as Drupalcon. 

Another way to serve as a link would be to act as a spokesperson for the Drupal organization. This could involve writing blog posts, articles, or even giving talks about Drupal. 

Lastly, one could help to connect members of the community with one another. This could involve creating and moderating online forums or groups, or even organizing in-person events.

What do you hope to achieve within your term limit as Drupal board member(2 years)?
  1. 1. In my first year, I will focus on expanding Drupal's reach and growing the community. I will work to make Drupal more accessible to users and to grow the pool of developers who are familiar with Drupal.
  2. 2. In my second year, I will continue to grow the Drupal community, while also focusing on developing the Drupal platform. I will work to make Drupal more modular and easier to use, with the goal of making it the leading platform for developing web applications.
  3. Work to ensure that the Drupal community is welcoming and inclusive for everyone, regardless of race, ethnicity, gender identity, sexual orientation, socio-economic status, religion, or ability.
  4. 3. Advocate for the needs of marginalized groups within the Drupal community.
  5. 4. Promote diversity and inclusion initiatives within the Drupal community.
  6. 5. Collaborate with other board members and Drupal community members to create an inclusive and welcoming environment for all.
What’s a fact about yourself that no one would guess?

There's a lot of things about myself that people wouldn't guess, but one fact that is definitely strange is that I have a phobia of buttons. I know it's a weird thing to be afraid of, but for as long as I can remember, I've always been terrified of buttons. I hate the way they feel, the sound they make when you press them, and the way they look. Even just seeing a photo of a button sends my heart racing and makes my palms sweat. It's definitely a fact about myself that no one would guess.

There are many facts about ourselves that others would never guess. I am left-handed.

Voting Opens for the 2022 board election on 21 September at 00:00 UTC for 1 open at-large board seat. Your Drupal Association membership must be active a full 24 hours before voting opens to be eligible. Learn more.

Drupal Association blog: Board Election 2022 Candidate: Meet Bhavin Joshi

2 weeks ago
Who are you? (biography/background)

My name is Bhavin Joshi. I live in Rajkot, Gujarat, India. My mother tongue is Gujarati. I can communicate in English with professional level fluency. My Drupal.org username is beautifulmind and you can view my profile at https://bhj.im/do

I've been working with Drupal for more than 15 years now. Furthermore, I build Drupal based custom solution like custom modules, themes, consultation, mentoring & training. I try to take part in different community initiatives but for some reasons, I feel left out! I tried to be part of the Drupal.org migration to Drupal 7 in 2011.

Why are you running for a board seat at the Drupal Association? (mission/motivation)

In my region, there are a lot of developers & companies working with Drupal. They hardly participate in any events/initiatives. They have no idea about contribution. Most of the time, they are the end users of all the initiatives and looking for a solution to the issues they face with their Drupal projects. I would like to create awareness by organising local events and spread the word about the existing as well as new initiatives as soon as they happen. This way, no one will feel left out.

Why should members vote for you? (qualifications)

By voting me, members can expect me to strengthen the Drupal community values. I am aware about the Drupal code of conduct and will be taking part in the Code of Conduct Incident Response Workshop on September 14.

In my region, developers and companies are not members of the association. I will motivate them to join the community and do their bit by becoming a member of the Drupal association. I will also encourage & work with them to organise local Drupal events and camps.

Apart from this, I will abide by the fundamental legal duties as prescribed by the USA law for all non-profit organisations. I will actively participate & help the board to achieve its objectives in different areas.

Can you speak to how you would uphold these duties if you were elected?

I understand the fundamental legal duties mentioned on https://www.drupal.org/association/board/elections, and I will abide by them:

Duty of Care: When representing the community as a board member, it will be my utmost duty that I care for the organisation & the community and thus making decisions in favour of the organisation & the community with long & short-term outcomes. While making such decisions, I will take the facts into account.

Duty of Loyalty: Being a board member and representing the community is a privilege conferred by the community. I understand that my personal & professional interests have no place while making decision which are in the best interests of the organisation & the community. I will take immense care that there will be no conflict of interest at any point during my tenure as board member.

Duty of Obedience: As a board member, I will abide by all applicable federal, state & local laws and adhere to them. I will not, in any situation, break any of these laws.

How could you serve as a link between the organization and the community?

The organisation is built by the community & the community is represented as an organisation. They are two sides of a coin. I will Learn feedback/suggestions from the community, discuss them with board members and then formulate a solution that is in the best interest of the community & organisation. This is how I envision my role as a board member.

What do you hope to achieve within your term limit (2 years)?

I understand we need more members in Drupal association. There are developers/small communities/companies/ who want to contribute or want to represent in the organisation or at any global event but could not because of certain reasons. I would like to propose, discuss and create a strategy that allows all those under-represented sections of the community to participate in all the initiatives & events.

We need to put more efforts to make Drupal awesome by enhancing it in such a way that users feel at home while using it, and instead of listing its disadvantages, they start advocating it.

What’s a fact about yourself that no one would guess? 

I may not be a good speaker, but I am a very good listener for sure!

Voting Opens for the 2022 board election on 21 September at 00:00 UTC for 1 open at-large board seat. Your Drupal Association membership must be active a full 24 hours before voting opens to be eligible. Learn more.

Drupal Association blog: Board Election 2022 Candidate: Meet Adam Bergstein

2 weeks ago
Who are you? (biography/background)

Adam Bergstein (nerdstein). I've had a lot of experience with Drupal: led customer implementations, built products for/using Drupal, participated in events, and participated in community initiatives. I've been a long-time contributor and speaker in the community. 

Why are you running for a board seat at the Drupal Association? (mission/motivation)

The Drupal community needs a progressive voice to move forward. But, this must be informed by where we are today and with people that are active and passionate about the community. My mission will be to harness my experience to help position both Drupal and the Drupal Association as a viable and vibrant ecosystem for years to come.

Why should members vote for you? (qualifications)
  1. Served on the Governance Task Force

  2. Active in the community

  3. Frequent speaker at events 

  4. Leads simplytest.me, a free testing tool for the Drupal community

  5. Contributed and maintained many drupal.org projects

The legal responsibilities of a Drupal Association board member are: Duty of Care, of Loyalty, and of Obedience. Can you speak to how you would uphold these duties if you were elected? 

While I feel that I offer a lot of personal and professional experience that will help me contribute meaningfully, I intend to participate, work with other board members, and be objective. It would be my responsibility to help promote the mission of the Drupal Association. I want to serve the community and be an active voice for the interests of the community within the DA; not for me personally or to promote any professional affiliations. 

How could you serve as a link between the organization and the community?

I have been in the community for a long time and have done a lot of different things. Those experiences have helped me create a lot of connections with the entire global community. I’ve been involved in contribution, governance, speaking at events, and more. I am active in a number of initiatives and projects, including SimplyTest.me. I love collaborating with people in the community and believe I could effectively bridge the DA and their needs.

What do you hope to achieve within your term limit (2 years)?

I would like to emphasize the growth and viability of the Drupal project as part of the mission of the Drupal Association. I would like to get more contributors, better focus on initiatives/outcomes, greater adoption, and help current adopters continue to get value staying on Drupal.  

What’s a fact about yourself that no one would guess? 

I am a board member of a local rails to trails organization.

Voting Opens for the 2022 board election on 21 September at 00:00 UTC for 1 open at-large board seat. Your Drupal Association membership must be active a full 24 hours before voting opens to be eligible. Learn more.

Jacob Rockowitz: Schema.org Blueprints in 7 minutes

2 weeks ago

Hello again. After spending the summer building out the Schema.org Blueprints module, it feels like a good time to record a quick demo and walkthrough of all the new features and functionality added to the module.

The Schema.org integration and mapping user interface have not changed much since my first short demo. I did build out JSON:API and JSON-LD support. The content authoring experience now leverages standard best practices, including multimedia support, embedded content, content browsing, inline entity editing, entity usage, content cloning, drag-n-drop file uploads, and link management. Lastly, there are examples of progressive decoupling using Next.js with PDF generation. I have also put together a lot of documentation and resources along the way.

I hope you enjoy my short demo of many cool new things. Hopefully, you can catch my longer Schema.org Blueprints presentation in person at an upcoming DrupalCamp or online via a session recording. Feel free to share your comments and questions below.

Read More

Specbee: How to implement Algolia Search in Drupal 9 (Part 2)

2 weeks ago
How to implement Algolia Search in Drupal 9 (Part 2) Subhash Yadav 13 Sep, 2022 Subscribe to our Newsletter Now Subscribe Leave this field blank

In the previous chapter of this series, we walked you through the process of configuring the Algolia dashboard and your Drupal site to index the site's content on Algolia. In this chapter, you will learn how to display the Algolia search results on your Drupal website.

To display the search result, you will need to create a Drupal custom block and place the block on the /search page. Also, you will find out how to make use of Algolia’s InstantSearch library. Note that this process assumes that you have a basic understanding of how to create custom modules in Drupal, so we will not dive deep into the process of creating custom modules. Read this article to learn how to programmatically create custom modules in Drupal 9.

This is the second chapter of a 2-Part series article. Click here to read the first part where we talk about how to configure Algolia and Drupal.

Building a Custom Block for the Interface

We will use the following structure to create our custom block.

algolia_search_interface - js/ - algolia.js - src/ - Plugin - Block - DemoSearchBlock.php - templates/ - algolia_search_interface-block.html.twig - algolia_search_interface.info.yml - algolia_search_interface.libraries.yml - algolia_search_interface.module Declaring the Libraries

As explained earlier, we will be using Algolia’s InstantSearch library to access search results. So let’s declare all the libraries in algolia_search_interface.libraries.yml as shown below:

algolia-javascript: js: https://cdn.jsdelivr.net/npm/[email protected]/dist/algoliasearch-lite.umd.js : { type: external } https://cdn.jsdelivr.net/npm/[email protected] : { type: external } js/algolia.js: {preprocess: false} dependencies: - core/drupalSettings css: theme: https://cdn.jsdelivr.net/npm/[email protected]/themes/algolia-min.css: { type: external, minified : true } Accessing and Setting Variables

In the Demo search Block (DemoSearchBlock.php)​​, we will simply access Algolia variables from Drupal configuration and assign them to drupalSettings using the following code:

public function build() { // Get Algolia config. $config = $this->configFactory->get('search_api.server.algolia_search'); $app_id = $config->get('backend_config.application_id'); $api_key = $config->get('backend_config.api_key'); $index_name = $this->configFactory->get('search_api.index.vehicles_data')->get('options.algolia_index_name'); return [ '#theme' => 'demo_search_block', '#attached' => [ 'library' => 'algolia_search_interface/algolia-javascript', 'drupalSettings' => [ 'app_id' => $app_id, 'index_name' => $index_name, 'api_key' => $api_key, ], ], '#cache' => [ 'contexts' => [ 'url.path', 'url.query_args', ], ], ]; } Add a Template

Now you will need to add a template for the custom block. So let’s define the hook_theme for our custom block in algolia_search_interface.module:

/** * Implements hook_theme(). */ function algolia_search_interface_theme($existing, $type, $theme, $path) { return [ 'demo_search_block' => [], ]; } Define the Containers

Now, let’s define our template data to render the search results. We will simply define the containers where the InstantSearch library will render the results. We will add 4 containers in algolia_search_interface-block.html.twig:

- Searchbox (#searchbox) - Search results (#hits) - Facets (#filter-widget) - Pagination (#pagination) {{ 'Manufacturer'|t }} Displaying the Search Results

Now you have all the ingredients necessary to display your search results. So let’s have a look at how to use InstantSearch to display our results.

First, let’s get the index name, application id, and application key from the drupalSettings variable. We need them to pass to our Algolia API in algolia.js.

const index_name = drupalSettings.index_name; const app_id = drupalSettings.app_id; const api_key = drupalSettings.api_key;

Once you have the application keys and index name in place, you need to initialize and start the InstantSearch.

const search = instantsearch({ indexName: index_name, searchClient: algoliasearch(app_id, api_key), }); search.start();

At this point, you will not see any difference in the search page as you have not added any widget to the InstantSearch. So, let’s add a searchbox widget to the instant search.

search.addWidget( instantsearch.widgets.searchBox({ container: '#searchbox', }) );

Notice that we have used addwidget() function of InstantSearch to add a single widget. When using multiple widgets, addwidget() is not feasible. You will need to use it in the following manner:

search.addWidgets([ instantsearch.widgets.searchBox({ container: '#searchbox', }), instantsearch.widgets.hits({ container: '#hits' }), ]);

Now you will be able to see the search results on your search page. But as we can see, the result is in a very raw format:

In order to refine this, let’s format the result using the template attribute as shown below:

instantsearch.widgets.hits({ container: '#hits', templates: { item: ` {{{title.value}}}

{{{field_manufacturer}}}

{{{uri}}}

`, }, }),

Note that although the result looks fine, sometimes we need to do some processing on the data before displaying it on the page. For example in the above code, the URI value is in the `public://` format. Here we can use transformItems attribute to alter the results per our requirement.

instantsearch.widgets.hits({ container: '#hits', transformItems(items) { return items.map(item => ({ ...item, url: item.uri.replace('public://', /sites/default/files/'), })); }, templates: { item: ` {{{title.value}}}

{{{field_manufacturer }}}

{{{url}}}

`, }, })

Once the result set is in place you can now move to display facets data to filter our search criteria. You will use the same addWidgets() function to display facets.

search.addWidgets([ instantsearch.widgets. refinementList({ container: '#filter-widget, attribute: 'field_manufacturer', }), ]);

The attribute option defines the field name against which we want to display the facet. Remember this also needs to be pre-configured in the Algolia dashboard.

Finally, let’s add pagination to enable more results to be displayed.

search.addWidgets([ instantsearch.widgets. pagination({ container: '#pagination, }), ]);

And we’re done! This is how the final code looks like

const index_name = drupalSettings.index_name; const app_id = drupalSettings.app_id; const api_key = drupalSettings.api_key; if(index_name && app_id && api_key) { const search = instantsearch({ indexName: index_name, searchClient: algoliasearch(app_id, api_key), }); search.addWidgets([ instantsearch.widgets.searchBox({ container: '#searchbox', }), instantsearch.widgets.hits({ container: '#hits', transformItems(items) { return items.map(item => ({ ...item, url: item.uri.replace('public://', '/sites/default/files/'), })); }, templates: { item: ` {{{_highlightResult.title.value}}}

{{{_highlightResult.field_manufacturer.value}}}

`, }, }), instantsearch.widgets.refinementList({ container: '#filter-widget', attribute: 'field_manufacturer', }), instantsearch.widgets.pagination({ container: '#pagination', }) ]); search.start(); } else { throw "Algolia settings missing";} Final Thoughts

As we conclude our two-part article series, we hope you have gained enough understanding of Algolia. We have covered how you can integrate Algolia search with Drupal to build a powerful and consumer-grade search. We also discussed using the InstantSearch library to customize the search results. Looking for a 100% Drupal-focused company that can help you build ambitious Drupal experiences while utilizing the best of the web? We’d love to hear from you!

Author: Subhash Yadav

​​Meet Subhash Yadav, a Senior Drupal developer at Specbee who is also Acquia Drupal 9 certified. He’s a football fan and loves traveling to ancient forts. During his spare time, you can find him playing his favorite video games.

Drupal 9 Drupal 9 Module Drupal Development Drupal Planet

Leave us a Comment

  Recent Blogs Image How to implement Algolia Search in Drupal 9 (Part 2) Image How to implement Algolia Search in Drupal 9 (Part 1) Image The Ultimate Guide to Jumpstart your Drupal Contribution Journey Want to extract the maximum out of Drupal? TALK TO US Featured Success Stories

Upgrading and consolidating multiple web properties to offer a coherent digital experience for Physicians Insurance

Upgrading the web presence of IEEE Information Theory Society, the most trusted voice for advanced technology

Great Southern Homes, one of the fastest growing home builders in the United States, sees greater results with Drupal 9

View all Case Studies

Acquia Developer Portal Blog: Drupal Cache Strategy with Varnish and Edge CDN on Acquia

2 weeks 1 day ago

The requirement is to cache content for as long as possible, but update promptly when content changes are made in Drupal. 

Note that in this setup I’m using Acquia Edge powered by Cloudflare, but the strategy would be similar for Acquia Edge powered by Akamai.

The objective is to bootstrap Drupal as infrequently as possible, by relying on the Varnish and CDN layers, but always to serve fresh content: Cache pages in Varnish for a long time, but provide a method (Purge) to invalidate Varnish when a content change is made in Drupal. At the CDN layer, the goal is to make sure the current version of a page is delivered to the browser, by checking Varnish frequently to see if a new version is available. This check is a lightweight call to Varnish. If Varnish does not have a new version, the CDN-cached version is delivered.

Drupal Modules:

Talking Drupal: Talking Drupal #364- Cypress

2 weeks 1 day ago

Today we are talking about Cypress with Jordan Graham.

www.talkingDrupal.com/364

Topics
  • What is Cypress
  • Why testing is important
  • What can you test
  • What can you not test
  • Test cases
  • Difference between Behat and Cypress
  • Syntax
  • Drupal and Cypress
  • Cypress module
  • Test DB
  • Speed of tests
  • Module Ecosystem for Cypress
  • Test runner
  • Fixtures
  • Email testing
  • Grouping tests
  • Order of testing
  • Security
Resources

cypress.io Email handling extension Tech Radar #1 tech to adopt Colorado talk: Not yet online Webinar version is available at Aten’s website Repo for project Cypress Drupal Module

Guests

Jordan Graham - @jordanlgraham

Hosts

Nic Laflin - www.nLighteneddevelopment.com @nicxvan John Picozzi - www.epam.com @johnpicozzi Tim Lehnen - @hestenet

MOTW

Views Aggregator Plus As the Views and Views Calc modules rely on the database to perform aggregation, you only have limited options at your disposal. As the great Merlin himself said: "You can’t aggregate a PHP expression in the database. :/ ". That’s where Views Aggregator Plus comes in.

Théodore 'nod_' Biadala: A better Drupal marketplace ranking

2 weeks 1 day ago

For a few years now I’ve been quite unhappy with the atmosphere of discussions regarding Drupal credit system. It turns very ugly, very fast. As an example, what’s being discussed on the DA blog lately is not healthy to me. Talking about “high” and “low” value contribution is looking at the problem from the wrong end. The main reason we’re having those discussions is because the Drupal marketplace ranking is directly impacted by getting or not getting contribution credit.

I’ll be talking about an alternative ranking method and I’d like to have some feedback from agency owners/executives on the assumptions I’m making and their feeling in general with changing how the ranking is done.

Why do we need a ranking?

There are many Drupal companies and introducing a ranking is an opportunity to get more money for the DA, encourage contribution, reward companies that give back a lot, that sort of things.

The order of the companies in the link above is controlled by an algorithm. The algorithm itself is not secret. What is secret is the relative weights given to the various components. There has been a lot of investment in building the credit system and weighted issue credits is the first item on the list so it’s safe to say that issue credit is a very important part of this ranking (and I empirically confirmed this a few years ago, might have changed since, more below).

What is a contribution credit?

When an issue is opened, people contribute and come to a resolution by writing comments. Every time a comment is created we have the ability to say that the comment is made on behalf a company, or a client, or as a volunteer. When the maintainer is happy with the resolution they mark the issue fixed and decide which users have been helpful in solving the issue. At this point users gain contribution credit, as well as all the companies they attributed work to, and that shows up in the company profile on drupal.org. One fun implementation detail is that you gain that credit only when the issue is fixed, so if the issue is 10 years old, the company you worked for 10 years ago is going to gain a credit for that today.

So a credit is essentially a recognition of helpfulness for an issue that got solved. That issue could be fixing a bug, it could also be organizing a whole event, attending a meeting, everything and anything you could think of to recognize someone for their work.

There is no concept of how much time, skills, knowledge, patience, or commitment it took to get an issue fixed. Your work, big or small, earns you 1 contribution credit for each issue every time.

Ranking on result, what could go wrong?

So we have companies (partly) ranked based on the result of contribution people do on their behalf. It means we are not ranking companies, we’re currently ranking the output of a group of people attributing some work to a company. Module maintainers being the ones judging who gets credit because they are the ones who can say who has been helpful and who has not according to what the module maintainer needs. In this situation companies are pushed to earn credit, regardless of how they obtain it, aka. gaming the system. This can create many unhelpful attempts to gain credit from contributors and that puts pressure on module maintainers to police contribution credit.

This whole situation is where it goes wrong for me. In discussions I mentioned at the start, I can sum up what was said by: it’s not fair that this contributor gets the same credit as me for this very little amount of work they did. In that case what I hear is: This person did very little work and it’s helping their company rank as much as my credit that I earned by spending days, weeks of my time on this issue. or even: Without my work this issue would never have been solved, and nobody would have had credit, I should get more/they should get less.

To be clear I’m not suggesting to add a contribution credit weight to capture the time, skills, etc. necessary to solve the issue. This would create more problems that it hopes to solve.

Improving your company ranking despite your company

Before going further I wanted to share a little experience working at a company and dealing with credit and ranking.

I used to be in a company that is very open-source focused and use that heavily in their marketing and yet it was not easy to get them to sponsor work in the community and it was even harder to make them sponsor the DA even the lower tier of $1000/year, which can be compensated by not having a couple of pointless meetings every year.

We personally cared about the ranking, the company didn’t, and the way the credit system is/was set up, we could compensate for that! So that’s what we did the next few months, we improved the ranking significantly and ended up on the second page only through contribution credit — core credit was very effective — and writing case studies.

The rules made is possible for people to compensate the lack of involvement of the company. And us doing this work, meant the company didn’t need to care about this because the end result is a better ranking and they didn’t have to change anything. It’s just on our end that we did extra work and unpaid hours to improve the situation.

Wait, isn’t it companies we’re ranking?

So, we’re using the output of workers to rank companies and we have no regard for how the output is created, and we do not take into account the fact that the company as en entity is helping the community or if it’s just the employees doing extra.

If we’re ranking companies, we should be using company metrics and make sure that what is rewarded are things we really need from companies. And what we want from companies is mainly money for the DA, and sponsoring full time contributor.

Some ground rules

Ranking should be based on what the company is providing the community, not on what the group of people they pay is achieving.

I think is important is that it should not be possible for individuals to compensate for a company that does not care about it’s ranking. I would help prevent people getting invested in something that is not rewarded at their company.

What is important?

I have 4 layers in mind:

  1. Is the company a DA sponsor? simple yes/no, doesn’t matter how much money you’re supporting the DA with because for some businesses $1000 is a lot and for some $25000 is nothing.
  2. Did the company post a contribution pledge? A text from the higher ups that describe how the company plans to contribute to the community in a general sense.
  3. A score based on the module the company is actively sponsoring. Weighted by module usage. We want our module well maintained and that takes time. This attribution is controlled by the modules maintainers. The module maintainer is the one that can say a company sponsors their module.
  4. For each user they sponsor, a score based on the % of work time sponsored/paid to do contributions. The rules can get a bit complex there are some examples in the drupal.org issue. In short, as a user you can say that a percent of your time is spent doing contribution and this will affect the ranking of the company.

And the ordering is done with something like:

ORDER BY da_sponsor DESC, contrib_plege DESC, module_sponsor_score DESC, contrib_time_sponsor DESC

That way we rank companies on things they can do relatively easily, give money, write a blog post, and set time for their employees to work on contribution. As an employee if you see that the company can’t be bothered to spend a few hours to write a short text or give $1000/year, it means the time you are spending contributing is worth even less than that for your company — and it’s likely you’re doing overtime for that.

The nice thing about counting contribution time % here is that whether your time is spent coding, writing documentation, or organizing events, it’s counted the same toward the ranking. So if you organize a huge event you’re probably going to be working 90% of your time on it and it’ll show in the ranking.

Changes

The main change I’m looking for is that people stop feeling that someone else getting credit is unfair for some reason. Everyone’s time is worth the same, some people make particularly unhelpful contributions but we don’t need to feel like them or their employers should be punished for that.

And for each layer what I’m hoping for:

  1. Companies give more money to the DA, or that the ones on the fence commit to spending some money on this, and start the process of actually committing to supporting the project they make money off. Many $1000 sponsors can add up.
    Or maybe we need an even lower tier to facilitate. Ten $300 sponsors are better than zero $1000 :)
  2. We’ll get a bunch of content saying companies want to help open-source and Drupal in particular, and it should be large enough that it’s talked about outside our community, so that would help with Drupal awareness at a minimum. And it’s a tool for employees to help keep the company accountable and help resolve any offset between what they said and what’s happening.
  3. More focused sponsoring for module maintenance, may help with reducing issue queues length overall and showing that the work they do as maintainers is valued, and that the burden is recognized by people making money off it.
  4. With the various score boost based on the amount of time spent on contribution, hopefully we’ll start to see people with more time to contribute instead of many people with very little time. It’s sustained contribution that makes it possible to improve Drupal.

There are still ways to game the system, but the verification can be done by a DA employee (since the marketplace is a service they provide), and we can stop relying on module maintainer labor to arbitrate company rankings.

The credit system stays in place and continues to be used, it just stops being used for gaming and simplify maintainers tasks of crediting people.

In that situation if there is no pledge written and no new DA sponsorships then we can discuss the usefulness of the ranking itself and at least leave maintainers and contributors alone since ranking doesn’t matter as much as we thought.

Continuing the discussion

On drupal.org there is a lot of discussion on the topic and this post is an attempt to frame the alternative approach I’ve suggested on the issue #3086885: Marketplace ranking Algorithm: Weights & Measures. The link has details on how to come up with contribution % and also talks about how it applies to freelancers.

I realize the real solution is something in the middle where we have mainly company metrics and some sort of use of credit. It’s always a balance, my point is that the current balance is making things toxic and we should hold companies accountable for their own ranking if they’re making use of that marketplace ranking instead of arguing amongst each others trying to find ways to compensate.

Chapter Three: Hell is Programming a Calendar (Part 3 - Lingering Questions)

2 weeks 4 days ago
Last time I broke down the default Drupal date field to see what we can learn about how best to handle time. Originally that was going to be the end of the series. However, the writing process dug up even more questions, and circumstances found me putting my new knowledge to the test. So here we are, part three of my two part series on wrestling time in Drupal. COMPARING DATES The previous post posed the question: “What’s the best way to compare date values within this framework?” Well one of you must have made a sacrifice to the irony gods, because between the last post and now I unexpectedly had to build a day view calendar which forced me to answer this question with practice and not just theory.

Drupal Association blog: Helping maintain high value Drupal contributions

2 weeks 5 days ago

Drupal's contribution credit system continues to be unique in open source, in that it provides an attribution and incentive system to encourage greater contribution to the Drupal project, both from individuals and organizations.

Recently, there’s been discussion within the Drupal community on what makes a 'high' vs 'low-value' contribution. There's a perception from some community members that some contributors may be using low effort, low value contributions to gain a more favorable placement within the Drupal Marketplace. Some examples of low-value contributions that people have given include posting unnecessary screenshots to issues, or running automated tooling against many projects to fix minor code quality issues.

As we evaluate these concerns, it's important to remember that contribution recognition is not a zero-sum game. There is no 'winning' contribution.

We very much want many people to be recognized for their contributions, and we want to see new faces in the issue queues. Some contributions which may seem simplistic or low-value may also just be good entry points for someone first beginning a contribution journey, and we should always use these examples as an opportunity to help an individual or organization 'level-up' their contribution skills.

At the same time though, we want recognition to be proportional to the effort put in, and we want our project maintainers, who ultimately control who gets credit for contributions to their projects, to feel encouraged by seeing new faces and not burnt out by policing the system. 

How did we get here

The Drupal Marketplace is intended to showcase organizations that contribute back to Drupal. This includes not only code, but non-code contributions such as testing functionality, event organizing, speaking, volunteering, and more. 

The more work an organization contributes, the higher they will be ranked within the marketplace. This, in turn, leads to more job opportunities and leads.

Inevitably, contributors will try to maximize their contributions to gain a higher ranking. Is that okay? It certainly can be okay - this incentive exists because we want to further encourage contribution, but those contributions need to be authentic, and we hope to see new contributors develop their skills and increase the scope of their contributions over time. 

Today, we are seeing a recent pattern with providing a lot of test screenshots. These can be valuable, but in some cases the users posting them aren't even checking if they have a properly applied patch, so it's difficult to rely on. This is partly because file attachments automatically pre-check the contribution box when users post them to issues, so that's an area where we can use a technical solution to try and correct the situation. 

A quick fix

The Drupal Association Engineering Team is making changes to the issue queues so that contributors that upload images will no longer be automatically assigned credit. By not having this auto-populate, the maintainer won't have to spend time deselecting drive-by contributions of screenshots that were inauthentically posted or otherwise unhelpful. 

Are we running into Goodhart's law?

Goodhart's law is an adage often stated as, "When a measure becomes a target, it ceases to be a good measure". Often invoked when discussing economics, it’s directly related to the issue at hand. Any deliberately designed incentive structure is going to result in people figuring out ways to maximize their results - that's only to be expected. 

But our firm belief is that with careful management, the system can still provide a good measure of contribution. Contribution credit is central to the Drupal ecosystem to help motivate contributors. 

How can we encourage high value contribution?

It's difficult, if not impossible, to evaluate the quality of a contribution algorithmically, although there are some heuristics we can use. It is impossible to algorithmically determine the intend behind a contribution: was it an authentic first effort, or was it a cynical reach for low-hanging fruit.

We always want to assume good intent, and to use any opportunity we can as a teaching moment. But with collaboration across so many projects and so many people, we do need community standards and guidance to help. 

The first step is to define what is high-value and what is low-value (or perhaps even to decide if these are the right terms!). The Drupal Association is putting together a small group composed of community members, DA board, and staff to create some documentation for exactly this. We have existing documentation that gives guidance on granting credit, but none that is oriented toward the contributor. 

The goal of this documentation is to guide contributors on how they can help, and how to avoid being unhelpful through well thought out examples, and processes. This documentation can then be linked to within Drupal issues when a maintainer feels that a contribution was unhelpful. 

Our hope is that reading the documentation will be enough for any new contributors to realize when they are posting unnecessary and unhelpful contributions, and give them a clear pathway to making contributions that have a greater impact. 

Next steps

The Drupal Association is committed to making contributions as fair and equitable as possible. If you’d like to participate in a discussion to create documentation, please reach out by October 1st. 

Drupal Association blog: Drupal 10 is expected to be released on 14 December, 2022!

2 weeks 5 days ago

The expected release date of 14 December 2022 for Drupal 10 is coming up, and we could not be more excited to share it with the Drupal community! As mentioned in our prior announcement blog post, there were many advantages of the December release date, and it is approaching quickly. The beta release is coming up in September, allowing to the community to test the great changes in Drupal 10 and contribute any final feedback. 

The Drupal 10 page on Drupal.org contains all of the information you’ll need to ensure you have a smooth upgrade to Drupal 10. Check out the page to familiarize yourself with the new features, including:

  • Olivero default theme (replacing Bartik)
  • Claro administration theme (replacing Seven)
  • Introduction of CKEditor 5 with better authoring experience and more modern editing (replacing CKEditor 4)
  • Modern JavaScript components to replace some uses of jQuery
  • Under the hood: Symfony 6 (replacing Symfony 4) and PHP 8.1 

…and more! Read about all of the new features now on the Drupal 10 page.

Drupal 10 has been a big project, and we cannot be more thankful for our amazing team of contributors who are working hard to make it possible. Thank you to everyone who has been working to complete the requirements and strategic initiatives needed for Drupal 10!

Do you have questions about the upcoming launch of Drupal 10? The Drupal 10 readiness team holds meetings every other Monday at 18:00 UTC in #d10readiness on #Drupal Slack. Join the channel to discuss other questions about Drupal 10 anytime! 

Stay tuned throughout the months leading up to the 14 December release date for more updates and information on Drupal 10, and make sure to follow us on Twitter @DrupalAssoc and @Drupal to stay up-to-date on all of the latest Drupal 10 news.

Promet Source: Provus Sparks New Possibilities for SIU Med

2 weeks 6 days ago
When the Southern Illinois University School of Medicine reached out to Promet Source for the design, development, and Drupal migration of two sites with separate URLs that needed to connect while remaining distinct, there were specific expectations for what needed to be accomplished.

Specbee: How to implement Algolia Search in Drupal 9 (Part 1)

3 weeks ago
How to implement Algolia Search in Drupal 9 (Part 1) Subhash Yadav 06 Sep, 2022 Subscribe to our Newsletter Now Subscribe Leave this field blank

Studies show that 30%* of site visitors use the site search feature on a website (when made available) to get relevant results. More importantly, about 68%* of e-commerce site visitors would not return to a website that displays poor and oftentimes irrelevant search results.

Clearly, this underlines the importance of the search feature in a website. Algolia is a very robust, AI-powered search API that can help organizations build dynamic consumer-grade search features for their websites easily.

In this article, we will walk you through the process of integrating Algolia search into a Drupal 9 website.

This is the first chapter of a 2-Part series article. Stay tuned for the next chapter of this blog post to learn how to display the Algolia search results on your Drupal website.

But first, Why Algolia?

With Algolia, it is easy to build customized and powerful search solutions.

  • It provides consumer-grade search
  • Returns result faster than ElasticSearch/ Apache Solr
  • Provides out-of-the-box support for results as you type, typo-tolerance, smart results highlighting
  • Algolia is easy and fast to set up and is a paid service while ElasticSearch is an open service built on top of Lucene and has a steep learning curve
Configuring Algolia

Before moving on with setting up the Drupal - Algolia integration, note that this process assumes that you already have set up your Algolia account and know how to configure Drupal search API.

First, let’s configure the Algolia dashboard to create our index for storing and indexing the website data.

 

Once the index is created, we can also configure various search options like faceting, pagination and more by clicking on the Configuration button on the Index tab. You will learn how to configure facets once our data is indexed on Algolia. For now, let’s move to our Drupal 9 site to create a new Algolia server and index.

Configuring Search API

To index the website contents on Algolia, you’ll need the search_api_algolia module. It is an integration module that lets you connect to the Algolia service via Drupal’s Search API. 

Download and enable the module. Once the module is enabled, you will need to create a server and index:

  • Go to  Configuration -> Search and metadata -> Search API
  • Click Add Server and add Server Name
  • Choose Algolia as the backend
  • In the Configure Algolia backend, you will need the Application ID and the API key. For these, you can go back to the Algolia site and click on User Name on the top right side of the page and click on Settings again.
  • Click on API Keys

 

  • Now, copy and paste the Application ID and Admin API Key from the dashboard.
  • Click Save.

Now let’s create an Index for our Search Server. For that Click on Add Index.

  1. Add Index Name and select the appropriate data sources that you want to index on Algolia.
  2. Under the Server option choose Algolia Search.
  3. Unde the Index options, enter the Algolia Index Name from the Algolia website.
  4. Click Save.
  5. In the fields tab, add required fields and Click Save.
  6. Go to the view tab and re-index all data.

Once the data is indexed, it is time to configure facets.

Configure Facets

Now let’s configure facets for filtering our search results by clicking on Facets in the Configuration tab.

Next, click on the Add an Attribute button available in the Attributes for faceting section as shown below.

 

In the same way, you can also configure pagination options for your search functionality.

*Statistics References Final thoughts

In today’s section, you saw how we configured the Algolia dashboard to create an index and added configuration to our Algolia index. We also added a Search API server and configured an index in our Drupal site to index our site contents on Algolia Server. In the next chapter, you will learn how to display Algolia search results on your Drupal website using Algolia’s UI Library InstantSearch. So stay tuned! Don’t forget to subscribe to our newsletter to get the latest weekly articles in your inbox.

Drupal 9 Drupal 9 Module Drupal Development Drupal Planet

Leave us a Comment

  Recent Blogs Image How to implement Algolia Search in Drupal 9 (Part 1) Image The Ultimate Guide to Jumpstart your Drupal Contribution Journey Image An Interview with GoodFirms: Ashirwad Shetty, Specbee’s CEO, shares the company’s insights Want to extract the maximum out of Drupal? TALK TO US Featured Success Stories

Upgrading and consolidating multiple web properties to offer a coherent digital experience for Physicians Insurance

Upgrading the web presence of IEEE Information Theory Society, the most trusted voice for advanced technology

Great Southern Homes, one of the fastest growing home builders in the United States, sees greater results with Drupal 9

View all Case Studies

Talking Drupal: Talking Drupal #363 - Working Within Your Values

3 weeks 1 day ago

Today we are talking about Working Within Your Values with Cathy Theys & Tess Flynn.

www.talkingDrupal.com/363

Topics
  • What guides our choices?
  • How to maintain values at work
  • Matching values with your company
  • How to approach conflict or misalignment
  • How to consider or change previous choices
  • Maintaining values for smaller conflicts
Resources Guests

Tess Flynn - https://deninet.com/

Hosts

Nic Laflin - www.nLighteneddevelopment.com @nicxvan John Picozzi - www.epam.com @johnpicozzi Cathy Theys - @YesCT

MOTW

Representative Image Allows you to define representative image or media fields for entities like nodes, taxonomy terms and the like. These can then be used in Open Graph meta tags (via tokens); as fields in views; or embedded as tokens. The media module is also supported. A default image can be defined for those entities without images.

PreviousNext: Join Us In Person at the DrupalSouth 2022 Code Sprint!

3 weeks 1 day ago

PreviousNext are proud to be sponsoring the first in-person code sprint since 2019 at DrupalSouth Brisbane on Friday 21st October 2022. Here's some tips to get you ready to roll on the day.

by kim.pepper / 5 September 2022 How to take part

When you register for DrupalSouth Brisbane, please make sure you tick the box that you'll be attending the sprint. Numbers are currently limited to 40 people based on the room that's been hired, so registering is essential to ensure we have enough space for everyone. 

What is a Sprint?

Drupal is open-source, and relies on the contributions of organisations and individuals to keep it constantly improving. A sprint is a way to focus efforts for single day to really move things forward and make real progress.

Drupal contribution is way to get recognition in the community for your individual or your organisation's expertise. In addition, the planned Certified Partner Program will require a certain level of contribution to gain certification, so there are real benefits in coming along and getting involved.

New to Drupal Sprints? We have a number of recorded sessions from the last sprint that provide a great introduction to get you ready before the day.

 

The DrupalSouth Sprints will be In-Person

Sprints are a great place to put a face to a name, and discuss common interests. Sprint tables are loosely structure by topic. e.g. Bug Smash, Media, Drupal 10 porting. Find a table that is working on an area you are interested in and introduce yourself!

We’ll use #australia-nz Drupal Slack as the main communication channel.  Attendance is free and not contingent on having attended the DrupalSouth conference.

For the majority of the day, we’ll be using Slack threads to keep track of sprint topics and reduce the noise in the main channel.

Join us on Slack

If you haven’t already done so, now is a great time to sign up and join the Australian / New Zealand Drupal community in Slack. Instructions for how to join are here: https://www.drupal.org/slack

How to contribute

Sprint day is not just for developers! Contribution comes in many forms. If you’re interested in the different ways you can contribute to this amazing project, see the list of contributor tasks: https://www.drupal.org/contributor-tasks

Tagging issues to work on

If you want to see what might be an interesting issue to work on, head over to the Drupal.org Issue Queue and look for issues tagged with 'DrupalSouth'. These are issues that others have tagged.

You can also tag an issue yourself to be added to the list.

Set Up a Development Environment

There is more than one way to shear a sheep, and there is also more than one way to set up a local development environment for working on Drupal.

If you don't already have a local development environment setup, we recommend using Docker Compose for local development - follow the instructions for installing Docker Compose on OSX, Windows and Linux.

If you don't already have a local development environment for Drupal contribution, a handy starter project can be set up using the following:

composer create-project mstrelan/drupal-contrib

See the README.md for more details: https://github.com/mstrelan/drupal-contrib 

If you have any issues, join us on Drupal slack in the #australia-nz channel beforehand and we'll be happy to answer any questions you might have.

Install dreditor browser extension

Dreditor is a browser extension that makes it easier to review patches on Drupal.org. Its a must for anyone contributing to Drupal.

There are versions for Firefox and Chrome.

Find Issues to Work On

If you want to see what might be an interesting issue to work on, head over to the Drupal.org Issue Queue and look for issues tagged with 'DrupalSouth'. These are issues that others have tagged.

You can also tag an issue yourself to be added to the list.

Chatting directly with fellow contributors is a great opportunity to have discussions and put forward ideas. Don't feel like you need to come away from the day having completed lines and lines of code.

Drupal 10 Project Porting

Drupal 10 will be released on 14 December 2022, so now is the time to port contrib modules and themes. This is a great task for those who maybe new to sprint days, and want to make a real impact. For more information see the Drupal 10 Porting Event Guide.

Code of conduct

To provide a safe and inclusive environment, the sprint day will abide by the DrupalSouth Code of Conduct: https://drupalsouth.org/code-of-conduct

We look forward to seeing you all there!

Tagged DrupalSouth, Code Sprint
Checked
2 hours 31 minutes ago
Drupal.org - aggregated feeds in category Planet Drupal
Subscribe to Drupal Planet feed