From Octave
Jump to navigation Jump to search

GSoC 2020 Proposal[edit]

A: An introduction[edit]

  • Please describe yourself in three sentences, one of them regarding your current studies.

My Name is Sparsh Kumar Jha, an undergraduate student at Indian Institute of Technology, Kharagpur (India) and I am a Computer and Mathematics enthusiast who knows 42 programming languages :D Checkout my LinkedIn Profile: Sparsh Kumar Jha. I had been fascinated by programming since I was 11; I have always believed that “coders are the sorcerers of the 21st century”. It conveys that they have the power to create tools for the upliftment of mankind and what better way to do so than open source contributions.

  • Which languages do you speak?

I am fluent in speaking English and Hindi.

  • What's your overall background?

I am currently pursuing my Major in Mechanical Engineering.

  • Why do you want to participate in the Google Summer of Code? What do you hope to gain by doing so?

My experience with open source is relatively small but it has been so exciting that I’ve been contributing to multiple projects once I got acquainted with the concept. It has been a steep learning curve for me. Open source contributions have made me realize the importance of documented and easy to understand the code. I intend to learn a lot of skills during my GSoC journey and will help me to get acquainted with the Open source development.

  • Why are you choosing Octave?

C: Contact[edit]

  • Please state the (unique and identical where possible) nick you use on IRC and any other communication channel related to Octave. We really want unique nicks. You might want to bold it.
  • Which time zone do you live in? Will that change over GSoC duration? Perhaps DST adjustment or a relocation. Note that both UTC and GMT are not aware of daylight saving time! Please state UTC+x or -x.
  • Please state the timeframe (in UTC+0) when you feel most comfortable working during GSoC. Where are your time buffers?
    • Example: I usually code around 9.00 to 18.00 and could also try to start earlier (~7.00) for few days ;-)

Name: Sparsh Kumar Jha
Major: Mechanical Engineering
University: Indian Institute of Technology Kharagpur
Github: @lostboy529
Nick for IRC & Slack: lostboy529
Phone: (+91)8287650517
Postal Address: DD308, Lal Bahadur Shastri Hall of Residence IIT Kharagpur, 721302 West Bengal, India
Timezone: Indian Standard Time (UTC +5:30), Timezone will not change over GSoC Duration
Working Time: I usually code from 3:30 to 18:00 (Few Days will start earlier i.e. from 2:00)

E: Coding experience[edit]

This part is one of the more important ones in your application. You are allowed to be as verbose as you want, as long as you stay on topic ;-)

  • Please describe your experience with C++, Octave or Matlab m-scripts, OpenGL and Qt.
  • Please describe your experience with other programming languages.
  • Please describe your experience with being in a development team. Do you have experience working with open source or free projects?
  • Please describe the biggest project you have written code for and what you learned by doing so. Also, describe your role in that project over time.
  • Please state the commits and patches you already contributed to Octave. This question (one of the most important parts by the way) is the only part of your application our wiki admins will edit for you even after the application deadline. Code sometimes speaks louder than many words do.

F: Feeling fine[edit]

  • Please describe (in short) your experience with the following tools: We only use this question to determine where you need guidance, not for rating! We by no means expect you to be familiar with all of these and you won't necessarily need all of them while working with us.
    • IRC and mailing lists
    • Mercurial or other source code management systems
    • Mediawiki or other wiki software
    • make, gcc, gdb or other development tools
  • What will make you actively stay in our community after this GSoC is over? You can also tell us after applications close and we'll happily try to fulfill :-)

O: Only out of interest[edit]

  • Did you ever hear about Octave before?
    • If so, when and where? How far have you been involved already?
    • If not, where would you expect or advise us to do advertising?
  • What was the first question concerning Octave you could not find an answer to rather quickly? Of course more than one question can be stated. We try to improve based on this each year! Includes learning how to use it, code, website, GSoC application, …

P: Prerequisites[edit]

  • Please state the operating system you work with.
  • Please estimate an average time per day you will be able to access
    • an internet connection
    • a computer
    • a computer with your progressing work on
  • Please describe the degree to which you can install new software on computers you have access to.

S: Self-assessment[edit]

  • Please describe how useful criticism looks from your point of view as committing student.
  • How autonomous are you when developing:
    • Do you like to discuss changes intensively and not start coding until you know what you want to do?
    • Do you like to code a proof of concept to 'see how it turns out', modifying that and taking the risk of having work thrown away if it doesn't match what the project or original proponent had in mind?

Y: Your task[edit]

  • 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. Please also wiki-link the page for your elaborated proposal here.

JSON encoding/decoding[edit]

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 Jupyter integration.

In 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:

For different reasons, none of them can be directly merged into Octave core yet. Thus there is still lots of work to do. The goal of this project is to evaluate (and to cherry pick from) the implementations above, to create Matlab compatible jsonencode and jsondecode functions. This involves proper documentation of the work and unit tests to ensure the correctness of the implementation.

  • Minimum requirements
Good Octave and C/C++ programming knowledge. Ability to make use of C/C++ libraries.
  • Difficulty
  • Mentor
Kai T. Ohlhus

  • Please provide a rough estimated timeline for your work on the task. This should include the GSoC midterms and personal commitments like exams or vacation ("non-coding time"). If possible, include two or three milestones you expect.