I was selected for the December 2023 to March 2024 Outreachy internship round to contribute to the GNOME project: Implementing end-to-end testing for GNOME OS using openQA. I worked on this project together with my co-intern Dorothy Kabarozi, under the mentorship of Sam Thursfield and Sonny Pier, Two amazing people who I greatly admire. We were able to accomplish a lot, and there is so much I learned along the way.Β
Oganization of Tasks and Feedback
Our main communication channel was a Matrix room, made up of Sam, Sonny, Dorothy, Tanju (me) and other GNOME foundation members like Felipe Borges and Tobias Bernard. We all posted our daily stand-ups in this forum, every 8 AM GMT, and it was of the format: State what you did yesterday, What are you doing today, and What blockers are you facing? This helped us keep a log of all our activities, making it easy to keep track of our progress.Β
Apart from the daily chats we had in the our matrix channel, we also had weekly video meetings every Monday, during which we discussed about the progress of the project so far, and set goals for the week. The various tasks were tracked and organized on this board, under four columns: Open, Ready, In Progress, Closed. This is a good way to keep track of the project’s progress.
Goals and Accomplishments
Originally, our goal for the internship was to implement tests for accessibility features for GNOME desktop and also test some main apps on mobile. Even though we faced several difficulties achieving our goals, we ended up achieving them and more.
- We created a test suite for accessibility tests in which we tested accessibility feature such as text-to-speech, on-screen keyboard, magnification, etc. (See a full report here).
- We also created a test suite for mobile tests in which we implemented tests for some applications like: Evince, clock, Nautilus etc. We only wrote tests for the apps that are responsive so far. (Link to full report will be added once available)
- We also added a test suite for locale, which tests changing the language to Arabic, Japanese and Russian (Link to full report will be added once available).Β
- Finally, we modified several existing app tests especially in situations when significant UI changes we made in new releases of the GNOME OS.
Lessons Learned
First off I would like to say that this has been the most enriching experience of my career so far, and I am forever grateful for this opportunity to challenge myself and actually implement all the lessons I have been learning since I began my journey into the software engineering world, while acquiring other skills and learning important lessons which I think will be very useful later on in my career. Below is list some lessons I learned:Β
-
Effective Communication: Working in a distributed team taught me the importance of clear and frequent communication. Our daily standups and weekly meetings helped us stay aligned and address any issues promptly.
-
Adaptability: Throughout the internship, I encountered challenges that required me to adapt and find new solutions. This experience improved my problem-solving skills and made me more flexible in my approach to tasks.
-
Open Source Collaboration: Contributing to an open-source project like GNOME taught me valuable lessons about collaboration and community. I learned how to navigate codebases, work with others’ contributions, and contribute back to the community.
-
Time Management: Balancing internship tasks with my other commitments taught me the importance of effective time management. I learned how to prioritize tasks and allocate time wisely to meet deadlines.
-
Technical Skills: Working on implementing end-to-end testing using openQA allowed me to deepen my technical skills in areas such as testing frameworks, automation, and software development practices.
-
Feedback and Iteration: Receiving feedback from mentors and community members helped me improve my work continuously. I learned the value of iteration and how feedback can lead to better outcomes.
-
Documentation: Documenting my work and processes was crucial for the project’s success. It not only helped me keep track of my progress but also made it easier for others to understand and contribute to the project.
-
Self-Reflection: This internship provided me with the opportunity for self-reflection and personal growth. I learned more about my strengths and weaknesses, which will guide me in my future endeavors.