Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Drupal PA Onboarding Materials #1284

Closed
wants to merge 30 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
02e525d
Create drupal-for-everyone.md
timozura Aug 31, 2023
7881391
Create drupal-for-project-teams.md
timozura Aug 31, 2023
c526ea0
Create drupal-for-engineers.md
timozura Aug 31, 2023
bfde3e0
Create test.txt
timozura Aug 31, 2023
9f9c865
Add files via upload
timozura Aug 31, 2023
6531528
Delete test.txt
timozura Aug 31, 2023
b47d515
Create drupal-for-drupal-engineers.md
timozura Aug 31, 2023
622a798
Create drupal-glossary.md
timozura Aug 31, 2023
27ffc13
Rename practice-areas/engineering/drupal/drupal-for-drupal-engineers.…
timozura Aug 31, 2023
3c95ae8
Rename practice-areas/engineering/drupal/drupal-for-engineers.md to p…
timozura Aug 31, 2023
1b6bfe9
Rename practice-areas/engineering/drupal/drupal-for-everyone.md to pr…
timozura Aug 31, 2023
6ba4157
Rename practice-areas/engineering/drupal/drupal-for-project-teams.md …
timozura Aug 31, 2023
13c075f
Rename practice-areas/engineering/drupal/drupal-glossary.md to practi…
timozura Aug 31, 2023
3746a59
Update drupal-for-everyone.md
timozura Aug 31, 2023
78d340d
Update drupal-for-project-teams.md
timozura Aug 31, 2023
d647098
Update drupal-for-project-teams.md
timozura Aug 31, 2023
b3ca1a0
Update drupal-for-engineers.md
timozura Aug 31, 2023
92ebbad
Update drupal-for-drupal-engineers.md
timozura Aug 31, 2023
3d96fad
Update drupal-for-drupal-engineers.md
timozura Aug 31, 2023
b2d9188
Update drupal-glossary.md
timozura Aug 31, 2023
540f9f5
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Sep 20, 2023
f985569
Update drupal-for-drupal-engineers.md
timozura Sep 20, 2023
72a7a8a
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Sep 20, 2023
0206b75
Update drupal-for-engineers.md
timozura Sep 20, 2023
db86dab
Update drupal-for-everyone.md
timozura Sep 20, 2023
8a7ce1e
Update drupal-for-project-teams.md
timozura Sep 20, 2023
ab09594
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Sep 20, 2023
b4fd349
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Sep 20, 2023
f5b1308
Update drupal-glossary.md
timozura Sep 20, 2023
07d6047
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Sep 20, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
@@ -0,0 +1,115 @@
---
title: Drupal for Drupal engineers
---

# Drupal for Drupal engineers

## Follow coding standards

We strictly follow established coding standards. Standardized code is more readable and easier to maintain. See the Drupal docs for the latest guidelines: https://www.drupal.org/docs/develop/standards

## Contributing upstream

Whenever practical, we want to contribute our changes back to the Drupal community. If a change requires us to patch core or a contributed module, that patch should also be attached to a drupal.org issue.

First, search the Drupal project for an issue matching the change you need to make. There may already be a patch providing the functionality.

If you end up using an existing patch, drop a comment indicating that you tested the patch and that it is working (or not) for you. This will help move the issue along its lifecycle.

If you need to create your own patch, attach it to the issue and update it accordingly. Ensure that the patch file is named according to convention and includes the issue number so that it is convenient to find.

Your project's technical lead can show you where patch files are stored in your project and explain how they are applied.

https://www.drupal.org/community/contributor-guide/reference-information/quick-info/life-cycle-of-an-issue
https://www.drupal.org/docs/develop/using-composer/using-composer-with-drupal

## Version control and the code review process

CivicActions uses git for version control. Your project's technical lead will explain the process in place for your project and ensure you have access to the relevant repositories. One of your responsibilities as a programmer is to review your peers' changes before merging them.

When reviewing a change, consider the following factors:

