GSoC 2022 Reading YAML files with Octave

Recently, I was interested in reading / writing YAML files from Octave. To my knowledge Matlab does not have any builtin solution for this, but a few 3rd party libraries for Matlab exist, which are mostly Java based. Does anyone have a good solution for this?

If not and as GSoC 2022 is about to start soon, I added a new project:

P.S.: If you would like to work on an own project for Octave, do not hesitate to extend the wiki :wink:

1 Like

No ready solutions I know of but I agree it is very consistent with a GSoC project, similar to the JSON functionality.

1 Like

@siko1056 I’m interested in this GSoC 2022 project. I’ve read and explored the octave dicourse and github page for some time, and I’ve also seen GSoC 2020 project about json decoding and encoding. This gives me inspiration on how I can build a YAML package for octave. I would like to start the project from now on, and I wonder if there’s anything I need to pay attention to. I’m looking forward to your guidance, thank you!

Great you are interested in this project. I think recently you applied for membership in the GitHub group, thus you should be able to create and work on a package repository there.

How familiar are you with Octave in general and what motivates you to work on this package? Do you work with YAML in other projects as well? :slightly_smiling_face:

In GSoC2021 I was intended to apply to octave project, but at that time I didn’t know what I can do to contribute to the community so I just gave up. Still, I installed octave and have learned some basic usage of octave. I didn’t use it very deeply (Maybe that’s because I’m not very good at maths…).
This year’s project about yaml is something I can do some work for. I’m familiar with json/yaml files because I work with them a lot in my own project for configuring and web scraping. This will be a huge encouragement to me if I can finally make it. :slight_smile:

That is great. Indeed this project is of less mathematical nature. Nevertheless it is very important for Octave, as YAML has become more and more popular as data exchange format in science and engineering, thus for the suspected majority of Octave users :wink:

Are you already familiar with Rapid YAML or does the language you use for web scraping already have builtin YAML support?

I used python for web scraping. It’s easy to parse a YAML file in python using PyYaml.
I’m now learning ryml(Rapid YAML) by reading and practicing every section in the samples included in the ryml source code. Most of them is not hard for me to understand, so I can soon start to write some functions to deal with simple yaml data.
And I have a question : do i need to complete most of the funcions before i ‘Create a new repository’ in octave package repository, or can I just create it now and gradually submit my code to complete it?

You do not need to complete any functions before creating an Octave package. I think it is a good idea to try making yourself familiar with Octave packages and how to build C++ code written inside them (preferably, the code samples that you mentioned). Looking here can be helpful in that.

2 Likes

Thank you! I’ll soon create it and try to learn how to make packages.

1 Like

Hajimemashite mentors!
I am Unmay.I am currently pursuing B.tech(2nd yr) in ECE from Indian Institute of Information Technology. I have completed C, application programming, data structures and shell scripting courses in my 1st year and 3rd semester. However I’m more comfortable and experienced in C++(self taught) than C. We use Octave at our university in departmental courses such as digital signal processing, signals & systems and mech & graphics, yet I am still learning Octave. I wish to work on YAML encoding/decoding but I’m confused if its suitable for me or should I go for openlibm as the project size is 350 hours, please guide me. Thank You.

Welcome @Ace_D_Portgas and thanks for your interest in Octave :slightly_smiling_face:

How much time can you devote for GSoC this summer (or this summer and autumn, for the 350 hour projects)? If you decided how much time you can spend, the next step is finding out in which of the two projects you are more interested in.

I suggest you just give both projects a quick start. Read relevant material, think about what is necessary to do, and finally ask yourself the question: do I understand what should be done and do I really care for it? If the answer for one project is yes, devote some more time to discuss with us and other potential GSoC contributors in this thread what you already did (talking about steps that others already discussed here before is no crime, maybe you found better ways to do it or you identified a problem that others did not see), what you are going to do and think about a convincing proposal for next month.

