Drupal Association blog: Open Source Unity: Joint Concerns Over the Proposed Cyber Resilience Act in the EU

It should not come as a surprise that open source projects would act collaboratively.  But it’s somewhat of a first, in my understanding, that Open Source Matters, Inc. (Joomla), Typo3, WordPress, and the Drupal Association have issued a joint letter to the legislators of the European Union raising concerns with the proposed Cyber Resilience Act. And the concerns raised by our four organizations, whose communities collectively serve over 50% of the European websites, are significant enough to warrant such a first.

The impact of the regulation as proposed would undermine effective software practices in its ban on “unfinished software”, chill the contributions of tens of thousands of developers who make free contributions to open source software due to an expansive definition of “commercial activity”, and would impose one-size fits all compliance costs likely causing development to gravitate to large, for-profit firms that can absorb the costs.

Read the letter here

While the rule’s impact would be extremely negative, the opportunity we have before us is positive. This rule provides an opportunity for open source communities across Europe (and the globe!) to explain the unique role that FOSS plays in the software that underpins much of the web and to develop a model for how regulation should be applied to it. It is an opportunity for our communities to learn how to best work together in making this case, as the four signatories on this letter have begun to do. Finally, it’s an opportunity to educate legislators and policy-makers as to the shared values that open source communities have with the European Union.

The Drupal Association engaged in this issue because we recognized that the Cyber Resilience Act is the current issue at hand, but not the only one. The European Union’s parliament is considering proposed changes to the Product Liability Directive this Fall that could impose a strict liability standard. And beyond that lies A.I. and patent rules.

So we embrace this opportunity to collaborate with Joomla, Typo3, WordPress, and hopefully other open source initiatives to credential FOSS’ role in the E.U. regulatory landscape. As experts in the field, we embrace the responsibility to educate and provide support for our online ecosystem. We also look forward to engaging with and serving our Drupal community members in Europe.

LN Webworks: Challenges in Upgrading Drupal & Advance Solutions: A 2023 Mini-Guide

Image removed.

Upgrading Drupal can be quite a journey, and it's natural for organizations to encounter various challenges along the way. Despite our best efforts in planning and execution, the migration process might throw unexpected curveballs that could slow us down or temporarily stall progress. 

In this blog, we'll look at some of the common hurdles faced during a Drupal migration and offer helpful tips to navigate through them successfully. Let's dive in and explore how we can make this migration adventure.

Pierce Lamb: Improving GPT-4 Function Calling with an Explanation Parameter

Image removed.Prompt: “An AI that has automated the world”

I’ve been building ChatGPT-powered features since its release and have been absolutely amazed by what it can do. Even though I’ve been interacting with GPT every day for a while now, oftentimes its outputs still feel like magic. For months, creating inputs (prompts) for GPT was a fun new way to program this tool, but handling its output was a mess. In my prompting, I experimented with various ways to steer its output to give it structure and used basic string functions to slice and dice the results, but it never worked 100% of the time. I evaluated a number of tools that tried to fix this problem, but none of them quite fit our use case. All of this changed dramatically with the advent of Function Calling. For those that have been living in a cave, OpenAI fine-tuned GPT3.5-turbo and GPT-4 so that these models can accept a list of functions, defined using JSON schema, as input along with a prompt. The model(s) can then select a function and call it as output. That is, GPT will return an output that answers one’s prompt, but in the form of a function call with the function name and inputs for its parameters. Thus, a program accepting that output can choose to call that function with those inputs and return the output to GPT for further processing. This seemingly simple functionality was the basis for an entire ecosystem of ChatGPT “agents” that existed prior to OpenAI rolling out function calling; now a user can build a custom agent using just the OpenAI libraries.

I suspect, however, that, like me, a large majority of people using function calling are using it to get structured output out of GPT. For many, there are stomach-turning security issues with allowing a LLM to execute code in your program, but for receiving structured output, function calling is extremely useful. In this blog post I will demonstrate how to use function calling to receive structured output and that one small improvement — adding an explanation parameter — appears to improve the outputs of function calls and helps to debug the prompts that generate them significantly.

If you’re trying to solve a problem with ChatGPT, at some point in time you’ve googled the phrase “prompt engineering.” And, if you got lucky, you came across Lilian Weng’s post on the topic that saved you from having to read a bunch of verbose academic papers. Lilian does a fantastic job at explaining the technical side of prompt engineering and summarizing the results of academic papers; her work can immediately improve your prompting. However, I want to diverge for a second to explain how I often think about prompting LLMs that has recently helped me.

