Lk

Joined 30 March 2020
2,151 bytes added ,  30 March 2020
→‎Y: Your task: Merge Proposal page here. Do not create top-level pages for GSoC.
(→‎Y: Your task: Merge Proposal page here. Do not create top-level pages for GSoC.)
 
Line 48: Line 48:
== Y: Your task ==
== Y: Your task ==
* Did you select a task from our list of proposals and ideas?
* Did you select a task from our list of proposals and ideas?
** If yes, what task did you choose? Please describe what part of it you especially want to focus on if you can already provide this information. <br />Yes, I selected the [https://wiki.octave.org/Summer_of_Code_-_Getting_Started#JSON_encoding.2Fdecoding JSON encoding/decoding] project. I have used JSON files in data analysis and visualization projects in the past, and I think that Octave needs to have JSON integration to succeed as a widespread computational language. [[Proposal]] for reference.
** If yes, what task did you choose? Please describe what part of it you especially want to focus on if you can already provide this information. <br />Yes, I selected the [https://wiki.octave.org/Summer_of_Code_-_Getting_Started#JSON_encoding.2Fdecoding JSON encoding/decoding] project. I have used JSON files in data analysis and visualization projects in the past, and I think that Octave needs to have JSON integration to succeed as a widespread computational language. [[#Proposal]] for reference.
* Please provide a rough estimated timeline for your work on the task. <br />  
* Please provide a rough estimated timeline for your work on the task. <br />  
{| class="wikitable" style="margin-left:30px;"
{| class="wikitable" style="margin-left:30px;"
Line 85: Line 85:
|Final Results
|Final Results
|}
|}
== Proposal ==
=== [https://savannah.gnu.org/bugs/?53100 Bug #53100] ===
*Introduction<br />Following Matlab's introduction of jsondecode(string) and jsonencode(string) in early February, a feature request was made to create similar functions in Octave. The proposed functions would allow users to easily work with JSON formatted strings in Octave, inputting and outputting JSON files, respectively.
*Imperfections
**Due to an abundance of cpp parser libraries, different ones with different implementations have been selected and implemented separately by various contributors.
**"jsonstuff .. doesn't cover more general or flexible JSON handling, or persisting of arbitrary Matlab data structures to JSON"
*** no intention of further extension so as to match base Matlab
***As of February 2020, "it's about feature-complete, but it's not Fast (because some stuff is still in the M-code layer, that should be down at the C++ oct-file layer)".
**jsonlab is looking to be more robust than jsonstuff, implemented as a specialized package that works with both Octave and Matlab rather than a part of base Octave.
***also works with UBJSON/MessagePack (different filetypes for different use cases)
**rapidjson is not aiming to create an equivalence to Matlab's jsonencode/jsondecode, instead creating new data types and functions to aid in working with JSON files.
**I was not able to find much information about JSONio's deficiencies.
=== Contribution ===
All of these packages were written by individuals who see their work's strengths because they have naturally created a product that works well for their needs. To implement a feature into Octave core, however, it must work well in a considerably more extensive range of applications. A third party should analyze in-depth which implementation makes the most sense to bring into Octave core and work with the contributor to do so. Some contributors expressed in the Bug #53100 forum that they find themselves lacking the time to finalize their implementations, as is the nature of open-source work. Thus, dedicating my summer, I could help finally bring fluid JSON interoperability to Octave.
[[Category: Summer of Code]]
[[Category: Summer of Code]]