Once you have decided to contribute to the project, we need to go over some rules and guidelines before you can start. These rules and guidelines help us work together as a team and give us a common set of directions that keep us all on the same page. In the case of any disagreements on what needs to be done, we can always refer to the guidelines to help us find our way from disagreement to consensus.

Before We Start

This document strives to provide a solid path through contributing a change to Elegant, from setting up your environment to submitting and responding to a Pull Request.

To stay focused on that solid path, additional information that is typically needed to provide a complete picture of the topic being discussed will be presented in other articles and linked to from this article.

Please take the time to familiarize yourself with the information in the attached articles, as they will help you build a complete understanding of our entire contribution process.

Getting The Big Rule Out of the Way

As the project is an open source project, anything you contribute to the project is covered by the project’s Contributions License. If you are not willing or unable to abide by those licenses, we cannot have you contribute to the project.

Primary Goal

The primary goal of this project is to provide a theme for Pelican that provides the Elegant Look and Feel to our user’s websites. To that end, any features or changes must:

  • not negatively effect readability and reading experience
  • not cause distraction for the reader
  • any changes must work out of the box with sensible defaults for the user

These are not negotiable.

Developing Changes Locally

The Elegant project is hosted in GitHub and requires your machine to have a local Git Client to contribute. The Git documentation site has good instructions and videos on how to get started with Git, as well as numerous instructional videos on YouTube to get you going. If you are new to Git, they are a great place to start!

Read The Guides

In addition to installing Git locally, we request that you take a solid look through the following guides. The first guide, Git Tips For Beginners, is a walk through of things that our team has found useful in the past to help get people up and going with their contributions. While this guide is optional, pointing people at this guide has resolved a fair number of questions in the past.

The second guide, our team’s Git Commit Guidelines, is required reading for all contributors. These guidelines document the rules we require every contributor to follow when submitting commits for consideration.

To make things easier for contributors, the repository includes configuration to use Commitizen for Git commits. Entering git-cz on the command line within the repository will walk you through a series of prompts to build a commit message that is fully compliant with our guidelines. It’s usage is highly recommended to avoid issues.

Optional Setup

To assist you in preparing your contributions with minimal friction, you can optionally run one or more pieces of our automated build pipeline on your local machine. Depending on the depth and complexity of your changes, having these present on your local machine are often a time saver in terms of detecting bugs before you submit a Pull Request for your changes.

Choosing to run any of these checks locally will shorten the minimum time required to notice a failure from 3-5 minutes for them to run on the GitHub machines to an average of 60 seconds or less for those same checks to run on your local machine.

Running Pre-Commit Hooks Locally

Facilitating the early detecting of pre-commit hook failures, an option is to install the Pre-commit tool in your local repository. With the Pre-commit tool installed, any commits to your local Elegant repository will be subjected to the same verification that is performed when you submit a Pull Request for your changes. This tool integrates with your local repository, so once installed it is automatically executed as part of your normal git commit process.

Running the Spell Checker Locally

As the dictionary in the environment that you develop changes in may be different than other contributors, the team has elected to include a the yaspeller tool as part of our build pipeline. While this does not integrate with your local repository like the Pre-commit tool, running this locally can help shorten the cycle for ensuring that your spelling is spot on!

Making Your Changes to Elegant

With all of the required, recommended and optional setup behind us, and all of the submitting of the changes ahead of us, it is time to focus on how to develop features for Elegant. To ensure that this topic is given the focus it requires, the article Developing Features For Elegant is dedicated to providing that information to contributors.

Note

While this section rightfully belongs where it is in terms of workflow, it is recommended that you continue reading this article to it’s end. This will allow you to understand what comes after your changes, and may influence implementtion changes to avoid possible problems later on in the workflow.

Submitting a Change For Consideration

Submitting your changes is performed using the GitHub Pull Request feature. Before starting the Pull Request, you must push any committed changes from your local repository to your forked Elegant repository on GitHub. Once that has been done, go to the Compare Changes page and click on the compare across forks text right underneath the title.

Across the top of the page, you will see 4 selection drop downs that look like this:

fork drop downs

These drop downs allow you to select where to compare changes from and to. Leave the first selection alone, and unless instructed otherwise, select next from the second selection. Select the name of your repository fork from the third selection, typically your GitHub account name followed by /Elegant. Finally, select the branch that your changes are in on the forked repository in the last selection.

Note

Typically, most people synchronize the branch name of their local repository with the branch name they push to on their forked repository. If you push your local changes to a different branch on your forked repository, select the name of the branch in the last selection.

Once you confirm that the changes that are now visible at the bottom of the page are the ones you intend to submit, press the Create New Pull Request button. The edit field at the top of the page must have a name that identifies what the change is and is important to relay the scope of your change. However, the editor field below it is where most of the required information is.

Currently there are 2 pre-requisites steps and 3 recommended steps as requirements of every Pull Request. If you have satisfied these requirements, change the [ ] text to [x] indicating that you have complied with the pre-requisite. Then proceed to the Description at the bottom and add a description that provides a good amount of information about what you changed and why. If there were any reported issues that you resolved, it doesn’t hurt to mention them in this section.