Imagine you’ve hired a high school or college graduate that excelled in all language or liberal arts classes. They possess an elite ability to apply language reasoning skills to any tasks that involve language. However, for your specific task, they lack any prior context on how to perform the task. Thus, for them to succeed at performing your task, you can either teach them all the context you’ve learned about the task, or you can give them a set of criteria to follow where all they need to perform the task is to apply the criteria and use their language reasoning skills.

Since you’ve hired this person with no background or context on what you do, one thing you might do to verify the results they produce is ask them to provide a chain of reasoning or rationale for why they arrived at the answer they did. For the new employee, being forced to write down a chain of reasoning will likely help them arrive at an accurate answer. For you, their manager, it will help you to understand if they’ve arrived at an accurate answer and if there are any gaps or issues in the criteria you provided them. Furthermore, for any third party you might show their work, it would reduce any confusion about the answer by seeing an explanation of how the answer was found.

Of course, in our example the employee is ChatGPT and this style of requesting a chain of reasoning is now a common technique for improving results. Chain-of-thought (CoT) prompting was introduced by Wei et al. 2022 as well as Kojima et al. 2022, Zhou et al. 2022 and later made very popular in the ReAct paper by Yao et al. 2023. In its most basic form, simply asking ChatGPT to think step-by-step before providing an answer fits this bill, though these papers introduce a much more nuanced perspective.

Prior to function calling, I was using chain-of-thought prompting not only to obtain more accurate answers, but also to debug edge cases in my prompts. When you’re providing ChatGPT criteria to follow to help create an answer, oftentimes there will be an edge case you have not considered and ChatGPT’s explanation will show the gap in your criteria. This explanation would be provided in the text blob that came back from ChatGPT. If you just stored the raw prompt and raw answer and examined these when your provided answer didn’t make much sense, this explanation would oftentimes elucidate the gap in your criteria. However, when you start using function calling, you likely will not be getting a text blob back.

Here are a few examples from my work with ChatGPT:

  • Return the top-k most similar questions to a given question,
  • Create a synthesized answer between two answers to the same question,
  • Find a specific column type in tabular data,
  • Answer a new question based on similar previous questions’ answers,
  • Answer a question using related documentation to find the answer.

In all of these examples, once you move to function calling, ChatGPT is going to start filling a parameter with its answer to these requests. However the explanation of how it arrived at that answer, which was regularly a feature of the old text blob, is lost. As a result of this, I started adding an explanation parameter to every single function call and modifying the prompt so ChatGPT knew to dump an explanation into this parameter. Not only did this subjectively seem to improve the answers overall (in the same way CoT is supposed to), it also provided me with a way to debug my prompts when answers went haywire. Let’s look at a more concrete example to better understand what I mean.

We will look at an example of answering a new question based on similar questions’ answers. Note that “similarity” is measured via an approximate nearest neighbors search over previous questions that have been embedded as vectors. Let’s take a look at the function call we are sending to GPT:

{
"name": "get_answer_and_explanation",
"description": "Returns the answer to the new question and an explanation of how the answer was created",
"parameters": {
"type": "object",
"properties": {
"answer": {
"type": "string",
"description": "The answer to the new question",
},
"explanation": {
"type": "string",
"description": "An explanation of how the answer was created",
},
},
"required": ["answer", "explanation"],
},
}

As you can see, this is pretty straight forward. We just add a second parameter to the function call called “explanation” and give it a succinct description. GPT will create an answer to our new question, fill it in the answer parameter and then explain how it arrived at that answer in the explanation parameter. Next, let’s see how we connect this function call back to the prompt.

Recall that the goal is to steer ChatGPT and provide a list of criteria it can follow to utilize its incredible reasoning abilities without providing it a mass of in-context examples (my main reason for avoiding the latter is because of token rate limits). Here is the beginning of the system prompt:

You are a helpful assistant that answers questions about a company based on
similar questions the company has responded to in the past. Below are 5
questions the company has responded to in the past. After those 5 questions,
there will be a new question for you to answer.

This provides the most basic steering on the task ChatGPT is to perform. Next, also in the system prompt, we provide the list of criteria that will help it understand how to apply its reasoning abilities and adjudicate edge cases.

