Summer of Code - Getting Started: Difference between revisions

Tags: Mobile edit Mobile web edit
Line 116: Line 116:


== Adding functionality to packages ==
== Adding functionality to packages ==
=== YAML encoding/decoding ===
[https://en.wikipedia.org/wiki/YAML YAML], is a very common human readable and structured data format.  Unfortunately, GNU Octave (and Matlab) still lacks of builtin support of that omnipresent data format.  Having YAML support, Octave can easily read and write config files, which often use YAML or JSON.  The latter JSON format has been [[Summer of Code#GSoC_2020 | successfully implemented for Octave during GSoC 2020]].
The goal of this project is to repeat the GSoC 2020 success story with [https://github.com/biojppm/rapidyaml Rapid YAML] or another fast C/C++ library.
The first step is research about existing Octave/Matlab and C/C++ implementations, for example:
* https://code.google.com/archive/p/yamlmatlab/
* http://vision.is.tohoku.ac.jp/~kyamagu/ja/software/yaml/
Then evaluate (and to cherry pick from) existing implementations above, compare strength and weaknesses.  After this, an Octave package containing en- and decoding functions (for example <code>yamlencode</code> and <code>yamldecode</code>) shall be created.  This involves proper documentation of the work and unit tests to ensure the correctness of the implementation.
Finally, the package is considered to be merged into core Octave, probably after the GSoC project.  However, it can be used immediatly from Octave as package and is backwards-compatible with older Octaver versions.
* '''Required skills'''
: Knowledge of Octave and C/C++
* '''Potential mentors'''
: [[User:siko1056|Kai]]


=== OCS package ===
=== OCS package ===