diff --git a/content/meta/index.json b/content/meta/index.json index 28385c4e7..30383f3b9 100644 --- a/content/meta/index.json +++ b/content/meta/index.json @@ -6477,5 +6477,12 @@ ], "path_alias.974d722a-7527-4f9a-b06b-52db91ef9e11": [ "node.d90b125f-46e6-4726-8e28-fbf882ccca46" + ], + "node.0c66d8de-6dbd-4ab1-b40f-29276d7af5f1": [ + "user.b8966985-d4b2-42a7-a319-2e94ccfbb849", + "node.3074e1e9-c691-4f73-a71c-cfe5920f884e" + ], + "path_alias.baec19d7-cb5e-4ba8-a181-15aa7cd85aee": [ + "node.0c66d8de-6dbd-4ab1-b40f-29276d7af5f1" ] } \ No newline at end of file diff --git a/content/node.0c66d8de-6dbd-4ab1-b40f-29276d7af5f1.json b/content/node.0c66d8de-6dbd-4ab1-b40f-29276d7af5f1.json new file mode 100644 index 000000000..f551b5735 --- /dev/null +++ b/content/node.0c66d8de-6dbd-4ab1-b40f-29276d7af5f1.json @@ -0,0 +1,98 @@ +{ + "uuid": [ + { + "value": "0c66d8de-6dbd-4ab1-b40f-29276d7af5f1" + } + ], + "langcode": [ + { + "value": "en" + } + ], + "type": [ + { + "target_id": "daily_email", + "target_type": "node_type", + "target_uuid": "8bde1f2f-eef9-4f2d-ae9c-96921f8193d7" + } + ], + "revision_timestamp": [ + { + "value": "2025-06-20T22:34:48+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": "Refactoring, semantic versioning and backward compatibility" + } + ], + "created": [ + { + "value": "2025-06-16T22:32:33+00:00" + } + ], + "changed": [ + { + "value": "2025-06-20T22:34:48+00:00" + } + ], + "promote": [ + { + "value": false + } + ], + "sticky": [ + { + "value": false + } + ], + "default_langcode": [ + { + "value": true + } + ], + "revision_translation_affected": [ + { + "value": true + } + ], + "path": [ + { + "alias": "", + "pid": null, + "langcode": "en" + } + ], + "body": [ + { + "value": "There's an approach to refactoring I've seen in a number of open source projects, including Symfony and Drupal.\r\n\r\nIn Drupal 7 and earlier, there were only minor version releases.\r\n\r\nDrupal 7 started at 7.0 and ended at 7.103.\r\n\r\nCode could be refactored, but it still needed to be backward compatible so existing code couldn't be removed.\r\n\r\nNow, many projects have adopted semantic versioning that contain major, minor and patch versions, like Drupal 11.2.0.\r\n\r\nMinor and patch versions are backward compatible, but major versions - such as Drupal 10 and 11 - can break backward compatibility.\r\n\r\nThis means old code can be removed and the codebase can be tidied.\r\n\r\nA good example of this was the `drupal_set_message()` function that was replaced by the `Messenger` service.\r\n\r\nThe original code was moved, the function was changed to use the new service and the function was marked as deprecated.\r\n\r\nIf you used it, you were notified it would be removed in the next major version.\r\n\r\nIt still worked so was still backward compatible.\r\n\r\nWhen the next major version was released, the old function was removed as backward compatibility could be broken.\r\n\r\nI like this approach as it means code can be refactored and improved, users are given time to update their code, new features can be continuously added, and the main codebase is kept clean and avoids a lot of legacy code.", + "format": "markdown", + "processed": "
There's an approach to refactoring I've seen in a number of open source projects, including Symfony and Drupal.<\/p>\n
In Drupal 7 and earlier, there were only minor version releases.<\/p>\n
Drupal 7 started at 7.0 and ended at 7.103.<\/p>\n
Code could be refactored, but it still needed to be backward compatible so existing code couldn't be removed.<\/p>\n
Now, many projects have adopted semantic versioning that contain major, minor and patch versions, like Drupal 11.2.0.<\/p>\n
Minor and patch versions are backward compatible, but major versions - such as Drupal 10 and 11 - can break backward compatibility.<\/p>\n
This means old code can be removed and the codebase can be tidied.<\/p>\n
A good example of this was the The original code was moved, the function was changed to use the new service and the function was marked as deprecated.<\/p>\n If you used it, you were notified it would be removed in the next major version.<\/p>\n It still worked so was still backward compatible.<\/p>\n When the next major version was released, the old function was removed as backward compatibility could be broken.<\/p>\n I like this approach as it means code can be refactored and improved, users are given time to update their code, new features can be continuously added, and the main codebase is kept clean and avoids a lot of legacy code.<\/p>\n",
+ "summary": ""
+ }
+ ],
+ "field_daily_email_cta": [
+ {
+ "target_type": "node",
+ "target_uuid": "3074e1e9-c691-4f73-a71c-cfe5920f884e"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/content/path_alias.baec19d7-cb5e-4ba8-a181-15aa7cd85aee.json b/content/path_alias.baec19d7-cb5e-4ba8-a181-15aa7cd85aee.json
new file mode 100644
index 000000000..d59b6a07e
--- /dev/null
+++ b/content/path_alias.baec19d7-cb5e-4ba8-a181-15aa7cd85aee.json
@@ -0,0 +1,27 @@
+{
+ "uuid": [
+ {
+ "value": "baec19d7-cb5e-4ba8-a181-15aa7cd85aee"
+ }
+ ],
+ "langcode": [
+ {
+ "value": "en"
+ }
+ ],
+ "path": [
+ {
+ "value": "\/node\/0c66d8de-6dbd-4ab1-b40f-29276d7af5f1"
+ }
+ ],
+ "alias": [
+ {
+ "value": "\/daily\/2025\/06\/16\/refactoring-semantic-versioning-and-backward-compatibility"
+ }
+ ],
+ "status": [
+ {
+ "value": true
+ }
+ ]
+}
\ No newline at end of file
drupal_set_message()<\/code> function that was replaced by the
Messenger<\/code> service.<\/p>\n