Skip to content

Add rhardarson as frontend maintainer for customers.gitlab.com

Why is this change being made?

Context

The Customer Portal currently has 4 dedicated frontend engineers, a number of full-stack engineers, and a number backend engineers contributing code.

Notably there is no frontend maintainer specifically attached to the project; since those pushing frontend code are newly-ish hires.

As stated in Fulfillments FE how we work

We follow the standard MR and Code Review process with a few exceptions. Since the Fulfillment Frontend Team is relatively new, we don't have a maintainer for the Customer portal or the License app on the team. For the reason, and to increase diversity of reviewers, Frontend maintainers of the GitLab CE and GitLab EE projects should merge Frontend MRs for the Customer portal and Licence app projects.

The evaluation

Here's a sizeable list of reviews I've made over the last months since starting here at GitLab.

Notably I've got a good understanding of how the Customer Portal works as a product, and how the codebase is put together, since the wast amount of my work is focused on that project.

non-trivial MRs reviewed by Ragnar

fix: EKS credentials form doesn't "reset" after error

This shows a lack of knowledge with the GitLab project codebase. But I was able to spot that the proposed solution wasn't ideal because of my knowledge with Bootstrap. The MR description still shows the initial solution; in that Bootstrap was setting a class automatically. Also note that it was @ealcantara that did the work of figuring out what was going on. I just asked the right question.

Pajamas base style

The initial solution was quite complex and likely to cause future issues. After a discussion the solution was reworked to something simpler.

Remove redundant JavaScript from Zuora's callback layout

This is one of the MRs that highlight that knowledge with the Customer Portal codebase can allow us to spot a simpler solution. The Zuora callback layout is how webhooks from Zuora are propagated to JavaScript. This might be a small MR in lines of code changed, but @vitallium did a fantastic job here, ensuring that the user does not need to download our application bundle twice; since the iframe is loaded on a page that has already downloaded the bundle. With a bit of discussion we managed to strip everything but a very small HAML-inline-JS.

Upgrade to Bootstrap 4

Yeah there's a bit of a Bootstrap theme going on here. With the work in Bootstrap version 4 I got tapped on the shoulder to review this MR. There were some changes made in the MR that were a requirement for Bootstrap4, but better addressed in dedicated MRs which @jackie_fraser identified and spearheaded.

feat(pagination): use gl-icon in prev and next page items

The pagination component isn't simple to grok 😄 I spotted the disabled prop check wasn't exhaustive in all conditionals. @pgascouvaillancourt improved upon my suggestion for a fix and guarded the fix with a test case.

Coffeescript conversion - 4 - remove sprockets usage

  • Noticed we were adding jquery-validate via CDN. Created a MR to remove CDN usages.
  • Noticed eslint was not running correctly. Created a MR to fix this
  • There were some specs that had recently been lifted from quarantine that started failing. Unfortunately we didn't catch this until the MR had been merged, and had to be reverted.

non-trivial work authored by Ragnar

Bootstrap version 4

The Customer Portal is built on Bootstrap3 and custom styles. Since we want to consume gitlab-ui we needed to upgrade to Bootstrap4, which thankfully wasn't as large a task as for GitLab. The learnings from that MR (thanks @ClemMakesApps !) were used in Upgrade to Bootstrap 4 in another project

Webpacker bundle per page

We're using Rails webpacker in the Customer Portal. This MR that isn't many LoC introduced page specific bundles in the same flavour as GitLab does it. This mostly required retrofitting a solution already in place in GitLab and a knowledge of Webpacker.

Pajamas Update: Portal "Manage Purchases" Page

This was a Pajamas rewrite of an overview for purchased subscriptions. This is a core part of the Customer Portal for existing users and there are multiple features and edge-cases to keep in mind for this page. This work was broken into multiple MRs, leveraging storybook to ship indivual Vue components.

I'm listing some of the MRs from that ticket, but notably the majority of them are trivial, indicating that we broke the work up into good units.

More notable is the communication with product and design around descoping features and leveraging our feature flag system to do a gradual rollout. This was done to ship faster.

Self-confessed concerns

I've read, follow, and enforce the GitLab Frontend Development Guidelines when I can. I'm also making decisions based on my prior experiences, and when there's ambiguity, or a historical non-documented reasons for a decision, a discussion usually ensues.

This can be a time consuming process, and maybe how-Ragnar-would-do-things clashes too much with how-current-maintainer-do-things.

Notable novellas I've delivered:

Conformity

Edited by Ragnar Hardarson

Merge request reports