You are on page 1of 5

Rachel Tam

Email: racheltam818@icloud.com
Matrix: @rachleona:matrix.org
GitHub & GNOME GitLab: rachleona

Improve Tracker SPARQL


developer experience by
creating "web IDE" for
developing queries
DESCRIPTION
As described in ideas list provided:
Implement a web IDE in Tracker SPARQL, as described in GNOME/tracker#421.

Mentor(s)
1. Carlos Garnacho
2. Sam Thursfield

What city and country will you reside in during the summer?
Cambridge, UK

What applications/libraries of GNOME will the proposed work modify or create?


New Web IDE for writing Tracker SPARQL queries, possible minor changes to Tracker itself to
expose necessary endpoints.

What benefits does your proposed work have for GNOME and its community?
Improved developer experience for app developers that use libtracker-sparql. This includes apps
that do desktop search in GNOME.
Why are you the right person to work on this project?
I have extensive JavaScript and TypeScript experience, having worked on various web
development projects, capable of working across the stack and providing technical leadership in
a more recent university project. I’m also confident in my ability to learn quickly, which I have
demonstrated in both my internship at Netcraft last year and my university project this year, both
of which required me to work with various unfamiliar tech like SvelteKit, Prisma, and Perl on the
fly.

My database course in university also included graph databases which will likely help me get a
good grasp of the RDF/SPARQL ecosystem quickly as well. While this is my first major tooling
project, I’m very eager to learn and excited to work more closely with developers that will feel the
direct impact of my work. Additionally, many of the web development projects I’ve worked on
have involved medium to large databases, and I’ve been involved in schema development as
well as general database management. However, these have mostly been relational databases,
so I’m looking forward to working with something new on this project.

How do you plan to achieve completion of your project?


I plan to base the user interface design off of regex101, providing a main query area and a test
data input space in the same page such that users can run queries to see how the changes they
make to the query affects the result with respect to the graph with the given endpoint. This would
be the most straightforward UI best for more experimental/debugging use cases. Below is a
sketch of the main “IDE” page.
The test data endpoint inputs space will provide inputs relevant to connecting to a specific HTTP
endpoint exposed by the user, clear instructions will need to be given here, as well as extra
options relevant to setting up the connection, if they exist.

The example queries space would provide a few basic select queries to get the user started. I’m
not sure if possible suggestions based on the endpoint given would be helpful, but it’s something
I can look into towards the second half of the project timeframe.

Lastly, I plan to have a simple scrollable multi selection box to allow toggling of ?parameters. This
is likely doable by filtering in the JS generation of the table itself.

This is still quite basic in terms of features offered, and I am happy to add in more features once
I’ve gotten feedback from other Tracker developers.

As of now, I have not received a response to my inquiry of the trackers group chat so the
technical plan I have is not very well defined yet, but the main input interface will likely be built
using CodeMirror (which has community maintained SPARQL support). The rest of the
components should require minimal real time interactions and should be doable on a basic
HTML/CSS build. I might opt to use a CSS library closer to the time to provide a smoother
interface - I will discuss this with my mentor to determine if the relative bulk will be worth it.

Please provide a sequence of tasks and subtasks and how long (days) you
estimate it will take you to complete each of them. Highlight important
milestones/deliverables.
Based on a 8 weeks time scale and minimal technical context I have come up with the following
plan:

1. Build basic interface (1-2 weeks)


a. Set up Code Mirror input field + set up SPARQL syntax highlighting (?) – 3 to 4
days (if problems arise with SPARQL package push that to additional features
section unless fatal)
b. Set up form submitting/API calling mechanisms + data validation (e.g. invalid
endpoints) – 1 to 2 days
c. Set up a few basic e2e tests (with something like Playwright) with test graphs and
expected results – 2 days
d. Buffer debugging time – 3 days
2. Integrate with Tracker API (1-2 weeks)
a. Run e2e tests and ensure basic interface works as intended – 1 to 2 days
b. Record and debug unexpected behaviours (including possible tweaks of Tracker
API) – up to one week
c. MILESTONE: At around 3-4 weeks we should have a basic query tester ready
3. Additional features + styling (2-3 weeks)
a. ?parameters selection feature + relevant tests – 3 to 4 days
b. Linter + warnings (?) – one week
c. Miscellaneous features and styling changes based on feedback – 1 to 4 days
d. Buffer debugging time – 3 days
e. MILESTONE: MVP finished!
4. Gather useful examples, tutorials, documentation links and add them to the website so
that they are accessible (2-4 days)
5. If there is additional time: further e2e test writing/debugging/requested features
6. Deployment (2 days)

What are your past experiences with the open source world as a user and as a
contributor?
I have used various open-source libraries in the past when developing in JS and
Python. Open source software like Cryptpad is also integral to a lot of the inner
workings of the campaign group I work for, so I really appreciate the transparency
as compared to most modern commercial software. I have yet to provide any
major contribution to open-source projects, but I’m hoping that would change
through GSoC.

Please include links to your code contributions which have already been
merged, or to Gitlab merge requests for the issues you fixed for the project of
your proposal or any other GNOME projects. This demonstrates your
willingness to learn and familiarity with development workflow.
https://gitlab.gnome.org/GNOME/gnome-weather/-/merge_requests/161

https://gitlab.gnome.org/GNOME/gnome-weather/-/merge_requests/160

If available, please include links to any code you wrote for other open source
projects.
N/A
What other relevant projects have you worked on previously and what
knowledge have you gained from working on them?
In the internship at Netcraft last year, I worked on creating a custom web crawler to replace a
legacy system used to detect skimmers (a class of browser-side malware). Through this project I
learned about a lot more low level behaviour of JS that we had to leverage to outsmart malware
developers. I also had to learn to work with their internal API on the fly which helped improve my
documentation literacy a lot.

This year, we also had a group project in university that involved us working with an external
client to develop a large web application for closing the feedback loop between the Nairobi
urban development team and the general public. This required a lot of thought put into making
the UI as intuitive and accessible as possible. It taught me a lot about working with other people
as well as how to think about user interaction from different perspectives. I also learned to work
with a new tech stack involving SvelteKit and Prisma well enough to act as technical lead for the
2 months project. I plan to apply my knowledge on these modern web development tools in this
project if possible.

What other time commitments, such as school work, exams, research, another
job, planned vacation, etc? What are the dates for these commitments and how
many hours a week do these commitments take?
My university exams are during the beginning of June so I would really appreciate it if I could
have a later start date around mid-June or end of June. I also have a big end of year event on the
18th of June. Otherwise I am entirely free during the main GSoC development period from end of
June onwards and am happy to work on a 8-9 weeks time frame.

You might also like