{ "uuid": [ { "value": "391f650b-0f52-43f6-b3f3-bd7fbca1c11e" } ], "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:53+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": "The open-source-first development workflow\n" } ], "created": [ { "value": "2022-10-29T00:00:00+00:00" } ], "changed": [ { "value": "2025-05-11T09:00:53+00:00" } ], "promote": [ { "value": false } ], "sticky": [ { "value": false } ], "default_langcode": [ { "value": true } ], "revision_translation_affected": [ { "value": true } ], "path": [ { "alias": "\/daily\/2022\/10\/29\/the-open-source-first-development-workflow", "langcode": "en" } ], "body": [ { "value": "\n
Yesterday's email talked about writing reusable, framework-agnostic packages<\/a> but didn't mention where those packages could be located.<\/p>\n\n They could be kept within a private repository and still have the same benefits, such as re-usability for internal projects, but I like to open-source code as often as I can and make it available publicly to see and use.<\/p>\n\n My preference is to follow an open-source-first workflow, identify which parts of a solution can be open-sourced and create them as open-source libraries or modules from the beginning rather than planning to extract them later. They can then be included within the main project using a dependency manager tool like Composer, npm or Yarn.<\/p>\n\n The eBook integration project that I mentioned was an example of this. I identified which pieces could be open-sourced, set up a public repository and put together an MVP based on that project's requirements. Issues were created for nice-to-have additions that could be added later, and the working version was installed with Composer.<\/p>\n\n There was no need to extract the code from the main project, no need to \"clean it up\" or check that it contained no client information, and I had the full Git history for the project - not just a new history from the point when the code was extracted and open-sourced.<\/p>\n\n I've worked on projects that contained a number of potential open-source components that would be released after project completion, but this didn't always happen - I assume due to time pressures to move on to the next project, a focus on adding new features or avoiding the risk of introducing breakages into the code. If the code had been open-sourced from the beginning, these things wouldn't have been an issue.<\/p>\n\n I've also worked on projects where I've followed an open-source-first approach and released a number of PHP libraries and Drupal modules, including Private Message Queue<\/a>, System User<\/a>, and Null User<\/a> modules. I've also been working on some legacy code recently and started to replace it with a library that I've already open-sourced, even though I'm in the early stages of developing it.<\/p>\n\n As someone who enjoys creating and working on open-source software, I would encourage you to open-source your code if you can and to do so sooner rather than later and not wait until the end of your project.<\/p>\n\n ",
"format": "full_html",
"processed": "\n Yesterday's email talked about writing reusable, framework-agnostic packages<\/a> but didn't mention where those packages could be located.<\/p>\n\n They could be kept within a private repository and still have the same benefits, such as re-usability for internal projects, but I like to open-source code as often as I can and make it available publicly to see and use.<\/p>\n\n My preference is to follow an open-source-first workflow, identify which parts of a solution can be open-sourced and create them as open-source libraries or modules from the beginning rather than planning to extract them later. They can then be included within the main project using a dependency manager tool like Composer, npm or Yarn.<\/p>\n\n The eBook integration project that I mentioned was an example of this. I identified which pieces could be open-sourced, set up a public repository and put together an MVP based on that project's requirements. Issues were created for nice-to-have additions that could be added later, and the working version was installed with Composer.<\/p>\n\n There was no need to extract the code from the main project, no need to \"clean it up\" or check that it contained no client information, and I had the full Git history for the project - not just a new history from the point when the code was extracted and open-sourced.<\/p>\n\n I've worked on projects that contained a number of potential open-source components that would be released after project completion, but this didn't always happen - I assume due to time pressures to move on to the next project, a focus on adding new features or avoiding the risk of introducing breakages into the code. If the code had been open-sourced from the beginning, these things wouldn't have been an issue.<\/p>\n\n I've also worked on projects where I've followed an open-source-first approach and released a number of PHP libraries and Drupal modules, including Private Message Queue<\/a>, System User<\/a>, and Null User<\/a> modules. I've also been working on some legacy code recently and started to replace it with a library that I've already open-sourced, even though I'm in the early stages of developing it.<\/p>\n\n As someone who enjoys creating and working on open-source software, I would encourage you to open-source your code if you can and to do so sooner rather than later and not wait until the end of your project.<\/p>\n\n ",
"summary": null
}
]
}