diff --git a/projects/projects_2024-25/Report-Kilian-Ury-12291800.md b/projects/projects_2024-25/Report-Kilian-Ury-12291800.md new file mode 100644 index 0000000000000000000000000000000000000000..bf88d390d67d4564413d300809c18b47a1f21206 --- /dev/null +++ b/projects/projects_2024-25/Report-Kilian-Ury-12291800.md @@ -0,0 +1,107 @@ +# **LINFO2401 project report - Contributing to an Open Source project: Opsdroid** + +| **Author** | Kilian Ury | +| ----------------------- | -----------------------------------------------------------------------------------------------| +| **Date** | 01/12/2024 | +| **NOMA** | 12291800 | +| **Academic Year** | 2024-2025 | +| **Open Source Project** | [opsdroid](https://github.com/opsdroid/opsdroid) | +| **Pull request made** | [Update French translations in opsdroid.po](https://github.com/opsdroid/opsdroid/pull/2047) | +| **License** | [Apache License 2.0](https://github.com/opsdroid/opsdroid/blob/main/LICENSE) | + +## Project: Opsdroid + +Opsdroid is an open-source chatbot framework written in Python that allows developers to create, deploy, and manage conversational bots. The framework provides: + + - Connectors to integrate bots with various messaging platforms like Slack, Telegram, Matrix, and Microsoft Teams. + - Modules to add functionality, including integration with external APIs (e.g., weather services) and natural language processing (NLP) tools like Rasa NLU or Dialogflow. + - Flexibility to extend bots for handling tasks like interacting with databases (MySQL), CMS systems (WordPress), and custom APIs. + +Opsdroid's modular architecture and welcoming community made it a perfect choice for my first open-source contribution. + +## Why I Chose Opsdroid + +I chose Opsdroid because: + + - Ease of Extensibility: It offers modular design, making it easy to add new skills or connectors. + - Well-Documented: The project includes extensive documentation and tutorials, which simplified the onboarding process. + - Community: The maintainers are responsive and open to new contributors. + +Additionally, Opsdroid provides a practical environment for experimenting with Python and APIs, a combination I was eager to explore. + +## Exploring Opsdroid Locally + +I began by cloning the Opsdroid repository and setting up the project locally. + +Following the official documentation, I installed the necessary dependencies and ran Opsdroid locally. This allowed me to experiment with various skills and connectors: +[opsdroid documentation](https://docs.opsdroid.dev/en/stable/quickstart.html) + + - Weather API Skill: I added a skill to fetch weather updates using the OpenWeatherMap API. + - Currency Conversion API: Another skill I added provided real-time currency exchange rates. + +These experiments helped me understand how Opsdroid interacts with APIs and responds to user inputs. + +## Contribution: Improving French Translations +### Identifying Translation Issues + +While exploring Opsdroid, I noticed that some French translations were either missing or incorrect in the opsdroid.po file located in locale/fr/LC_MESSAGES/. + +Examples: + + - Incorrect translations of technical terms. + - Missing translations for newly added features. + - Outdated line references in the .po file. + +### Tools Used + + - Poedit: A user-friendly software that simplifies managing and updating .po files. + - Gettext: I used this tool to extract translatable strings and generate updated .pot templates. + +Extract translatable strings from Python files : +find . -name '*.py' -printf '%P\n' > listfile.txt + +Generate a POT template file from Python files +xgettext -d messages -o locale/messages.pot --language=Python --from-code=UTF-8 -f listfile.txt + +### Updating Translations + + - Loaded the opsdroid.po file in Poedit. + - Updated the file with accurate translations for missing and incorrect entries. + - Ensured the file was synchronized with the latest .pot template to reflect accurate line numbers. + +## Submitting a Pull Request + +Once the translations were completed, I: + + - Forked the original Opsdroid repository and committed my changes. + - Created a pull request (PR) with a detailed explanation of the changes and referenced relevant issues. + +I ensured that the PR description was clear to facilitate review by the maintainers. + +## Journal + +Week 1: Discovering Opsdroid + + - Discovered Opsdroid through GitHub’s “Good First Issues†section. + - Explored the documentation and understood the project’s architecture. + +Week 2: Local Setup & Experimentation + + - Set up Opsdroid locally. + - Added custom skills and connected to external APIs. + +Week 3: Translation Contribution + + - Identified and fixed issues in the French translations using Poedit and Gettext. + - Submitted a pull request for review. + +## Conclusion + + Contributing to Opsdroid has been a rewarding experience. It taught me: + + - How to navigate open-source projects and follow community guidelines. + - The importance of communication when interacting with maintainers and fellow contributors. + - Technical skills like managing localization files and using translation tools like Poedit and Gettext. + +This experience has inspired me to continue contributing to open-source projects and improving my skills in collaborative software development. +This journey has been invaluable, and I look forward to making more contributions to the open-source community.