Please think step-by-step when answering the new question and use the criteria
listed below as guidelines for answering the new question:
a.) Use the old 5 questions and their responses as context to answer the
new question.
b.) The old 5 questions are sorted by similarity to your new question.
However, the most similar questions may not have the best responses
to answer your new question. Analyze the old questions and their
answers and then pick one of the following strategies for answering
the new question based on your analysis:
b1.) Two or more old questions are similar to the new question and have
good responses. Synthesize these responses into an answer for the
new question.
b2.) Two or more old questions are similar to the new question,
but their responses disagree or contradict each other.
Pick the response that answers the new question the best.
b3.) One old question has the best response for answering the new question.
Discard the other old questions and use that response to answer
the new question.
b4.) The old questions are sufficiently dissimilar to the new question,
answer the new question with “cannot be answered”
c.) Additional criteria on how to evaluate a response:
c1.) A good response is usually sentence(s) of English. Note it can contain
grammatical and spelling mistakes.
c2.) A good response could be considered a response to it’s question.
c3.) The voice of a good response should be written as if it is a
human at a company responding to the question. Sometimes it’s as
simple as “Yes” or “No” and other times it includes additional
information.

Now, I didn’t come up with 10 criteria in a vacuum. This list was built up over successive requests to ChatGPT and analysis of its responses. And, like I’ve already argued at length, the explanation parameter was the single best method for understanding what ChatGPT was doing and thereby enhancing this list of criteria. Finally, also in the system prompt, we provide formatting instructions which is what will help ChatGPT correctly call the function:

Your answer should be the answer to the new question and an
explanation of how you arrived at that answer that includes
your step-by-step reasoning using the criteria above.
Use this format:

Answer: <your-answer>
Explanation: <your-explanation>

You can see here that the end of the system prompt is what connects the whole prompt back up to the function call. Now GPT can easily see how its response to the prompt can match the function’s input parameters.

Given what we know about the function call and prompt, what are some examples of these explanations? Here is one of the more simple examples where GPT-4’s explanation provides so much more detail on how GPT-4 created the answer:

"answer": "Yes, our company does have cyber insurance.",
"explanation": "The new question is 'does your company have cyber insurance?'
The most similar old questions are 'does your company have cyber insurance?'
and 'how much coverage do you have in cyber insurance?' The responses to
these old questions confirm that the company does have cyber insurance.
Therefore, the strategy b3 is used: One old question has the best response
for answering the new question. The response to the old question 'does your
company have cyber insurance?' is used to answer the new question."

I find it so cool when GPT-4 highlights which strategy it’s chosen to create an answer:

“explanation”: “The new question is asking about the amount of coverage
the company has in cyber insurance. Looking at the old questions, question
2 and question 3 are the most similar to the new question and both provide
a clear response about the amount of coverage the company has in cyber
insurance. The company maintains a Cyber Liability with a combined limit
of $5,000,000 each occurrence and $10,000,000 annual aggregate. Therefore,
I used strategy b1, synthesizing these responses into an answer for the new
question.”

Here is another where it synthesizes across many questions:

“explanation”: “The answer is synthesized from multiple previous questions
and their responses. Questions 2, 3, 6, 8, 9, 11, 14, 17, 18, 19, 20, and 21
all provide information about the various tools and infrastructure pieces
that the company monitors. These responses collectively provide a
comprehensive answer to the new question.”

How about an older one where the explanation helped me to improve the list of criteria?

“answer”: “Cannot be answered.”,
“explanation”: “I apologize, but I cannot provide an answer based on the
given responses. The two answers provided are contradictory, and it is
unclear which one accurately reflects the types of hygiene maintenance
required for the company. Therefore, I cannot answer the question with
certainty.”

Without this explanation, I would have had no idea why GPT-4 was choosing Cannot be answered as the answer and likely not have been able to debug what was happening. This is a situation that is typical with function calling and why I think the `explanation` parameter is so helpful. It is easy to see how this would guide one to engineer the prompt differently. I hope this blog has shown how this small change to one’s function calls can improve quality-of-life with respect to ChatGPT outputs.

