-
Notifications
You must be signed in to change notification settings - Fork 57
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
1450-Add Contrib First documentation. (#1451)
* 1450-Add Contrig First documentation. * Add link. * Add mkdocs menu item. * Apply suggestions from code review * Add module and patch contributions * Add link to practice area directions. * Add link to composer-patches plugin. * Break content out into engineering specific places. * Adding non Drupal examples and clearer language. * Fix duplicate heading. * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --------- Co-authored-by: Steve Wirt <Steve Wirt> Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
- Loading branch information
1 parent
956014f
commit 6b189f2
Showing
5 changed files
with
71 additions
and
8 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,37 @@ | ||
--- | ||
title: Contrib First | ||
--- | ||
|
||
# Contrib First | ||
|
||
Whenever we are building something that could be of use by more than one project or client, we build it as contributed work first, if our contract and security concerns allow for it. Contrib First is an approach we take with both patches to FOSS software and new contributions. | ||
|
||
## Rationale for contrib first | ||
|
||
- **Fiscal responsibility** - Building it and contributing it means that other government agencies will never have to pay to build the same thing twice. This helps agencies comply with Federal Source Code Policy: Achieving Efficiency, Transparency, and Innovation through Reusable and Open Source Software [OMB Memorandum M-16-21](https://obamawhitehouse.archives.gov/sites/default/files/omb/memoranda/2016/m_16_21.pdf) | ||
- **Reusability** - CivicActions other clients and the public at large can benefit from work that was already done. | ||
- **Security** - contributing our work to an open source project like Drupal means it may receive security coverage by the Drupal security team and the public. It is made more secure by getting more eyes on the code and more users surfacing any issues. | ||
- **Avoiding the gift that never happens** - Clients are not typically supportive of taking working local software that was already built for them and in use by them, and then paying to move or refactor that software to become open source. The benefit is too small for the cost. By building it as contributed code first, there is no extra cost. | ||
- **Development happens in the open** - The issues are public. The commits are public. Everyone can contribute improvements. | ||
- **Reliability** - A solution built for contribution is often better designed, and better documented than a local solution meant to "just get it done". By putting our company and personal names on it publicly we commit to a quality product. Releasing a FOSS solution also increases the number of testers and edge cases that can surface and reduce bugs in the code. | ||
- **Scalability** - Contributed FOSS is more scalable than one-off solutions and can grow with the power of the FOSS community. | ||
- **Visibility** - CivicActions, our developers and clients earn positive representation as technology leaders and contributors. | ||
|
||
## Examples of FOSS CivicActions built as Contrib First | ||
|
||
- [Allow Only One](https://www.drupal.org/project/allow_only_one) | ||
- [Codit: Batch Operations](https://www.drupal.org/project/codit_batch_operations) | ||
- [Codit: Menu Tools](https://www.drupal.org/project/codit_menu_tools) | ||
- [Content Model & Site Documentation](https://www.drupal.org/project/content_model_documentation) | ||
- [Drupal Knowledge Archive Network (DKAN Open Data Portal)](https://github.com/GetDKAN/dkan) | ||
- [CMSDS Open Data Components](https://github.com/GetDKAN/cmsds-open-data-components) | ||
- [Drydock Cloud](https://github.com/drydockcloud) | ||
- [Entity Field Fetch field](https://www.drupal.org/project/entity_field_fetch) | ||
- [GovDelivery Bulletins](https://www.drupal.org/project/govdelivery_bulletins) | ||
- [Mermaid Diagram Field](https://www.drupal.org/project/mermaid_diagram_field) | ||
- [Node Link Report](https://www.drupal.org/project/node_link_report) | ||
- [Open Accessibility Conformance Report](https://github.com/GSA/openacr) | ||
- [Post API](https://www.drupal.org/project/post_api) | ||
- [Vertex AI Search](https://www.drupal.org/project/vertex_ai_search) | ||
|
||
See more of [CivicActions Drupal contributions](https://drupal.org/civicactions). |
21 changes: 21 additions & 0 deletions
21
practice-areas/engineering/drupal/drupal-contrib-first-module-development.md
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
--- | ||
title: Drupal Contrib First module development | ||
--- | ||
|
||
# Drupal Contrib First module development | ||
|
||
When a new module is needed we try to follow [Contrib First](../../../common-practices-tools/contribution/contrib-first.md), the process looks like this: | ||
|
||
1. Check with project leadership to make sure the contract allows for it. | ||
2. Gather requirements and identify MVP vs nice-to-haves | ||
3. Search for existing modules that might solve the problem. (It might be easier to stretch an existing module than build a new one) | ||
4. If opting to build a new module: | ||
<!--lint disable list-item-content-indent code-block-style --> | ||
- Choose a meaningful search engine friendly module name. (crowd sourcing name suggestions is recommended) | ||
- Create the Drupal project on Drupal.org | ||
- Populate the project page with a description of what is coming. List supporters as CivicActions and the client [directions](./README.md#contribution-to-drupalorg-modules-and-themes). If the client does not have a drupal.org page, get help from your PM to encourage them to create one. | ||
<!--lint enable list-item-content-indent code-block-style --> | ||
5. Populate the issue queue on the Drupal project with "Feature requests". Keep them as atomic as possible. Mark any that are part of the MVP as "major". Create issues for any improvement ideas that emerge. They don't all have to be acted on, but they help shape the road map for where you want the module to go. | ||
6. Close the issues as you go and be sure to credit yourself, CivicActions, and the client. | ||
7. Begin with alpha releases. Ideally when all your MVP/major issues are closed, you are ready for the official release. | ||
8. After the official release, opt in to [Drupal security coverage](https://www.drupal.org/drupal-security-team/security-advisory-process-and-permissions-policy). |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters