GSoC 2015 - Elixir - Idea #1 Project Jupyter integration

141 views
Skip to first unread message

Martin Lavoie

unread,
Mar 20, 2015, 12:33:45 PM3/20/15
to beam-co...@googlegroups.com
Hi,

My name is Martin. I am currently an undergrad student at Université du Québec à Chicoutimi (UQAC). I've programmed mainly in c++, haskell and python. I've been doing research for the last two years in combinatorics on words and graph theory. 

My proposition would be to add Elixir support for the Jupyter framework. I think Jupyter is a great learning and sharing platform. As such, I find it interesting to have as many languages as possible.

For the knowledge prerequisites, I think I have the Web and Python part covered but I haven't actually coded in Elixir yet. However, I have a basic understanding of erlang and I am very interested in the erlang ecosystem. Do you think it is possible to undertake this with no prior erlang/elixir experience? 

Any tips regarding the application process would be appreciated.

Regards,
Martin

José Valim

unread,
Mar 20, 2015, 2:57:10 PM3/20/15
to Martin Lavoie, beam-co...@googlegroups.com
Welcome to the BEAM Community, Martin!

If you have experience with Haskell, you already have a good intro into functional programming, and that will definitely help when getting acquainted with Elixir. Pragmatic Programmers will also give a copy of Programming Elixir for every student accepted into an Elixir-related project and that can help you make ways during the community bonding period.

In any case the best person to answer if you can undertake this is yourself. When writing a proposal, take into account a timeline you feel comfortable with. If it helps, try evaluating the ierlang project:


* Can you run it?
* How complex does the code look to you?

We expect something with the same scope as ierlang to be part of the project. It would also be nice to explore some of the widgets and graphs in ipython and use those to print Elixir processes and what not. But those bits we can definitely explore together as the project evolves.

Feel free to ask if you have any more questions!



José Valim
Skype: jv.ptec
Founder and Lead Developer

Martin Lavoie

unread,
Mar 26, 2015, 11:19:33 PM3/26/15
to beam-co...@googlegroups.com, broem...@gmail.com, jose....@plataformatec.com.br
Hi, 

I've checked the ierlang project and nothing seemed out of reached as far as the code goes. Actually, I was surprised at first because it seemed quite short. I must admit I didn't have time to make it run on my computer lately because of another project and also because I don't have a well configure linux for now.
I've just completed my proposal for this project. I've taken inspiration from your ideas at the end. Because I wasn't sure of the specific of what I would be doing, I stayed quite vague. Do you think it will make me lose points for my proposal?

Here is what I wrote to one of the question which explain (I think) what I meant.

* Give some more detailed design of what you intend to achieve.

The main component of the proposal is the implementation of a Jupyter Kernel for Elixir. That include support for the messaging protocol that it use (http://ipython.org/ipython-doc/stable/development/messaging.html). Also, I intent that basic functionality like tab completion and syntax coloration will be available in the interactive Shell. For the second part, I would Explore the possibilities for advance integration of Jupyter and Elixir and implements the ones that me and my mentor would judge the more profitable for the success and usefulness of the tool. It could Take many form. Some example would be:
Widget to control the execution of the program;
Runtime infographic about the execution of the program;
Support of one Elixir GUI library.

As mentioned earlier, I would be open suggestion as time goes on. I would like to try to add 1-2 of these advanced features and more if all goes Well.

I wasn't comfortable telling something specific if I am not sure about it. Still, if you advice me otherwise, I could change my proposal. 

I can send you the whole thing in private if you are interested to read it before the deadline.

Thank you for your time,

Martin

José Valim

unread,
Mar 27, 2015, 9:41:05 AM3/27/15
to Martin Lavoie, beam-co...@googlegroups.com
Yes, it is ok to not be specific on those parts, we will know more about how we further integrate Elixir and Jupyter as the project evolves. Thanks Martin! 



José Valim
Skype: jv.ptec
Founder and Lead Developer

Milton Mazzarri

unread,
May 10, 2015, 3:21:44 PM5/10/15
to beam-co...@googlegroups.com
Hi Martin,

I think that creating an Elixir kernel for Jupyter (a.k.a IPython) is a great idea and definitively it would be helpful for the Elixir community.

I'll give some tips before you start with the development:

* You mentioned that you have programmed with Haskell, so, you can review the IHaskell[1] project as a reference.
* Andrew Gibiansky, the author of IHaskell, wrote about how to create a language kernel for IPython, it's a great overview for the things that you'll need to develop. Although, take in consideration that some things mentioned in that article are already deprecated (`kernel_cmd` for example)
* IPython communicates with its backend through ZeroMQ[3], in particular read about the different ZeroMQ socket types (e.g. REQ, REP, ROUTER, PUB, SUB).
* Read the getting-started[4] guide for Elixir, pay special attention to the *Supervisor and Application* section, I think that you will need it because your main application could be an Supervisor in control of 5 workers, each one of this workers will be in charge of the different kernel sockets (Heartbeat, Shell, Control, Stdin, IOPub).
* If you take this approach, begin with the Heartbeat, it's the easy one :)
* You'll also need to generate an executable for your application, so, for this reason read about Mix and its Escript[5] task. 
* Your executable for sure will offer different behaviours taking in consideration line parameters, so, read about how to parse the command line arguments with OptionParser[6]
* One parameter that you'll receive in your application will be the path of your connection file (or kernel.json), you'll need to parse that file (in JSON format) because it give you a lot of information: The transport and authentication mechanism, IP, ports of each one of the kernel sockets, etc.

Well, I think that would be all for now. If you have any question please let me know.

Have a nice day,

HTH

Ethan Sherbondy

unread,
May 17, 2015, 1:29:24 AM5/17/15
to beam-co...@googlegroups.com
Hey all,

I know GSOC is just getting started, but I'm very interested in contributing to the Jupyter Elixir kernel over the coming months.
Would be great to stay informed about the status of the project. I've subscribed to this thread and will stick around #beam-community on IRC.
Just started using Elixir recently, but having a blast and really want to help see this project through.

Anyway, it'd be great to be updated as things materialize on GitHub or elsewhere so that we can join the discussion and hopefully lend some assistance.

Cheers,
Ethan

Piotr Przetacznik

unread,
Jun 3, 2015, 4:25:30 AM6/3/15
to beam-co...@googlegroups.com
Hi Ethan,

right now we are in the planning stage and we're figuring out what has to be implemented. It's problematic to split that work because of impact of project management. I will let you know when tasks will crystallize and I will try to keep them up to date on GitHub so you would be able to participate if you find some time.

Regards,
Piotrek
Reply all
Reply to author
Forward
0 new messages