Finally, I should also address the paper “The Unreliability of explanations in Few-shot prompting for Textual Reasoning” by Ye & Durrett 2022. Here, the authors provided few-shot prompts to GPT3.5 that included explanations and found that when GPT3.5 hallucinated an answer it would often hallucinate an explanation that entailed that answer (it was less likely to produce an explanation that did not entail the answer). Any regular user of ChatGPT should know that it is possible for GPT to hallucinate its answer and explanation and so it’s always good to check an entire prompt and make sure this is not happening. That said, it is reasonable to presume that GPT-4 has gotten better at this sort of thing. Further, my instinct from my usage of GPT models is that few-shot examples often cause GPT to try and fit its responses to these examples at the expense of hallucinations. That is, GPT would rather produce an explanation that more closely models the few-shot explanations and is a hallucination than one that does not model them and is factually accurate. I do not have any research to back up this instinct so take it with a grain of salt. At any rate, one key difference between the paper and what I’ve described above is that there are no few-shot examples on the explanation parameter; we only attempt to constrain it via the criteria list. My subjective take from repeated use of this setup is that GPT-4’s explanations appear to always entail the answer and almost always cite which criteria it has chosen to create the answer which raises confidence about factual accuracy. But any GPT user should always be checking answers and explanations regularly for hallucinations.

Image removed.

Matt Glaman: Speed up developer onboarding with DDEV snapshots from your CI

In my previous blog post, Using DDEV snapshots to speed up GitHub Actions workflows, I explained how DDEV snapshots can be used to speed up continuous integration workflows for end-to-end tests. A workflow runs on the main development branch to create a DDEV snapshot to be cached and reused by subsequent jobs. If that cache can speed up continuous integration workflows, why can't it also speed up developer onboarding?

It is actually pretty simple! You will need somewhere to upload the snapshot archive, such as AWS S3 or some other storage. I leverage S3 for database dumps that I re-use with Tugboat so that a sample database can be seeded. I just never put it all together: use your CI to populate the dump artifact and automatically upload it so it can be shared across your team! 

Specbee: How to showcase your content as Page and Block Views in Drupal