When you are done with adding that information, double check it and press the Create pull request button to submit the request.

Building Your Changes on the GitHub Server

After pushing the Create pull request button, you are transferred to another page that is mostly the same as any other GitHub Pull Request page. The main difference is the merge section near the bottom, where you will see something like the following:

image

If the build verifies your changes, all 6 of the current checks will either have a grey box in front of them or a green checkmark. If any of the verifications fail, they will have a red X in front of the verification that failed. Click on the Details text on the right side to get more information on why those checks failed.

Build Verification Actions

To ensure each Pull Request contains solid changes, there are 3 sets of verification actions performed on each Pull Request.

The first set of actions are the Header rules, Mixed content, Pages changed, and Redirect rules which are simple checks with pre-defined rule sets. These rules employ simple rule sets looking for changes that are outside the scope of the rest of the project, and rarely fire if you keep to the format of the other files in the repository.

The next verification action is the Travis CI action that performs a complete build of the project, represented by the continuous-integration/travis-ci/pr action. A complete build of the project often takes 3-5 minutes, so this is the verification action you will be waiting on the longest.

It is this part of the build that puts all of the changes through strict checks to make sure that the submitted changes are solid.

More information on how our team uses Travis CI is detailed in this article.

Previewing Changes

The final verification action is a simple build and internal deploy of the Elegant documentation website, represented by the netlify/pelicanelegant/deploy-preview action. Clicking on the Details text on the right side of the action will redirect your browser to temporary deployment of the documentation website deployed using Netlify. If the changes that your are submitting are documentation changes or have an impact on the look and feel of Elegant, you should use the preview to manually verify your changes.

Note

The documentation preview is deployed to Netlify without performing a full build as detailed above, and is not dependant on the full build step. As such, you can manually verify your changes on the preview website while the full build is ongoing.

View Previews For Other Pull Requests

This Netlify temporary deployment is also useful tool that can be used to see the effects of any Pull Request on the documentation website. For example, if we want to look at what the effects of Pull Request #458 were, we have a solid path to view those changes.

Each of the recently close Pull Requests was built with Netlify support enabled. As such, if you switch from the default Conversation tab to the Checks tab, you can see if Netlify succeeded. If it did succeed, there will be a View more details on Netlify link at the bottom of the page which will take you to the Netlify deployment of the Pull Request. At the top of the Deploy Log section is a Preview button that will take you to the temporary deployment of the documentation website, as if you had clicked on the Details link from the Pull Request page itself.

What Happens If The Build Detects Errors?

Once you fix any errors that the build detected, go through your normal verification process and submit the changes to your forked repository. If your Pull Request is still open, when GitHub detects that one of the repository/branch pairings in a Pull Request has been updated, it will execute any required checks from the beginning. At that point, you are effectively back at the Building Your Changes on the GitHub Server section above.

This looping will continue until one of two things happen: all errors are dealt with OR you give up. At any point before the Pull Request is accepted and merged with the main repository, you can push the Close pull request button at the bottom of the page and close the Pull Request. This will perform a “soft close” on the Pull Request, with the option to re-open the Pull Request at a later date.

Consider Using a Draft Pull Request

If you want to make sure that your Pull Request builds on the server before submitting it for consideration by the team, consider using a Draft Pull Request. Instead of pressing the Create pull request button in the Building Your Changes on the GitHub Server section, click on the arrow on the right side of the button and select Create draft pull request.

draft pull request

A draft request is exactly like a normal Pull Request except that it is not visible to anyone other than yourself. In this way, you can make sure the Pull Request is exactly the way you want it before asking for it to be considered part of the project.

Something that is often forgotten about Pull Requests, and therefore Draft Pull Requests, is that you can edit most of the contents of the Pull Request after you have created it. Use this to your advantage as you get your Pull Request ready!

What Happens If Team Members Ask For Changes?

As we are a team, when changes are submitted for consideration, the team will offer feedback on the changes. The feedback will generally fall into 3 categories: yes, no, or almost.

With the “yes” category, the changes will be accepted “as is” into the project.

Conversely, in the “no” category, the changes are rejected, usually with a decent description of why they were rejected. Depending on the rejection reason, it may be possible to adjust your changes according to feedback in the rejection reason and submit it as a new Pull Request at a later date.

In the “almost” category, the feedback will usually contain specific things that one or more of the team members want to see changed before it can be merged. This feedback can be a simple as a grammar error they want to see fixed, or asking for a more complete article documenting how to use your changes. The important part to note about this category is that the team feels that after the suggested changes have been performed, you can easily move to the “yes” category.

Regardless of what category the feedback for your changes falls into, please remember that we are a team and we are at our best when we work together. If you have a disagreement, ask for clarifications and initiate a conversation to understand where the reviewer of the Pull Request is coming from. Work with that person to help yourself see their viewpoint.

Like this post? Share on: TwitterFacebookEmail


Jack De Winter ever evolving, ever learning

Published

Last Updated

Category

Contributing

Stay in Touch

Get New Release Alert