1. Does the change follow established coding standards? Be picky; we want to hold our code to the highest standards.
2. Is the code well documented? Good documentation answers the question "why?", not "what" or "how."
3. Is this code that you want to maintain going forward? If anything is unclear to you, this is the time to get it clarified.
4. Are there any typos or bugs?
5. Does the code make any assumptions that may not always be true? For example, assuming an array key exists that might not?

## Resources and opportunities

### Drupal practice area

Drupal is one of CivicActions Practice Areas. We use the #engineering-drupal Slack channel and have monthly calls.

To be invited to the monthly call, please post a message in the Slack channel and one of your colleagues will add you. You can also find the call on our CivicActions (Primary) calendar.

Drupal engineers meet each month on Zoom to discuss topics of common interest. Make sure you have been added to the calendar invites. You are encouraged to share your contributions to Drupal.org and the CivicActions Drupal practice area in the Slack channel and on the monthly call.

The monthly meeting itself is normally scheduled early in the month and follows either a pre-set agenda or the Festivus Format. The Festivus format agenda includes:

1. One or more Feasts (a discussion, a demo, a presentation)
2. General time of sharing our Feats of Strength, and Airing of Grievances.

These formats are not set in stone, though; feel free to suggest another format entirely. Even better: volunteer to lead the next call and try something new out!

More recently, we've been adding agenda items and notes to this document: 2022 Drupal Practice Area Meetings and Agendas to structure our conversations.

### Drupal practice area OKRs

CivicActions adopted a standard practice of setting Objectives and Key Results in 2020, based on learnings gleaned from this book: https://www.amazon.com/Measure-What-Matters-Simple-Drives/dp/024134848X/ref=sr_1_1

We are still in the process of optimizing our practices in this area. That said, Drupal practice area participants have developed practice area OKRs that merge with CivicActions organizational objectives. OKR discussions happen frequently in practice area calls and

Check warning on line 61 in practice-areas/engineering/drupal/onboarding-materials/drupal-for-drupal-engineers.md

View workflow job for this annotation

GitHub Actions / remark-lint-suggestions

[remark-lint-suggestions] practice-areas/engineering/drupal/onboarding-materials/drupal-for-drupal-engineers.md#L61

Hard to read sentence (confidence: 5/7) readability retext-readability
Raw output
    61:71-61:205  warning  Hard to read sentence (confidence: 5/7)            readability  retext-readability

- Trello board: https://trello.com/b/MH1OIHzV/drupal-practice-area-okrs
- Culture amp: https://civicactions.cultureamp.com/performance/new_goals/department

### Skillsbase: Complete a self-assessment of your Drupal skills

A previous year's objective was to gather an inventory of the skills of Drupal Practice Area participants. As part of your onboarding, you should have already completed the skills assessment. If not, you should consider completing it as part of your onboarding to the Drupal practice area.

Drupal Skills Categories: https://app.skills-base.com/skillcategories/view/id/16
Skills Assessment: https://app.skills-base.com/people/view#assessments

Check warning on line 71 in practice-areas/engineering/drupal/onboarding-materials/drupal-for-drupal-engineers.md

View workflow job for this annotation

GitHub Actions / remark-lint-suggestions

[remark-lint-suggestions] practice-areas/engineering/drupal/onboarding-materials/drupal-for-drupal-engineers.md#L71

Hard to read sentence (confidence: 5/7) readability retext-readability
Raw output
      70:1-71:71  warning  Hard to read sentence (confidence: 5/7)            readability  retext-readability

### Gotta Drupal problem? We can help!

One of the most cherished practices is the "30 minute rule" which states, "You are only allowed to be stuck on a problem for 30 minutes before you ask for help."

The #engineering-drupal channel in Slack is used to reach out to other CivicActions Drupal engineers to ask for help on specific Drupal problems.

When you ask for help, it's a good idea to provide a context for your problem, describe (or display) the problem, then describe what approaches you've already taken to solve the problem. If you can summarize the nature of the problem in the first sentence, it's more likely you'll get a quick response.

