A journey to Web standards’ contribution

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:

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:

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:

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 👍

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

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store