March 15, 2019
Hello,
I am Sushma Unnibhavi,an undergrad student from India. I am interested in contributing to D Programming Language as part of GSoC 2019. I am interested in the project on Jupyter Notebook D Kernel. I have gone through the links in the project description.

I have a few questions regarding the process for GSOC:
 1.What is the process for selection into D Programming Language?
 2.Are previous contributions necessary to get selected into D Programming  Language as part of GSoC?
 3.I am comfortable with c and c++ and using tools like git. Is there anything else I need to know before I begin applying and contributing to dlang?

Looking forward to your reply.

Thanks,
Sushma
March 16, 2019
On Friday, 15 March 2019 at 19:52:24 UTC, Sushma Unnibhavi wrote:
> Hello,
> I am Sushma Unnibhavi,an undergrad student from India. I am interested in contributing to D Programming Language as part of GSoC 2019. I am interested in the project on Jupyter Notebook D Kernel. I have gone through the links in the project description.
>
> I have a few questions regarding the process for GSOC:
>  1.What is the process for selection into D Programming Language?
>  2.Are previous contributions necessary to get selected into D Programming  Language as part of GSoC?
>  3.I am comfortable with c and c++ and using tools like git. Is there anything else I need to know before I begin applying and contributing to dlang?
>
> Looking forward to your reply.
>
> Thanks,
> Sushma

Let me copy Mike's private reply, s.t. it's visible for everyone:

---
Thanks for reaching out.

A good place to start is this forum post:

https://forum.dlang.org/post/siqgbkbitokwltxawjim@forum.dlang.org

Previous contributions are not required. What we want to see in our GSoC students is the motivation for future contributions in GSoC and beyond. We want to build lasting relationships. I encourage you to make yourself comfortable in the forums and look for ways you can start contributing as soon as possible.

Your C and C++ background will be useful to you, but it can also be a hindrance. D is similar enough to C++ that it can sometimes cause you to get so comfortable that you overlook the differences. A great resource for familiarizing yourself with D is Ali Çehreli's 'Programming in D', which is freely available here. You should also consult the language documentation.

http://ddili.org/ders/d.en/index.html

https://dlang.org/spec/spec.html

Thanks!
---


Let me add a few more infos on top of this:

- The DTour is also an excellent resource to start learning D (https://tour.dlang.org)
- prior contributions/involvements are not required, but strongly encouraged as it's an excellent way to get in touch with the D community and practice your D skills

As I'm currently listed as a backup mentor for the Jupyter project, let me add more guidance on this one.
Currently we have:

- We have DREPL [1] which is based on libdparse
- PydMagic [2] which is heavily based on the cython magic

Moreover, I recently learned that another company (Kaleidic Associates) has started early work on this project [3].

Their work uses DREPL as a backend, so I think this project can be grouped in two phases:

- improve DREPL
- work on the jupyter-d kernel ([4] provides a good idea list to start)

However, the DREPL approach isn't superb. It essentially uses libdparse to parse the AST of entered lines and classify them into declarations, statements, expressions. Then it compiles the new lines as a dynamic library and loads it in the current instance and executes the "just-compiled" function.
A more solid approach would be to do sth. like Cling [5] with DMD.

The second part (working on supporting more Jupyter features natively (like tables for dicts) should be easier), but I recommend to contact Atila Never (the guy who developed [4]) for further questions.

I think I should point out that working on part 1 of this project will be hard if you don't have prior experience with compilers, so if you're looking for a straight-forward project with a high impact I would advise to work on Dub as there are still lots of "low-hanging precious fruits" available (see [5, 6] for details).

I hope this answer helps you. Otherwise please feel free to ask more questions on the NG.

[1] https://github.com/dlang-community/drepl
[2] https://github.com/DlangScience/PydMagic
[3] https://github.com/kaleidicassociates/jupyterd
[4] https://github.com/kaleidicassociates/jupyterd#to-do
[5] https://github.com/root-project/cling
[6] https://wiki.dlang.org/GSOC_2019_Ideas#DUB:_D.27s_package_manager
[7] https://forum.dlang.org/post/eftttpylxanvxjhoigqu@forum.dlang.org