Please do not feel discouraged about the length of this topic. Until 2022-04-19T18:00:00Z no contributor is decided for any project here. GSoC is a large voluntary time commitment for each mentor, as well. Thus a mentor only starts with you into this summer, if you show us you care about this project and enjoy working on it :sunglasses: Then it is for both contributors and mentors a valuable time commitment.

2 Likes

Thank you @siko1056 for your response I appreciate you taking your time and explaining me in detail
:slightly_smiling_face: I talked with my university senior regarding this and they said I have more than enough time for my uni studies+ project.

My summer break will be starting soon so I think so I have ample amount of time for YAML encoding/decoding and also I am more interested in this project.

To be honest I am fairly new in the world of open source software development and don’t have any experience in this field but I would love to start contributing and stick around with Octave after the project and contribute at surface level till I complete my degree.

I did read about existing Octave and C/C++ implementations, MATLAB YAML and also about JavaScript Object Notation encoding/decoding project(from archive project details of 2020 GSoC ) by contributor Abdallah Elshamy.
I am taking up these two tutorials about YAML on YouTube 1) Complete YAML Course - Beginner to Advanced for DevOps and more! - YouTube & YAML Tutorial for Beginners: Learn YAML in-depth for DevOps - YouTube , are they good enough to start with?
Also where and how should I start contributing ?

I appreciate your support and encouragement. Have a nice day! :smiley:

1 Like

Yes, the Videos look good for the start.

As you prefer the YAML project, I moved your messages to the respective topic. Please read through this topic, especially the advise by @Abdallah_Elshamy above to study how packages work in Octave: GSoC 2022 Reading YAML files with Octave - #8 by Abdallah_Elshamy.

2 Likes

@siko1056
I have submitted some code to pkg-yaml on github. Now yamldecode() can parse some simple YAML strings (I only test few strings just to verify it’s working, the test code is in yamldecode_test.m). Also, I tried to rewrite the makefile(though I really don’t know how to write makefile before), and the package can now be installed from tar.gz and run at my wish. I’m really happy that I learned a lot during these work. :relieved:
Would you please take some time to check it out? I really need some advise before I continue to work on it. :slightly_smiling_face:

3 Likes

Great work :slightly_smiling_face: :+1: I installed your package and I am most amazed that there is an all-in-one header-file version of Rapid YAML available. This makes it as easy as RapidJSON.

In my opinion this is a great statement of qualification for GSoC. Please mention your package in the project application and submit it in the next weeks.

What further advise do you need? Maybe we can discuss further steps with the draft of your project application?

3 Likes

Totally agree with that. Great work!

I think this is a good idea. You should start drafting your application for GSoC. I suggest that you start with the project plan. One thing I would like to see in the plan is to what Octave data types will YAML data types be converted to while decoding and the reverse while encoding. Something like the table in the Algorithms section here and here. This will help you greatly in defining your timeline and your milestones which are the major parts in the project plan.

3 Likes

I am interested in YAML encoding/decoding project. If mentors can help, it would be great.

Welcome @Lovepreet_Singh_Gill and thank you for your interest in the YAML project.

I moved your post into the existing topic which is a good point to start reading here. If you have any questions, please feel free to ask anything here :slight_smile:

@siko1056 @Abdallah_Elshamy
Thanks for the advice! I’ve submitted a proposal. Hope to get your feedback!

2 Likes

Thanks for the proposal. All looks great to me. The YAML project greatly benefits from the hard work of @Abdallah_Elshamy :+1: The only assertion is the project timeline. This GSoC distinguishes between https://developers.google.com/open-source/gsoc/help/student-stipends

  • ~175 hours (~12 weeks, Jun 13 - Sept 12)
  • ~350 hours (~22 weeks, Jun 13 - Nov 21)

The YAML project is considered as “large” = 350 hours. Your timeline only goes until September 12.

Can you only work until this date on this project or do you consider the project to be “medium” in general due to the previous work? @Abdallah_Elshamy what do you think?

2 Likes