A journey to Web standards’ contribution

Andrea Giammarchi
4 min readSep 11, 2020
Photo by Geran de Klerk on Unsplash

It took months to land a tiny change, but it finally went public, and I’d like to help you out with all the details so that maybe, next time, it’ll take less time, or it’ll require less iterations between parts.

The Agreement

If we’re not willing to sign this agreement, which is pretty common for any Open Source contribution when the project is driven by organizations, we can just keep ranting about standards on twitter and skip reading here.

Moreover, if the company we work for deals with, or uses, Web technologies, be sure such company is OK in letting us signing that agreement on behalf of such company, but there are also other steps needed:

  • the company should have a GitHub organization
  • our GitHub account should be part of such organization, and we have to be sure its visibility is public (it’s private by default)

Without these premises, even if we’re contributing in our free-time or over a weekend, and even if the proposed change, or fix, has nothing to do with what our company does, there’s no way to help out in any way.

Why GitHub only?

This is the part that baffled me the most: if we work on GitLab instead, there’s apparently no way to help contributing with standard bodies.

I think this is a bit unfair for GitLab users, but I’m sure it’s not a meant limitation, it’s just easier, more convenient, to use GitHub’s popularity.

Could this be any better? Well, my quick and rushed hint here:

The Proposal

There is an already made template that helps us filing issues, and the more details we’ll put in our proposal, the more chances we have it’ll get noticed, and vendors’ engineers will show their interest.

Mine is just an example on how to start a conversation, and it’s within such conversation that we should understand if there’s interest or not in implementing such proposal.

an engineer agreed on moving forward with the proposal

Ideally, we should convince at least two implementers from two different browsers, because that’s required to accept any Merge Request.

The Merge Request

As suggested by the template itself, these are the condition to land the MR:

  • At least two implementers are interested (and none opposed)
  • Tests are written and can be reviewed and commented upon
  • Chrome, Firefox, and Safari implementations bugs are filed

The Ugly Bit: The Living Standard Document

I cannot stop thanking people involved in the MR, because I couldn’t have landed anything without their help.

As tiny as my change was, I didn’t know the whole living standards document was based on a single monolith which is also pretty hard to edit, as everything has to be written by hands.

Thankfully, that’s just a huge HTML file, and I assume if we’d like to contribute to Web standards, we know at least the basics here, but there are various things to consider, as inner document links, wording, parts that need extra care, and so on … so that to propose this change:

// previous implementation, whenDefined resolves with nothing
customElements.whenDefined(name).then(() => {});
// proposed change: resolve with the class
// instead of requiring customElements.get(name) after
customElements.whenDefined(name).then(Class => {});

I had to modify some content that spanned over 300 lines, within a document that contains a more than 120K lines of specifications.

As Summary

Yes, we can contribute to Web standards without being employed by Apple, Google, or Mozilla, as long as we keep these points in mind:

  • we gotta be patient, because there are hundreds of proposal and moving parts daily in there
  • the better we formulate the proposal, the sooner it will move into implementation and the related Merge Request can be pushed
  • we can ask help to people doing this on daily basis ♥
  • as we all live in a different timezone, the least amount of back-and-forward bureaucratic iterations we need, the better (i.e. the agreement bit, which delayed in my case the landing by more than a week)

I hope this post will encourage those potential contributors that never dared to help out for real; there are few things that need to be done in a specific way, but after all, it’s been a pretty awesome experience 👍

--

--

Andrea Giammarchi

Web, Mobile, IoT, and all JS things since 00's. Formerly JS engineer at @nokia, @facebook, @twitter.