Page MenuHomePhabricator

Outreachy 30: Connect Scribe End Applications to Data Server
Closed, ResolvedPublic

Description

Project title:

Connect Scribe End Applications to Data Server

Description of project:

The Scribe community makes Wikidata based applications like the language learning keyboard applications Scribe-iOS and soon to be released Scribe-Android as well as Wikidata language data services including the Python CLI Scribe-Data. This Outreachy Round 30 project is the culmination of years of work for the Scribe community - allowing users to download new data to the end applications via the Scribe-Server Toolforge API. Until now new data for applications would need to be bundled with the application updates, but the goal is that new features will be released in app updates and new data will be offered to users via regular Scribe-Data/Scribe-Server data pack updates.

Expected outcomes:

At the end of this project both Scribe-Android and hopefully Scribe-iOS will be able to call the Scribe-Server data API to get regular data updates. Work may be needed to run Scribe-Data on Scribe-Server. These processes will be extensively tested and new releases of all applications will be made.

All goals for the project will be defined with the accepted intern including confirmed and aspirational goals. Work will generally begin with the data download interfaces for any apps that the intern will be working on (Scribe-Android, Scribe-iOS, and maybe Conjugate-Android or Conjugate-iOS). From there any remaining work for the Scribe-Server project that is needed for API requests will be done with support from mentors. Once all parts of the data download process are finished, work will begin connecting the Scribe-Server API to the end applications. Further tasks will include testing and other work to ensure that the process robust and user friendly.

Required and/or preferred skills:

  • Skills in Kotlin for Android development and Swift for iOS development
  • Each of the above is preferred, but skills in one will likely be needed
  • Ideally the applicant would be able to develop on both Android and iOS, but the latter is not a requirement (iOS development happens only on macOS)
    • We'd ask for experience with Android development using Android Studio, with iOS development using Xcode being a plus
    • Being able to run a fairly up to date version of Android Studio would thus be a requirement

Learning outcomes:

  • The intern will have a better understanding mobile development for Android and/or iOS
  • The intern will develop skills in API requests for mobile applications
  • The intern will learn about professional development via support from their mentors

Possible mentor(s):

Microtasks:

All good first issue and help wanted issues and Scribe community projects are available for Outreachy applicants.

Please read through the project README.md and CONTRIBUTING.md files for each project for all steps needed to get started with contributing! Other helpful documents are the Scribe Wikidata Guide, architecture diagram and data contracts documentation.

The following are the links to good first issue and help wanted issues for all Scribe projects:

Any other additional information that the interns should know about:

NOTE: Community communications for Scribe happen in our public Matrix chatrooms. If you're new to Matrix, we'd suggest using Element as your client :) Feel free to introduce yourself in the General room if you'd like, and communication for the projects involved will happen in the Mentorship Programs, Android, iOS, and Data rooms.
IMPORTANT: GSoC / Outreachy candidates are required to complete micro-tasks during the application period to prove their ability to work on a three month long project.

Event Timeline

I am willing to support as a mentor.

LGoto renamed this task from GSoC 2025: Connect Scribe End Applications to Data Server to Outreachy 30: Connect Scribe End Applications to Data Server.Mar 5 2025, 4:35 PM
LGoto edited projects, added Outreachy (Round 30); removed Google-Summer-of-Code-2025.
LGoto changed the visibility from "Public (No Login Required)" to "acl*outreachy-mentors (Project)".
AndrewTavis updated the task description. (Show Details)
AndrewTavis updated the task description. (Show Details)
LGoto changed the visibility from "acl*outreachy-mentors (Project)" to "Public (No Login Required)".Mar 14 2025, 5:28 PM
Gopavasanth added subscribers: DeleMike, Gopavasanth.

Congratulations @DeleMike on being selected for Outreachy! 🎉
Wishing you a great journey ahead—happy coding and best of luck with the program!

As you move through the community bonding period, feel free to refine your project timeline and finalize the steps leading up to the coding phase. If you have any questions, don’t hesitate to reach out—whether on Zulip, via email, or directly on this ticket.

Weekly Internship Report

Week 1: June 2 - June 6


Tasks completed
  • I created a blog post about myself where I introduced myself, my proudest contribution in the Scribe ecosystem and what I hope to get from the internship. Blog prompt: "Introduce yourself"

Challenges faced
  • None

Learnings and skills gained
  • I watched a tutorial that helped me gain more understanding about Android Testing
  • Also read documentation on testing here

Additional comments
  • My mentors were really great and swift to respond to my questions

Weekly Internship Report

Week 2: June 9 - June 13