CivicActions engineers tend to be very helpful, so it's rare for a question not to get a response within a few hours. If for some reason you don't get a response, try a different wording or expand on things you have tried.

### Contributions to drupal.org

We encourage all CivicActioners to give back to the Drupal community (see community participation). To track those contributions, follow the instructions below. Doing this helps our Practice Area to be aware of and appreciate your contributions. It also helps our organization as a whole!

Update your drupal.org profile

1. Go to http://drupal.org/.
2. Log into your drupal.org account (create one if you do not have one).
3. Align it with CivicActions in the "Work" section: Edit profile > Then expand the Work section > Type in "CivicActions" and your Job title.
4. Align your role with CivicActions in the "Contributor roles" section: Edit profile > Then expand the Contributor roles section > Type in "CivicActions" in "Organization support". See https://www.drupal.org/community/contributor-guide/find-your-role for more details.

### Contribution to drupal.org modules and themes

If you have created or are creating a module or a theme and use CivicActions time to work on it — either for a client or as professional development/community participation time — please make sure to add CivicActions under 'Supporting organizations' when editing the module or theme. An example screenshot of what the checkbox looks like:

Check warning on line 96 in practice-areas/engineering/drupal/onboarding-materials/drupal-for-drupal-engineers.md

View workflow job for this annotation

GitHub Actions / remark-lint-problem

[remark-lint-problem] practice-areas/engineering/drupal/onboarding-materials/drupal-for-drupal-engineers.md#L96

Expected `"` to be used at this level of nesting, not `'` quote retext-quotes
Raw output
    96:224-96:225  warning  Expected `"` to be used at this level of nesting, not `'`  quote                    retext-quotes

Check warning on line 96 in practice-areas/engineering/drupal/onboarding-materials/drupal-for-drupal-engineers.md

View workflow job for this annotation

GitHub Actions / remark-lint-problem

[remark-lint-problem] practice-areas/engineering/drupal/onboarding-materials/drupal-for-drupal-engineers.md#L96

Expected `"` to be used at this level of nesting, not `'` quote retext-quotes
Raw output
    96:249-96:250  warning  Expected `"` to be used at this level of nesting, not `'`  quote                    retext-quotes

![supporting organizations](/assets/images/drupal-pa/do-supporting-organizations.png)

Adding the organization will ensure that the module and theme will also be attributed to CivicActions. Examples of that can be seen under https://www.drupal.org/civicactions#projects-supported.

### Contributing to drupal.org issues

If you are contributing to drupal.org issues for CivicActions and our customers, please make sure to click the box under 'Attribute this contribution'. An example screenshot of what the checkbox looks like:

Check warning on line 104 in practice-areas/engineering/drupal/onboarding-materials/drupal-for-drupal-engineers.md

View workflow job for this annotation

GitHub Actions / remark-lint-problem

[remark-lint-problem] practice-areas/engineering/drupal/onboarding-materials/drupal-for-drupal-engineers.md#L104

Expected `"` to be used at this level of nesting, not `'` quote retext-quotes
Raw output
  104:122-104:123  warning  Expected `"` to be used at this level of nesting, not `'`  quote                    retext-quotes

Check warning on line 104 in practice-areas/engineering/drupal/onboarding-materials/drupal-for-drupal-engineers.md

View workflow job for this annotation

GitHub Actions / remark-lint-problem

[remark-lint-problem] practice-areas/engineering/drupal/onboarding-materials/drupal-for-drupal-engineers.md#L104

Expected `"` to be used at this level of nesting, not `'` quote retext-quotes
Raw output
  104:150-104:151  warning  Expected `"` to be used at this level of nesting, not `'`  quote                    retext-quotes

![attribute organization](/assets/images/drupal-pa/do-attribute-contribution.png)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The image links needs to be setup to navigate to the folder. For an example, checkout the source of https://guidebook.civicactions.com/en/latest/practice-areas/engineering/drupal/.


Checking the box and adding the organization and customer will ensure that any credit you receive will also be attributed to CivicActions and the customer. Examples of that can be seen under https://www.drupal.org/civicactions#org-page-issue-credit.

