-
Notifications
You must be signed in to change notification settings - Fork 57
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
Changes from all commits
02e525d
7881391
c526ea0
bfde3e0
9f9c865
6531528
b47d515
622a798
27ffc13
3c95ae8
1b6bfe9
6ba4157
13c075f
3746a59
78d340d
d647098
b3ca1a0
92ebbad
3d96fad
b2d9188
540f9f5
f985569
72a7a8a
0206b75
db86dab
8a7ce1e
ab09594
b4fd349
f5b1308
07d6047
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
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 GitHub Actions / remark-lint-suggestions[remark-lint-suggestions] practice-areas/engineering/drupal/onboarding-materials/drupal-for-drupal-engineers.md#L61
Raw output
|
||
|
||
- 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 GitHub Actions / remark-lint-suggestions[remark-lint-suggestions] practice-areas/engineering/drupal/onboarding-materials/drupal-for-drupal-engineers.md#L71
Raw output
|
||
|
||
### 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 GitHub Actions / remark-lint-problem[remark-lint-problem] practice-areas/engineering/drupal/onboarding-materials/drupal-for-drupal-engineers.md#L96
Raw output
Check warning on line 96 in practice-areas/engineering/drupal/onboarding-materials/drupal-for-drupal-engineers.md GitHub Actions / remark-lint-problem[remark-lint-problem] practice-areas/engineering/drupal/onboarding-materials/drupal-for-drupal-engineers.md#L96
Raw output
|
||
|
||
![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 GitHub Actions / remark-lint-problem[remark-lint-problem] practice-areas/engineering/drupal/onboarding-materials/drupal-for-drupal-engineers.md#L104
Raw output
Check warning on line 104 in practice-areas/engineering/drupal/onboarding-materials/drupal-for-drupal-engineers.md GitHub Actions / remark-lint-problem[remark-lint-problem] practice-areas/engineering/drupal/onboarding-materials/drupal-for-drupal-engineers.md#L104
Raw output
|
||
|
||
![attribute organization](/assets/images/drupal-pa/do-attribute-contribution.png) | ||
|
||
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 GitHub Actions / remark-lint-problem[remark-lint-problem] practice-areas/engineering/drupal/onboarding-materials/drupal-for-engineers.md#L25
Raw output
Check warning on line 25 in practice-areas/engineering/drupal/onboarding-materials/drupal-for-engineers.md GitHub Actions / remark-lint-problem[remark-lint-problem] practice-areas/engineering/drupal/onboarding-materials/drupal-for-engineers.md#L25
Raw output
Check warning on line 25 in practice-areas/engineering/drupal/onboarding-materials/drupal-for-engineers.md GitHub Actions / remark-lint-problem[remark-lint-problem] practice-areas/engineering/drupal/onboarding-materials/drupal-for-engineers.md#L25
Raw output
Check warning on line 25 in practice-areas/engineering/drupal/onboarding-materials/drupal-for-engineers.md GitHub Actions / remark-lint-problem[remark-lint-problem] practice-areas/engineering/drupal/onboarding-materials/drupal-for-engineers.md#L25
Raw output
|
||
|
||
## 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 GitHub Actions / remark-lint-suggestions[remark-lint-suggestions] practice-areas/engineering/drupal/onboarding-materials/drupal-for-everyone.md#L13
Raw output
|
||
|
||
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 GitHub Actions / remark-lint-suggestions[remark-lint-suggestions] practice-areas/engineering/drupal/onboarding-materials/drupal-for-everyone.md#L15
Raw output
Check warning on line 15 in practice-areas/engineering/drupal/onboarding-materials/drupal-for-everyone.md GitHub Actions / remark-lint-suggestions[remark-lint-suggestions] practice-areas/engineering/drupal/onboarding-materials/drupal-for-everyone.md#L15
Raw output
|
||
|
||
## 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 GitHub Actions / remark-lint-problem[remark-lint-problem] practice-areas/engineering/drupal/onboarding-materials/drupal-for-everyone.md#L27
Raw output
|
||
|
||
- **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 GitHub Actions / remark-lint-suggestions[remark-lint-suggestions] practice-areas/engineering/drupal/onboarding-materials/drupal-for-everyone.md#L32
Raw output
|
||
- **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 GitHub Actions / remark-lint-suggestions[remark-lint-suggestions] practice-areas/engineering/drupal/onboarding-materials/drupal-for-everyone.md#L33
Raw output
|
||
- **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 GitHub Actions / remark-lint-suggestions[remark-lint-suggestions] practice-areas/engineering/drupal/onboarding-materials/drupal-for-everyone.md#L35
Raw output
|
||
- **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 GitHub Actions / remark-lint-suggestions[remark-lint-suggestions] practice-areas/engineering/drupal/onboarding-materials/drupal-for-everyone.md#L36
Raw output
|
||
- **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 GitHub Actions / remark-lint-suggestions[remark-lint-suggestions] practice-areas/engineering/drupal/onboarding-materials/drupal-for-everyone.md#L37
Raw output
|
There was a problem hiding this comment.
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/.