After I had a few of my PRs merged and was feeling confident about the codebase, I moved on to a bigger project.
The Taskcluster platform is built on the microservices model. The backbone
of the whole platform is the taskcluster-queue
which is implemented using RabbitMQ
that uses Advanced Message Queueing Protocol(AMQP) at its core. Whenever a task needs to
be performed its specification is published onto the queue where workers pick up the
relevant tasks. The format in which messages are published are fixed beforehand and must
be adhered to by all the participating clients and microservices.
This project involved increasing the length of certain fields of the message format as well as implementing unit tests using MochaJS for the required changes. As the queue and messaging is integral to the whole system, identifying all the services using the messages and making required changes in the schema was a challenging task. With the guidance of the Taskcluster team I was able to zero out all the places affected by this change and make neccessary schema adjustments. After the changes were made, I wrote several new unit tests to ensure all the changes were covered.
This was my first big project which involved modifying the core of the system. Infact, this change in itself was critical enough that the Taskcluster team decided to take it through their internal RFC (Request for Comments) process (which is somewhat similar to the IETF RFC process). Being trusted to work on such a core part of the system was an amazing experience and it truly gave me an insight on how vast such applications really are.
I’m attaching the relevant links below:-
-
Bugzilla is Mozillas internal forum to discuss and post new bugs/projects.
-
The PR I submitted for the project. Almost 500 lines were modified with changes spread throughout the whole system.
-
RFCs are usually created for changes that are critical enough to warrant an approval by all the Taskcluster maintainers.