Imagine you are responsible for managing the content on your Drupal website. Now your task today is to create a “Related Blogs” section for your Blog pages that will display 5 blog posts that are related to the current blog post. How would you do that? Easy! With the help of the Drupal Views module! All you need to do is access the views interface, create a new view, configure it, add the view block in whichever page you want, preview, and save!  But the Drupal Views module gives you so much flexibility and customization options that we had to write a full article about it. Explore the amazing module in depth in this article dedicated to the power of Drupal Views. What does the Drupal Views module do The Views module is a versatile and powerful tool that allows you to query your content. This means you don’t need to know how to frame an SQL query and execute it. You can simply get and display the data you want by creating a view! After executing the query, the content can be displayed in a flexible and customizable manner, as a page or block that can be themed according to the design. It simplifies the process of creating dynamic lists, grids, and displays of content without requiring any coding expertise. It is a part of Drupal core in the latest Drupal versions and is enabled by default. How to create a Basic page using Views Creating a Basic page using Views in Drupal is a straightforward process that allows you to display content in a structured and customizable format. Creating a new view 1. Hover on Structure on the admin toolbar then on “Views” and click “Add view”.2. Now a views creation page will open with 4 sections. View basic information - Add name and description View settings - Choose the content show type. By default it is “Content”. Now choose the type of content (Content type). You can also choose tagged with and sorted by but these are not mandatory. Page Setting - A view page can be created by adding a name, path, format, display to item, menu link, and an RSS feed. Block Setting - A block can be created with a block title, block display setting, item per page, and pager 3. After filling in details according to step-2, Click on the Save and Edit button. Now the View display page will open. The display page has a lot of other options so it is divided into 3 columns (as shown in the screengrab below). Configuring the View display Once you create a view, it is now time to configure it. In the Views editing interface, you'll see several sections to customize your view's settings. 1. Title - Title of the View2. Format - Select how you want the basic page content to be displayed   A. Format: View provides 4 type formats - Grid, HTML List, Table, and Unformatted list.   B. Show: The default show type are Content, fields and Search result. Each show type provides its own settings. These settings are very useful for managing content with views. The format and format show type may add more according to the available contributed module.3. Fields - The section will be active when we choose the format as a field from the format section. The fields can be added by clicking on “Add field”. When clicking on “Add field”, a popup will open and the required field can be searched and added. After adding a field you can configure it.  When clicking on the field name, a popup will open with the following options: Create a label: If you want to add a label then check it and write a label Exclude from display: If you do not need to render on the view page or block. Formatter: You can set a formatter for this field. A list of formatters are provided by default and it can extend with a contributed module. Link to text - A link will get added to this field when it renders. Style Settings - HTML Markup and style classes can change. Rewrite Results - This section provides a lot of features to manipulate the view output:i) Override the output of this field with custom textii) Output this field as a custom linkii) Trim this field to a maximum number of charactersiv) Strip HTML tagsv) Remove whitespacevi)  Convert newlines to HTML
tags No results behavior: When the field does not have any value then you can show a custom message or hide the field. Administrative title - The title which will show only to admin users. 4. Filtered Criteria - You can add fields in the Filtered criteria which will be used to filter content. Each field provides tons of configurations that help manage conditional filters. For example, two content types5. Sort Criteria - You can show the content in ascending and descending order using this file.6. Page Setting - This section helps add a path, add this page to the menu, and a menu tab.7. Header Section - Add fields in the Header of the views page/block. The most common field is “Text area” which is used to add static makeup content.8. Footer Section - Just like the header section, you can add a field here as well.9. No Result Behavior - If the views do not have any content then a custom message can be displayed by adding a markup field.10. Pager - The Pager and ‘more link’ can be added or removed. Also, different type pager options are provided by default view. You will also find many contributed modules to change the looks and features of the pager. Pager options: Display a specified number of items Display all items Paged output, full pager Paged output, mini pager 11. Advanced 1. Relationships: allows you to create connections between different entities (content types, users, taxonomy terms, etc.) and access their fields in a view. To set up a relationship in Drupal Views, follow these steps: Create a new view or edit an existing view in the Views interface. In the view's configuration, locate the "Advanced" section and click on it to expand the options. Click on the "Add" button next to the "Relationships" fieldset. A dialog box will appear with a list of available relationships based on the selected base table (content type). You can choose a relationship based on the entity you want to establish a connection with. For example, if you want to display a field from a referenced entity, you would select the appropriate relationship related to that entity. After selecting a relationship, click on the "Apply" button to save it. Once the relationship is added, you can now add fields, filters, or contextual filters that use the newly established relationship. To add a field related to the relationship, go to the "Fields" section, click on the "Add" button, and you will see new field options available under the relationship's heading. Choose the desired field and configure its settings. To add a filter using the relationship, go to the "Filters" section, click on the "Add" button, and select the filter criteria from the available options under the relationship's heading. Configure the filter settings as needed. Similarly, you can add contextual filters that use the relationship to dynamically filter the view results based on the context provided. Save the view and preview it to see the results of the relationship-based configuration. 2. Contextual filters (previously known as "Arguments") are used to filter view results dynamically based on contextual information, such as the value in the URL or other contextual inputs. Contextual filters allow you to create more personalized and targeted views by leveraging the provided context. Click on the “Add” button of the Contextual filter A dialog box will appear with a list of available contextual filters based on the selected base table (content type). You can choose a contextual filter based on the field or taxonomy term you want to use for filtering. Select the desired contextual filter and click on the "Apply" button to add it. After adding the contextual filter, you can configure its settings. Save Contextual filters are particularly useful when you want to create dynamic and personalized views that change based on the context provided. They enable you to build powerful views that respond to user interactions and provide tailored content. 3. Exposed Form: An exposed form allows users to interactively filter and modify the results of a view directly from the front end of your website. It provides a user-friendly interface that enables visitors to refine the displayed content based on their preferences. 4. Other Machine Name: Views machine Administrative comment: A comment can be written for other developers to better understand the functionality. Use AJAX: Turn on/off Ajax Contextual links: Show or hide contextual links on the view Use aggregation: When you have a duplicate entry in views, it can aggregate. CSS class: A custom class can be added on the wrapper div of view. Creating a Views block display Now circling back to my first example of creating a view for a Related blogs section where you can add this as a block to any page. Usually used in the Articles section. Drupal Views block display is one of the available output formats for your content listing or data display. A block display allows you to create a reusable content block that can be placed in various regions of your website's layout, such as sidebars, headers, footers, or any other block region supported by your theme. Let’s now look at how you can create a view block display. Step 1: Create a View block If you are creating a new view, click the "+ Add" button next to "Displays" to add a new display. Select "Block" as the display type from the options presented. Step 2: Configure the view Similar to what we did while creating a page view, you can configure the view block too. Give your block display a name and adjust other settings specific to the block format, such as the block title, number of items to display, and more. Set up your filters, sorts, and any field formatting specific to the block display and save the block. Step 3: Add the block To be able to view the block in all pages (Global) or a specific page/path, you will need to add it in the Block Layout. After saving the view, the block display will now be available. Go to Structure > Block layout (admin/structure/block) to manage your blocks. Step 4: Place the block When you click on the place block button, a popup will open. Now, find the view block you just created in the list of available blocks, and then place it in the desired region of your website's layout. You can further control the visibility of the block by using the "Visibility settings" provided in the block configuration. Once you have placed the block in the desired region and adjusted its visibility settings, click the "Save blocks" button to apply the changes Now, the Drupal Views block display will be visible in the specified region of your website, presenting the content you configured in the view. As you make changes to the view configuration, the block display will automatically reflect those changes, making it a powerful and flexible way to present dynamic content throughout your website. Final Thoughts The Drupal Views module offers more types of views than just the common “Page” and “Block” views. For example, there’s the Attachment view that can be combined with other views, a Feed view where you can add RSS feeds of your content, a table view allowing you to display content in a tabular format, and much more! There are many contributed modules to extend these features as well. Want to stay updated with the latest in Drupal and Drupal-related insights? Subscribe to our newsletter and get weekly updates delivered to your inbox!

