Week 9–10: Finalizing the Project — Connecting the Client and Server Modules

Azhar Khan
3 min readAug 22, 2024

--

As my GSoC journey comes to a close, these past two weeks have been some of the most challenging yet rewarding. The work during this period was critical to the success of my project and aligned with the key objectives outlined in my GSoC proposal. The primary task was establishing a connection between the client module and the server module — a crucial step for the localization project.

l10n_client module

Establishing the Client-Server Connection

  • Overview of the final project goal
  • Initial challenges with client-server communication
  • Mentor guidance and the shift from OAuth to Basic Authentication

Implementing the Translation Submission Logic

  • Discovering the missing logic for server communication
  • Writing and integrating the logic to trigger sendTranslation
  • Successful implementation and testing

Reflections and Final Thoughts

  • Overcoming challenges with persistence and collaboration
  • Key takeaways and the impact of the project
  • Concluding the GSoC journey and future contributions

Overcoming Challenges with Client-Server Communication

The main challenge I faced was that the client module wasn’t sending translations to the server as expected. Instead, it was saving them locally. After digging into the issue, I discovered that the root cause was an improperly configured authentication system. Initially, the module was using OAuth authentication, but it wasn’t functioning as needed.

My mentor provided invaluable guidance, suggesting that I switch from OAuth to Basic Authentication. I followed this advice, but even with Basic Auth in place, the translations still weren’t being sent to the server. This led me to carefully analyze the entire codebase to identify what was going wrong.

Implementing the Logic for Translation Submission

Upon deeper inspection, I realized that there was no existing code responsible for sending the translations to the server. This discovery was both surprising and challenging, but it also presented an opportunity to develop a solution from scratch.

To implement this, I carefully studied where the translations were being saved locally. I noticed that a 201 status code was returned when a translation was saved successfully. This was the perfect point to inject the logic needed to send the translation to the server. I wrote a function, sendTranslation, which is triggered whenever the 201 code is received. This logic worked seamlessly, allowing the client module to finally communicate with the server and send translations as intended.

Final Thoughts and Reflections

Completing this task was a significant milestone, not just for the project but also for my personal growth as a developer. The challenge of debugging and writing crucial code underlined the importance of perseverance and collaboration. With my mentor’s support and a lot of careful analysis, I was able to overcome this final hurdle and deliver on the core objective of my GSoC proposal.

As I conclude this phase of my journey, I’m proud of the work I’ve done and grateful for the opportunity to contribute to the Drupal community. This experience has been invaluable, and I’m excited to continue building on the skills and knowledge I’ve gained.

--

--

Azhar Khan

Software Developer | GSoC'24 @Drupal | Actively pursuing mastery of the MERN stack