### External Resources

- Drupalize.me
- Acquia Academy
- Buildamodule Youtube channel
- D.o helpful links
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
---
title: Drupal for engineers
---

# Drupal for engineers

## Directory structure

For an overview and brief description of Drupal's directory structure see Directory Structure on drupal.org.

## Drush

Drush is a command line tool that assists with, and speeds up many common Drupal tasks. For example, rather than having to click through the UI to do something like install a new module, you can use a single drush command to do it for you. There are a lot of other commands in drush that can do things like generate boilerplate code, run migrations, or clear cache. You can read more about drush on their site https://www.drush.org.

## Caching

Caching is the process of storing files in a temporary storage, or cache. The reason that websites, browsers and many different applications use a cache is because it greatly increases performance. For CivicActions, there are usually several layers of cache that we need to be aware of.

The first layer is the browser cache. Browsers will save copies of all, or most of the content of a webpage on the device's hard drive. This way, when the user re-visits the webpage, the browser won't have to re-download all of the content and can bring up the page much quicker.

The second layer that most teams will need to be aware of is the Drupal cache. Most of our sites will have Drupal core's internal page cache module enabled. This makes it so that pages are cached for any anonymous users visiting the site. When the first anonymous user visits a Drupal page, Drupal will save the results of any queries or requests that it performs into its cache. It will then serve those cached results for all anonymous users. The time that Drupal holds on to these results can be altered in the administrative interface.

After these first two layers, there can be several other layers of caching depending on your site's hosting and any CDNs you may be using. You should check with the engineers on your team if you'd like to learn more about these extra layers of caching.

If you've made some changes to your site, but the changes aren't showing up, you might need to rebuild the cache in one of, or all of these different layers. In Drupal, clearing the cache can be done from the administrative interface (/admin/config/development/performance) or with a drush command ('drush cache:rebuild' or 'drush cr'). You can clear the cache in your browser by using the browser's settings (this process may differ between browsers). There are also some contributed modules such as Purge and Akamai Purge that can help with rebuilding the cache in some of the extra caching layers that your site may have.

Check warning on line 25 in practice-areas/engineering/drupal/onboarding-materials/drupal-for-engineers.md

View workflow job for this annotation

GitHub Actions / remark-lint-problem

[remark-lint-problem] practice-areas/engineering/drupal/onboarding-materials/drupal-for-engineers.md#L25

Expected `"` to be used at this level of nesting, not `'` quote retext-quotes
Raw output
    25:300-25:301  warning  Expected `"` to be used at this level of nesting, not `'`  quote                    retext-quotes

Check warning on line 25 in practice-areas/engineering/drupal/onboarding-materials/drupal-for-engineers.md

View workflow job for this annotation

GitHub Actions / remark-lint-problem

[remark-lint-problem] practice-areas/engineering/drupal/onboarding-materials/drupal-for-engineers.md#L25

Expected `"` to be used at this level of nesting, not `'` quote retext-quotes
Raw output
    25:320-25:321  warning  Expected `"` to be used at this level of nesting, not `'`  quote                    retext-quotes

Check warning on line 25 in practice-areas/engineering/drupal/onboarding-materials/drupal-for-engineers.md

View workflow job for this annotation

GitHub Actions / remark-lint-problem

[remark-lint-problem] practice-areas/engineering/drupal/onboarding-materials/drupal-for-engineers.md#L25

Expected `"` to be used at this level of nesting, not `'` quote retext-quotes
Raw output
    25:325-25:326  warning  Expected `"` to be used at this level of nesting, not `'`  quote                    retext-quotes

Check warning on line 25 in practice-areas/engineering/drupal/onboarding-materials/drupal-for-engineers.md

View workflow job for this annotation

GitHub Actions / remark-lint-problem

[remark-lint-problem] practice-areas/engineering/drupal/onboarding-materials/drupal-for-engineers.md#L25

Expected `"` to be used at this level of nesting, not `'` quote retext-quotes
Raw output
    25:334-25:335  warning  Expected `"` to be used at this level of nesting, not `'`  quote                    retext-quotes

