uuid: - value: af1271f1-d7b4-446b-8fb0-1d94eee5846f langcode: - value: en type: - target_id: daily_email target_type: node_type target_uuid: 8bde1f2f-eef9-4f2d-ae9c-96921f8193d7 revision_timestamp: - value: '2025-05-11T09:00:26+00:00' revision_uid: - target_type: user target_uuid: b8966985-d4b2-42a7-a319-2e94ccfbb849 revision_log: { } status: - value: true uid: - target_type: user target_uuid: b8966985-d4b2-42a7-a319-2e94ccfbb849 title: - value: | Open-source encourages more open-source created: - value: '2023-12-05T00:00:00+00:00' changed: - value: '2025-05-11T09:00:26+00:00' promote: - value: false sticky: - value: false default_langcode: - value: true revision_translation_affected: - value: true path: - alias: /daily/2023/12/05/open-source-encourages-open-source langcode: en body: - value: |
In yesterday's email, I mentioned the Private Message Queue module - a contributed Drupal module we wrote for a project as part of a contribution-first workflow.
In our experience, doing that and releasing Private Message Queue as its own open-source project encouraged more open-source contributions.
We started to ask questions like, "Which user should the messages be sent from?".
This led us to create the System User module.
Inspired by system users in Linux, it provides a way to identify and retrieve system users that aren't tied to individuals' accounts and without relying on "magic" user IDs.
But what if a website doesn't have a system user?
This led to the Null User module.
Following the Null object pattern, if there isn't a system user, instead of returning NULL
or FALSE
, you return a null user that you use in the same way, though they'll have default empty values and won't perform any actions.
This pattern simplifies your code as you don't need to check for NULL
or FALSE
values.
If I remember correctly, as part of the project, we created and released around ten new contributed modules to Drupal.org.
We were able to move straight onto the next phase of the project.
We didn't need to clean them up or refactor them beforehand. We didn't need to dedicate any additional time as they were already released.
format: full_html processed: |In yesterday's email, I mentioned the Private Message Queue module - a contributed Drupal module we wrote for a project as part of a contribution-first workflow.
In our experience, doing that and releasing Private Message Queue as its own open-source project encouraged more open-source contributions.
We started to ask questions like, "Which user should the messages be sent from?".
This led us to create the System User module.
Inspired by system users in Linux, it provides a way to identify and retrieve system users that aren't tied to individuals' accounts and without relying on "magic" user IDs.
But what if a website doesn't have a system user?
This led to the Null User module.
Following the Null object pattern, if there isn't a system user, instead of returning NULL
or FALSE
, you return a null user that you use in the same way, though they'll have default empty values and won't perform any actions.
This pattern simplifies your code as you don't need to check for NULL
or FALSE
values.
If I remember correctly, as part of the project, we created and released around ten new contributed modules to Drupal.org.
We were able to move straight onto the next phase of the project.
We didn't need to clean them up or refactor them beforehand. We didn't need to dedicate any additional time as they were already released.
summary: null field_daily_email_cta: { }