Mozilla Open Source Support Grant — Helping Make Open Source Sustainable
Tags: opensource
Published: 2020-07-24 13:08:31

I was awarded with a Mozilla Open Source Support (MOSS) grant through which I was funded to work full-time on an open-source project (ReSpec) for over 3 months. In this post, I’ll share my experience.

## What is MOSS?

The [MOSS](https://mozilla.org/moss/) awards program financially supports open source projects that contribute to Mozilla’s work and the health of the Internet. Specifically for the MOSS Foundational Technology track, Mozilla looks for projects that Mozilla products or Mozzilians rely on.

## What is ReSpec?

[ReSpec](https://github.com/w3c/respec/) is an open source project that makes writing international standards easier. For specification authors, ReSpec handles mundane tasks like automatically generating legal and conformance boilerplates, linking citations, generating a bibliography, choosing the appropriate styling for the type of standard, and so on. This allows technical committees to focus on specifying new technical features, without having to concern themselves with the mundane requirements of the standards publication process. Further, it also incorporates utilities like syntax highlighting, [WebIDL](https://heycam.github.io/webidl/) error reporting, and other features that make technical specifications easier to read, use, test, and implement in browsers, such as Firefox, Chrome, Edge, and Safari.

The  [Web App Manifest](https://w3c.github.io/manifest/) specification serves as a typical example of ReSpec-based specification:
[![Screenshot of a ReSpec-based specification](https://dev-to-uploads.s3.amazonaws.com/i/l2wuax4xsk0tediazdst.png)](https://dev-to-uploads.s3.amazonaws.com/i/l2wuax4xsk0tediazdst.png)

ReSpec has been in active development for over 8 years, and is used extensively by Mozillians and the Web Standards Community. There are currently over 70 W3C specifications relying on it, along with an increasing list of standards bodies making use of the project to publish free and open technical standards.

## Planning and Proposal

Before you get the funding, MOSS requires you to submit an application. The application asks questions like the description of the project, reason for funding request, and the project plan.

My proposal was to develop new features, fix long standing bugs and improve the documentation, by working full-time for over 3 months.

This was the first time I made a _real_ project plan:
[![A rough scribble of project timeline made in MS Paint](https://dev-to-uploads.s3.amazonaws.com/i/tx4r4yo3oqtrt0x657w7.png)](https://dev-to-uploads.s3.amazonaws.com/i/tx4r4yo3oqtrt0x657w7.png)

With a little more professionalism, I created a Gantt Chart, which probably looks nicer:
[![A more professional Gantt Chart for the project timeline](https://dev-to-uploads.s3.amazonaws.com/i/b8uuw5svwtysrgg6s1jg.png)](https://dev-to-uploads.s3.amazonaws.com/i/b8uuw5svwtysrgg6s1jg.png)

Although the pictures above were not required in the application, they helped me better understand the project and its timeline.

Spoiler: Things often don’t go as planned. Certainly not with a pandemic around.

When you submit the application, you need someone in Mozilla to champion it to the executive council.

A few weeks after submitting the application, I received the approval email! Be patient if you’re applying for the grant: the process is very rigorous, but worth the wait! The program committee was very helpful throughout the application process.

Once the project starts, you also need to submit reports about the project's status from time to time.

## Work, Work, Work

The project officially started on May 4, 2020, though I had already begun to work as per the previous schedule of March 23. I’ve been contributing to ReSpec in my spare time for over 2 years, but with this grant, I became a full-time maintainer.

Working on ReSpec means working on multiple repositories - the core tool, its backend APIs and CI solutions. Fortunately, all of them are written in JavaScript so it needs less context switching.

During the grant period, I developed several new features in ReSpec. A notable one is the generation of an index of terms that a specification defines and references from other specifications.

[![Screenshot of an index of terms generated by ReSpec](https://dev-to-uploads.s3.amazonaws.com/i/g7n9wq82l8asuuni2rfy.png)](https://w3c.github.io/manifest/#index)

For a large proportion of the grant period, I worked on documentation improvements. The [revamped documentation](https://respec.org/docs/) is now searchable and more structured. It includes updated examples and guides, which I hope will add significant value to all users.

If you’re interested in a summary of the work done from the perspective of ReSpec users, read this [email in W3C mailing list](https://lists.w3.org/Archives/Public/spec-prod/2020JulSep/0002.html). There is also a [list of activities](https://gist.github.com/sidvishnoi/b6aaba4b00ad899f9d71bff95e950e8d) undertaken to achieve project milestones.

## Conclusion

With the MOSS award, gave me the opportunity to develop the proposed ideas and much more. I set out to let ReSpec empower specification authors by reducing the tooling oriented effort it takes while writing a specification. With the improved syntax support, new configuration options, and more helpful error messages, the community is more empowered to collaborate and standardize the next generation of web technologies. And I hope the comprehensive documentation, full of examples and guides, will be invaluable to all ReSpec users.

If you’re interested in contributing to an open source project, I would like to welcome you to ReSpec. We’ve some good first issues, as well as more involving issues, and we would be happy to mentor you!
{% github w3c/respec no-readme %}

## Acknowledgements

Thanks a million times to [Marcos](https://twitter.com/marcosc), for supporting me through the MOSS process, mentoring, code reviews, reviewing this post and being a friend. This project would not have been possible without you.

I would like to express my gratitude to Mozilla and the MOSS program committee, for providing funds to help make open source sustainable. Shout out to [Kagami](https://github.com/saschanaz) for their insightful code reviews.

Thank you, for reading this far. Stay safe!