## Accessibility, security, performance

Needs content
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
---
title: Drupal for everyone
---

# Drupal for everyone

CivicActions was an early adopter of Drupal in 2004 and it has been a core technology utilized by our company since, from progressive non-profits to NGOs, to government agencies helping serve the public. Our employees include 25+ module maintainers maintaining 60+ modules, 10+ core contributors, 35+ community contributors, members of key Drupal teams, organizers of key Drupal camps and cons. Previous employees have developed important Drupal distributions and modules that have made their way into Drupal core. Drupal has been a vital part of many of our successes and our commitment to Drupal keeps growing.

## Why should everyone at CivicActions know about Drupal?

As a core technology used by CivicActions, it is important for everyone at CA to have a degree of familiarity with Drupal regardless of role. This familiarity can deepen your understanding of the interactions a client has with the products and services that CA provides. You become a better gauge of a client's needs and of how those needs can be met (both in terms of approach and effort).

Drupal is supported by a large community and CivicActions strives to be a contributing and positive presence. While our participation in the community is driven by an alignment of interests, values and principles, our participation also has the pragmatic effects of highlighting the Drupal-expertise within CivicActions and of attracting new talent.

Check warning on line 13 in practice-areas/engineering/drupal/onboarding-materials/drupal-for-everyone.md

View workflow job for this annotation

GitHub Actions / remark-lint-suggestions

[remark-lint-suggestions] practice-areas/engineering/drupal/onboarding-materials/drupal-for-everyone.md#L13

Hard to read sentence (confidence: 5/7) readability retext-readability
Raw output
   13:111-13:350  warning  Hard to read sentence (confidence: 5/7)            readability  retext-readability

Your depth of knowledge about Drupal should at least be commensurate with your role. While there are many resources available, both online and within CivicActions to help you learn, you should also consider participation within the larger Drupal community. Participation is an immersive and meaningful mechanism for learning and opportunities are available for both technical and non-technical roles.

Check warning on line 15 in practice-areas/engineering/drupal/onboarding-materials/drupal-for-everyone.md

View workflow job for this annotation

GitHub Actions / remark-lint-suggestions

[remark-lint-suggestions] practice-areas/engineering/drupal/onboarding-materials/drupal-for-everyone.md#L15

Hard to read sentence (confidence: 5/7) readability retext-readability
Raw output
    15:86-15:257  warning  Hard to read sentence (confidence: 5/7)            readability  retext-readability

Check warning on line 15 in practice-areas/engineering/drupal/onboarding-materials/drupal-for-everyone.md

View workflow job for this annotation

GitHub Actions / remark-lint-suggestions

[remark-lint-suggestions] practice-areas/engineering/drupal/onboarding-materials/drupal-for-everyone.md#L15

Hard to read sentence (confidence: 5/7) readability retext-readability
Raw output
   15:258-15:401  warning  Hard to read sentence (confidence: 5/7)            readability  retext-readability

## What is a CMS?

CMS is short for content management system. A content management system is a software package that allows users to build and manage a website without having to know how to code it from scratch. They provide a friendly user interface that lets users add content such as styled text, images, and other media to their site.

## What is OSS?

From the first year of operations, CivicActions was committed to openness. This openness stemmed from a commitment to the principles behind Free and Open Source Software (FOSS), like Drupal and the same FOSS principles which drive the thriving Drupal community. This radical openness helped to define our culture. Our team members have shared best practices at hundreds of conferences over the years, as well as contributed code to hundreds of FOSS communities beyond Drupal. To this day, we believe in making the world better not only through our client deliverables, but also through sharing our learnings openly.

## Why do we choose Drupal?

Drupal is an extremely popular open-source content management system (CMS) used for building websites and applications. [site stats] There are many reasons why some of the most high-trafficked and essential web sites on the internet are built on Drupal:

Check warning on line 27 in practice-areas/engineering/drupal/onboarding-materials/drupal-for-everyone.md