Golems GABB: The Future of Web Design: Predictions and Trends for 2023

The Future of Web Design: Predictions and Trends for 2023 Editor Tue, 07/25/2023 - 15:39

Every new year brings new challenges and opportunities for creativity and experimentation with web design. What will be the leading web design trends in 2023? Let's explore this together and discover what new predictions and trends for 2023 will help websites stay relevant and appealing to users. They will give you a clear idea of what will happen in website design and how to prepare for change. Are you ready to embark on a journey into web design? Are you ready to discover the latest trends shaping the Internet's future? Let's explore together!

Top 15 Web Design Trends for 2023

Web design trends can change due to emerging design technologies and practices. This article looks at the most popular web design trends in 2023. In our opinion, these trends will continue to be relevant until 2025.

Talking Drupal: Talking Drupal #408 - The Drupal Association

Today we are talking about The Drupal Association with Tim Doyle.

For show notes visit: www.talkingDrupal.com/408

Topics
  • Tell us about yourself Tim
  • Why Drupal
  • What perspective do you bring
  • Strategic plan
  • Leadership
  • Measurements
  • Drupal the project vs Drupal the community
  • Where will the DA be in 5 years
  • Will Drupal be around in 20 years
  • Favorite aspect of the strategic plan
Resources
  • Director of Philanthropy
  • Burnout
  • Pitch-burgh
  • Alex Moreno
  • New Core Product Manager
  • Tenure of ED/CEOs since formation of DA
    • Jacob Redding
      • March 2010 - February 2013
      • ~3 years
    • Holly Ross
      • February 2013 - May 2016
      • 3 years 3 months
    • Megan Sanicki
      • May 2016 - September 2018
      • 1½ years
    • (interim) Tim Lehnen
      • September 2018 - June 2019
      • 9 months
    • Heather Rocker
      • June 2019 - March 2022
      • 2 years 9 months
    • (interim) Angie Sabin
      • March 2022 - October 2022
      • 8 months
    • Tim Doyle
      • October 2022 - Present (July 2023)
      • 9 months
    • As of February 2026 Tim will be longest-tenured
Guests

Tim Doyle - @TimDoyleMPA

Hosts

Nic Laflin - www.nLighteneddevelopment.com @nicxvan John Picozzi - www.epam.com @johnpicozzi Tim Plunkett - @timplunkett

MOTW Correspondent

Martin Anderson-Clutz - @mandclu ActivityPub

  • Brief description:
    • Implements the ActivityPub protocol on your site, so readers can follow and respond to content on Fediverse sites like Mastodon, and in the future maybe Threads?
  • Brief history
    • How old: created in Feb 2019
  • Versions available:
    • 1.0.0-alpha17, works with Drupal 9.4 and 10, release in Mar 2023
  • Actively maintained
  • Minimally maintained
  • Number of open issues:
    • 43 open issues, only 2 bugs but 1 of those fixed in the past week
  • Usage stats:
  • Maintainer(s):
    • Created and maintained by swentel, who also created a module for publishing Drupal content to the Nostr network
  • Module features and usage
    • Effectively allows your site to act as a Fediverse server: Mastodon, Pleroma, Picelfed, etc.
    • Users who enable ActivityPub for their account have created @user@domain in the Fediverse
    • At that point the Drupal UI provides some common features of a social client: notifications about subscribers, and so on
    • Provides plugins to define user actions. Default plugins are ‘Accept’, ‘Follow’, ‘Delete’, ‘Undo’ and ‘Inbox reply’, but a site could add or enable others
    • Based on the documentation it sounds like if you update an entity (e.g. change the title) you can trigger an Update activity, which is in stark contrast to a certain bird platform
    • There’s quite a bit more in the module’s README file if anyone wants to better understand its capabilities

