Hi there, I'm from Serbia and I'm studying at School of Electrical Engineering, University of Belgrade.
I haven't worked on any open source projects but this topic really got me interested.
I've been competing in problem solving competitions for 7 years but really don't know where to start here. @xedin, I suppose you are the one who is going to answer on bunch of questions I have to ask.
Currently diagnostic definitions are located in .def files e.g. DiagnosticsSema.def.
We'd like to change that so diagnostics could be stored in a more accessible format
like JSON or YAML (or something else entirely) to make it easy for (non-technical)
people to contribute new translations.
Another disadvantage of .def files is that they are pre-processed into another format while compiler itself is built. With a new format we'd like this limitation to be lifted to enable changes to diagnostic messages without rebuilding compiler itself e.g. path to the file could be passed via argument to the compiler as well as expected locale.
The most relevant bits of the compiler code are located in DiagnosticEngine, and various DiagnosticConsumer classes. Clients could be found in lib/Sema/CSDiagnostics.cpp.
The more details the better but we'd really like to see how the new format is going to be structured, how diagnostics are going to be verified to use existing ids and correct arguments and performance considerations.
If you have any other questions please let me know!
Also note that draft proposals are due at the end of this week so if you want to participate you'd have to submit your solution before March 30th.