Vala: Researching/Designing/Implementing xml/json/yaml/... integration
Project title
Vala: Researching/Designing/Implementing xml/json/yaml/... integration
Mentors
Project length
Not decided yet. Not all things proposed here are necessary to make a complete project.
Description
The goal of this project is to add xml, json and/or yaml format language integration to Vala. Other integrations already exist for DBus, GTK builder format, or GModule (https://gnome.pages.gitlab.gnome.org/vala/manual/attributes.html#dbus-attribute). Examples can be found here.
Currently, parsing and emitting files in Vala with formats like xml, json, or yaml are relatively tedious, need a lot of boilerplate code, and are much more complicated than in other programming languages. But these file formats are very commonly used in modern software, and many internet protocols and existing standards depend on them. Improving their handling would allow more efficient development, as well as lower the barrier for newcomers to Vala.
First, research is necessary, to find out how other programming languages have done the integrations. Also wanted features will need to be evaluated. For that also different example projects need to be looked into or created, to find the different use cases and related challenges and how to address them. For proposing designs of the new Syntax, "code mock-ups" are going to be written. These can later also serve as test cases for the vala test suite. Then the community will discuss and give feedback to iterate on the syntax design. As the last step (and probably the one taking the longest time), the proposed syntax('s) will be prototyped inside the Vala compiler. Also test cases for the new features, documentation and example code snippets should be developed at the end of the project. If time is left at the end, also other projects that benefit from the new features can be updated to use the new syntax, for example the Vala Language Server.
Requirements
- Experience with programming in general, as well as a good understanding of object orientation
- Ready to learn the Vala language, and to understand and investigate the syntax of other programming languages for research purposes
- Being open to reach out to the Vala community, and to contributors of other projects written in Vala, to collect feedback about the current situation and the new syntax
- Ability to grow familiar with a relatively large codebase, to find solutions to problems you encounter (There will be a lot of guidance of course)
Communication
Main communication channel: Matrix: https://matrix.to/#/#vala:gnome.org
Calls are possible for onboarding and mentoring whenever there is a need. (And when enough time)