View workflow job for this annotation

GitHub Actions / remark-lint-problem

[remark-lint-problem] practice-areas/engineering/drupal/onboarding-materials/drupal-for-everyone.md#L27

Found reference to undefined definition no-undefined-references remark-lint
Raw output
    27:121-27:133  warning  Found reference to undefined definition                    no-undefined-references  remark-lint

- **Customizability:** Drupal is highly customizable in terms of functionality, layout, and design. This makes it an ideal choice for complex websites with specific requirements.

- **Scalability:** Drupal is highly scalable. It can handle high traffic loads and complex data manipulation. It is used by many high-profile websites and can support businesses as they grow.
- **Community and Support:** Drupal has a vast and active community of developers contributing to its core and creating additional modules (plugins). This ensures that the platform stays up-to-date and can provide support for any issues.

Check warning on line 32 in practice-areas/engineering/drupal/onboarding-materials/drupal-for-everyone.md

View workflow job for this annotation

GitHub Actions / remark-lint-suggestions

[remark-lint-suggestions] practice-areas/engineering/drupal/onboarding-materials/drupal-for-everyone.md#L32

Hard to read sentence (confidence: 5/7) readability retext-readability
Raw output
     32:7-32:152  warning  Hard to read sentence (confidence: 5/7)            readability  retext-readability
- **Security:** Drupal has a strong reputation for its focus on security. It is known for its proactive community that takes security vulnerabilities very seriously, providing regular updates to address any potential issues.

Check warning on line 33 in practice-areas/engineering/drupal/onboarding-materials/drupal-for-everyone.md

View workflow job for this annotation

GitHub Actions / remark-lint-suggestions

[remark-lint-suggestions] practice-areas/engineering/drupal/onboarding-materials/drupal-for-everyone.md#L33

Hard to read sentence (confidence: 5/7) readability retext-readability
Raw output
    33:77-33:227  warning  Hard to read sentence (confidence: 5/7)            readability  retext-readability
- **Built-in Web Services:** Drupal 8 and later versions come with built-in web services. This makes it a great choice for building headless applications where the front-end is decoupled from the backend, using Drupal to serve content via an API.
- **Multilingual Capabilities:** Drupal provides robust multilingual features, making it an excellent choice for international and multilingual sites.

Check warning on line 35 in practice-areas/engineering/drupal/onboarding-materials/drupal-for-everyone.md

View workflow job for this annotation

GitHub Actions / remark-lint-suggestions

[remark-lint-suggestions] practice-areas/engineering/drupal/onboarding-materials/drupal-for-everyone.md#L35

Hard to read sentence (confidence: 5/7) readability retext-readability
Raw output
     35:7-35:153  warning  Hard to read sentence (confidence: 5/7)            readability  retext-readability
- **SEO Friendly:** Drupal's flexibility and configuration options make it SEO-friendly, meaning websites made with Drupal can potentially rank higher in search engines.

Check warning on line 36 in practice-areas/engineering/drupal/onboarding-materials/drupal-for-everyone.md

View workflow job for this annotation

GitHub Actions / remark-lint-suggestions

[remark-lint-suggestions] practice-areas/engineering/drupal/onboarding-materials/drupal-for-everyone.md#L36

Hard to read sentence (confidence: 5/7) readability retext-readability
Raw output
     36:7-36:172  warning  Hard to read sentence (confidence: 5/7)            readability  retext-readability
- **Content Workflow Management:** Drupal's built-in tools for content creation, workflow, and publishing allow multiple users to collaborate and manage content.

Check warning on line 37 in practice-areas/engineering/drupal/onboarding-materials/drupal-for-everyone.md

View workflow job for this annotation

GitHub Actions / remark-lint-suggestions

[remark-lint-suggestions] practice-areas/engineering/drupal/onboarding-materials/drupal-for-everyone.md#L37

Hard to read sentence (confidence: 5/7) readability retext-readability
Raw output
     37:7-37:164  warning  Hard to read sentence (confidence: 5/7)            readability  retext-readability
Loading
Loading