Tasks completed
  • I created an issue, "add Instrumentation Tests to GitHub Actions Workflow". This issue makes Scribe-Android really trustworthy by ensuring all Android Instrumentation tests are working as expected. See issue here
  • I successfully created a solution to solve the issue #422, via this Pull Request(PR) here.
  • I also created a PR to resolve issue #358, which talks about creating a set of Android Instrumented test cases for the AboutUtil section of Scribe-Android. See PR here

Challenges faced
  • Working on PR #423 was challenging; it was difficult to test GitHub Actions locally, so I had to keep pushing commits to my local branch to test the PR.

Learnings and skills gained
  • I learned how to create GitHub Actions for Android Instrumented Testing
  • I also learnt how to get a cleaner git history. I learnt that if your local branch, 'X-BRANCH-NAME' and 'origin/feat/X-BRANCH-NAME' have diverged, you can use git pull --rebase to get a cleaner history.
  • Also read the documentation on how to implement GitHub Actions
  • Had discussions in our chat about Scribe-Server

Additional comments
  • My mentors were really great and swift to respond to my questions

Weekly Internship Report

Week 3: June 16 - June 20


Tasks completed
  • I finalised the PR, writing Android Test cases for AboutUtil. See PR here. While resolving it, I fixed other issues that came up with it such as:
    • Increasing the emulator start up time from 30 to 50 minutes to make sure all test cases pass before it shuts down
    • I also fixed a long issue I was trying to resolve. It was passing locally, but it did not pass when the GitHub actions ran, and the issues were:
      1. AndroidRuntimeExceptionstartActivity() from non-Activity context
      2. NoActivityResumedException in tests like test_onShareScribeClick_doesNotCrash

You can see more details in this comment.

  • I have also tried to set up the server project locally. It is a WIP

Challenges faced
  • Working on PR #395 was challenging; I was wondering why it was working locally and not on GitHub. I checked the logs and bit by bit, I solved it! ---
Learnings and skills gained
  • Error Debugging
  • I understand the Kotlin language standards a bit

Additional comments
  • My mentors were really great and swift to respond to my questions

Weekly Internship Report

Week 4: June 23 - June 27


Tasks completed
  • The issue about creating a test case for the AboutUtil class was resolved here.
  • I tried to run Scribe-Data, and I tried fixing it locally and then got a testing issue, which I filed here.
  • I resolved the issue by adjusting the failing test cases as seen in this PR
  • Co-reviewed server PR by Asif
  • I have also successfully set up Scribe-Server locally 🚀
  • I also set up my own Scribe test project here

Challenges faced
  • Setting up my test scribe server was challenging, but thanks to @Afi570's swift response, I was able to take his advice and finally do it!

Learnings and skills gained
  • Error Debugging
  • learned about DBBrowser for SQLite, learnt some SQL, learnt about DB transactions and MariaDB(Still a WIP)
  • learnt how to checkout to a repo that is not yours and you don't have the permission to view it, for example, git fetch upstream pull/23/head:pr-23, and view it
  • learnt how to create mock interaction cases for test environments that require user interaction, but it is not possible using Python. To solve issue 621 via pr 622

Additional comments
  • My mentors were really great and swift to respond to my questions

Weekly Internship Report

Week 5: June 30 - July 4


Tasks completed
  • Submitted a PR to start working on Scribe-Server issue #5. View PR here.
  • The PR led to a series of conversations that can be seen in the PR's discussion and a comment about settting workflows to track the progress of testing in PRs. Full comment can be seen here.
  • I resolved the issue by updating the pr_ci.yaml files and pr_maintainer_checklist.yaml files. See PR that resolved issue #30 here.
  • Set up initially next steps for Scribe-Server after initial review from Andrew and Asif.
  • I added test coverage report for Scribe-Server as seen in the GitHub Actions 🚀

Challenges faced
  • None

Learnings and skills gained
  • Improving my Go skills
  • Learnt about generating test coverage reports and what it means. I also learnt about SolarQube and they can be used to automate the process.

Additional comments
  • My mentors were really great and swift to respond to my questions

Weekly Internship Report

Week 6: July 7 - July 11


Tasks completed
  • Raised an issue about adding tests for CLI upgrade command here
  • I resolved the issue in this PR
  • After learning about revive, I proposed using it for our Scribe-Server in this issue.
  • More work was done on implementing APIs for Scribe-Server. See work here.

Challenges faced
  • None

Learnings and skills gained
  • Improving my Go and SQL skills
  • Learnt about a new linting package revive.

Additional comments
  • My mentors were really great and swift to respond to my questions

Weekly Internship Report

Week 7: July 14 - July 18


