Summer of Code - Getting Started: Difference between revisions

→‎Infrastructure: Be more verbose about the project.
mNo edit summary
(→‎Infrastructure: Be more verbose about the project.)
Line 310: Line 310:
=== JSON encoding/decoding ===
=== JSON encoding/decoding ===


[https://en.wikipedia.org/wiki/JSON JavaScript Object Notation], in short JSON, is a very common human readable and structured data format.  Unfortunately, GNU Octave still lacks of builtin support of that data format.  Having JSON support, Octave can improve for example it's web service functions, which often exchange JSON data these days.
[https://en.wikipedia.org/wiki/JSON JavaScript Object Notation], in short JSON, is a very common human readable and structured data format.  Unfortunately, GNU Octave still lacks of builtin support of that data format.  Having JSON support, Octave can improve for example it's web service functions, which often exchange JSON data these days.  Another interesting applicatoin is described in another Octave GSoC project, see [[Summer_of_Code_Project_Ideas#Jupyter_Integration | Jupyter integration]].


In bug {{bug|53100}} a vivid discussion about proper JSON support took place.  As JSON is a highly demanded feature for Octave, there are already several attempts to fill the gap:
In bug {{bug|53100}} a vivid discussion about proper JSON support took place.  As JSON is a highly demanded feature for Octave, there are already several attempts to fill the gap:
Line 322: Line 322:


* '''Minimum requirements'''
* '''Minimum requirements'''
: Ability to read and write Octave code, experience with Octave packages, and understanding of the basics of autotools. The most important skill is software design.
: Good Octave and C/C++ programming knowledge.  Ability to make use of C/C++ libraries.
* '''Difficulty'''
* '''Difficulty'''
: Medium.
: Medium.
Line 329: Line 329:




=== Jupyter Integration ===
=== Jupyter Notebook Integration ===


[http://jupyter.org Jupyter Notebook] is a web-based worksheet interface for computing.  There is a [https://github.com/Calysto/octave_kernel Octave kernel for Jupyter].  This project seeks to improve that kernel to make Octave a first-class experience within the Jupyter Notebook.
[http://jupyter.org Jupyter Notebook] is a web-based worksheet interface for computing.  There is a [https://github.com/Calysto/octave_kernel Octave kernel for Jupyter].  This project seeks in first place to improve that kernel to make Octave a first-class experience within the Jupyter Notebook.


In general the [https://nbformat.readthedocs.io/en/latest/ Jupyter Notebook Format] is a plain JSON document.  In combination with another Octave GSoC project (see [[Summer_of_Code_Project_Ideas#JSON_encoding.2Fdecoding | JSON encoding/decoding]]), a second valuable outcome was that Octave can run (and fill) those Jupyter Notebooks on it's own.  This would enable Jupyter Notebook users to evaluate long running Octave Notebooks on a computing server without permanent browser connection, which is [https://github.com/jupyter/notebook/issues/1647 still a pending issue].
* '''Minimum requirements'''
: Good Octave and Python programming knowledge.
* '''Difficulty'''
: Medium.
* '''Mentors'''
* '''Mentors'''
: Colin B. Macdonald, Mike Miller, others?
: Colin B. Macdonald, Mike Miller, others?