The Drop Times: The Power of Creativity with Drupal

Welcome to our latest newsletter, where we embark on an exciting exploration of creativity and its transformative influence. Creativity is the spark that ignites innovation, shaping our world and driving positive change. This edition delves into how embracing creativity can enrich our personal and professional lives, fostering problem-solving skills, adaptability, and resilience. Whether you're an artist, a business professional, or a developer, tapping into your creative potential can unlock boundless opportunities for growth and excellence.

Creativity knows no boundaries, and fostering a culture of innovation is vital for businesses and organizations. We'll share insights on creating a work environment that encourages out-of-the-box thinking, collaboration, and the pursuit of visionary ideas. Witness the magic unfold as creativity becomes the cornerstone of your success, propelling your team to new heights of achievement.

At the heart of this newsletter lies the powerful content management system, Drupal. Drupal empowers developers to craft exceptional digital experiences, giving them the canvas to bring their creative visions to life. Discover how Drupal's flexibility and versatility allow businesses to unleash their creativity and create websites and applications that captivate audiences and drive growth. From seamless user experiences to visually stunning designs, Drupal is where technology meets creativity.

As we celebrate the wonders of creativity, we also pay tribute to inspiring innovators and visionaries who have left an indelible mark on humanity. Throughout history, creative geniuses have reshaped the course of our world with their groundbreaking ideas and inventions. Their stories serve as a reminder of the incredible impact that creativity can have on society.

Let's delve into the news stories from TheDropTimes from the last week and explore how creativity meets technology with Drupal.

In the past week, TDT published two exclusive interviews that shed light on inspiring individuals in the Drupal community. The first interview features Jeremy Chinquist, where we delve into his project management expertise and dedication to fostering the Drupal community. The second interview introduces Nico Grienauer, CEO of Acolono and lead organizer of Drupal Developer Days 2023, Vienna. In this interview, Nico discusses the importance of non-code contributions and what to expect from Drupal Developer Day 2023.

In the pursuit of knowledge, Drupalize.me shares a comprehensive tutorial that equips Drupal site administrators with an overview of various contributed modules commonly used to monitor the performance of Drupal websites. Sparkfabrik's CTO shares insightful solutions to strengthen software supply chain security in JavaScript, Python, and microservices-based projects.

For those eager to be part of the Drupal community, DrupalCon Lille 2023 announces recipients of scholarships and grants. Learn more about the event and its exciting opportunities by clicking here. Exciting events await! Design4Drupal Boston celebrated its 15th anniversary at Salem State University from July 20-21, 2023. Click here to learn more about the event.

Pronovix shares valuable insights on the effective management of third-party dependencies in their latest blog post. Additionally, Chromatic introduces an open-source Drupal module and PHP library for seamless integration with Orange DAM. Be ahead of the curve with these game-changing innovations. Click here to know more.

Palantir.net unveils the revolutionary Drupal 10 Collaborative Text Editor, empowering developers with unprecedented customization and accessibility. Embrace the future of Drupal development with this cutting-edge tool.

Join the Spiceworks Partner Webinar on August 01 to learn how Bird's digital transformation with Drupal and Acquia revolutionized the customer experience - Click here for more information about the webinar.

Mark your calendars for D-BUG's monthly meetup in Bangalore on July 29, 2023. Explore Drupal and web tech, and network with like-minded professionals - Click here to learn more about the event.

Lastly, don't miss the insightful Future Zone Interview: Drupal Austria Chairman's Insights on Open Source Development. Embrace the spirit of open-source collaboration and gain valuable insights from industry leaders.

That's all for this week's newsletter. Stay inspired, stay creative, and let Drupal empower your innovation journey!

Kazima Abbas
Sub Editor, The Drop Times