Tasks completed
  • I resolved issue #32 which talks about adding a revive into our Go project to encourage proactive linting, best practices, and faster reviews. See the PR here
  • Fixed issue with Scribe-Server not having a favicon here
  • Finally got the PR that makes Scribe-Server APIs to be fully functional here thereby closing the related issue.
  • The relating to creating a database schema has also been closed due to it been resolved by the PR above.
  • Created solution to enable Scribe-Server to run the Python Scribe-Data package so that it can fetch the data needed to run in the server. See issue here and also PR here.
  • Work on setting up a user face documentation is still in progress here.

Challenges faced
  • None

Learnings and skills gained
  • Improving my Go and SQL skills
  • Learnt how to run another environement inside a Go server project.

Additional comments
  • My mentors were great and swift to respond to my questions

Weekly Internship Report

Week 8: July 21 - July 25


Tasks completed
  • Completed the user face documentation via the PR here.
  • Worked with Andrew to know what issues have to be included in our latest app release. We marked these issues with "next release".

Challenges faced
  • None

Learnings and skills gained
  • Learnt about OpenAPI and how to implement it in a Server project

Additional comments
  • My mentors were great and swift to respond to my questions

Weekly Internship Report

Week 9: July 28 - August 1


Tasks completed
  • I resolved issue #36, which involved confirming that our APIs work on ToolForge.
  • I resolved issue #37, which involved confirming that our update_data.sh works on ToolForge, fetches and stores it in the right place.
  • I resolved issue #38, which involved setting up a cron job and also a manual trigger for update_data.sh workflow. See PR here.

Challenges faced
  • Setting up the bash script to move data around in Toolforge accounts and my custom tool.

Learnings and skills gained
  • I had to do a lot of research around Toolforge and how to set up a cron job.
  • I also learnt we can open a Python shell in Toolforge to run our job.

Additional comments
  • My mentors were super great and incredibly swift to respond to my questions.

Weekly Internship Report

Week 10: August 3 - August 8


Tasks completed
  • I completed the review on this PR here.
  • I have also worked on the "Already plural" issue via this PR that is waiting for final review.

Challenges faced
  • None

Learnings and skills gained
  • Learning more about Kotlin

Additional comments
  • My mentors were incredibly swift to respond to my questions.

Weekly Internship Report

Week 11: August 10 - August 15


Tasks completed
  • I completed work on the "Already plural" issue via this PR that is waiting for final review. We had some screen visual issues that had to be fixed via this PR; hence, that is why it is still up.
  • I raised an issue about the CLI not filtering based on contracts. See issue here.
  • I also resolved the issue #627 via the PR here.
  • We also had extensive discussions about using contracts to filter our data, which our servers will provide. See the issue here.

Challenges faced
  • None

Learnings and skills gained
  • Learning more about bash scripting
  • Learnt about the filtering option via scribe-data
  • learnt about the need for a multiple values directory to suit different screen sizes and pixel densities.

Additional comments
  • My mentors were incredibly swift to respond to my questions.

Weekly Internship Report

Week 12: August 17 - August 22


Tasks completed
  • I opened an issue to ensure contracts_dir is always a Path object in export filtering. The issue was resolved via this PR.
  • I also resolved an issue on fixing scribe-data convert -l for Multiple Languages. See the PR here.
  • I also fixed an issue with the get_parser so that it allows multiple languages and datatype passes. The issue was resolved via this PR.
  • I opened an issue with the convert_parser not accepting multiple datatype passes. See PR here.
  • I also opened a PR here that allows Scribe-Server to now fetch data from the filtered tables, hence improving performance greatly. Dropping the response time from ~7secs to ~400ms.

Challenges faced
  • None

Learnings and skills gained
  • Learning more about bash scripting
  • Learnt some SQL syntax

Additional comments
  • My mentors were incredibly swift to respond to my questions.

Weekly Internship Report

Week 13: August 24 - August 29


Tasks completed
  • The PR I opened that allows Scribe-Server to now fetch data from the filtered tables is still in review. I fixed some issues raised after a review session.
  • I started working on the standardisation of our keyboard issue

All PRs will be resolved even after the internship.

Challenges faced
  • None

Learnings and skills gained
  • Learnt more about bash scripting

Additional comments
  • My mentors were incredibly swift to respond to my questions.
AndrewTavis closed this task as Resolved.EditedSep 18 2025, 12:47 PM

Marking this task as resolved given a very successful Outreachy from @DeleMike 😊 Context of this task shifted towards working on Scribe-Server in Go, with the project now being ready to serve data to the client applications. Towards the end there was rapid development of Scribe-Data to work towards finalized calls of Wikidata and preparing the CLI for use within Toolforge. Progress on the Android application was also amazing, with us getting very close to the initial release.

Thanks so much, @DeleMike! 🚀