ChifiSource / Olive.jl

pure julia notebooks
MIT License
152 stars 6 forks source link

[QUESTION] Where Does Olive Sit in the Julia Ecosystem? #59

Closed TheCedarPrince closed 1 year ago

TheCedarPrince commented 1 year ago

Hi @emmettgb ,

Just came across Olive recently and find it immensely fascinating! I mentioned having some issues in another issue but I find this idea really interesting. What I like about it is a few things from what I have seen:

  1. Seems to run on top of Genie! That is really cool as you can now have a live website alongside notebooks running Julia all in one place. Plus, with the capacities built into Genie, you could pull up dashboards alongside live scripts. Really cool stuff
  2. Having modules for each script is an interesting concept. I know that Pluto does something similar but Olive seems completely different as you can source a module in real-time or something? Either way, interesting idea -- curious as to how it pans out.
  3. Sequential evaluation is nice. This was something that I wish Pluto supported as a mode.
  4. I have been noticing the spread of people making custom tomls for projects within the Julia ecosystem. I don't mind that idea but am curious to see how it shakes out as a design decision to have an olive toml. At first glance it seems like a good idea so just curious how it evolves.
  5. The fact that you can easily and readily style an Olive notebook to how you want it, is really cool. I like the additional cells you can have as well. It seems you have a really great interface set-up as well.
  6. Curious how you encode things within the Julia files as comments. I think that isn't a bad idea at all and in fact, a pretty interesting one I find personally. You could make some really cool literate style documents within Olive like you could in Pluto.
  7. Plugins is really exciting. As you know I've been a fan of the ecosystem you have been building and the way you have constructed things seems greatly composable which I am a huge fan of (kudos on the excellent work there).

In short, I am curious as to your thoughts about where Olive sits within the Julia ecosystem. It is almost like a hybrid of Genie, Franklin, and Pluto with influences from Jupyter as well -- the latter especially for your idea of the easy creation of plugins like the Python plugin you demoed. Really gives freedom to the user in a variety of ways! So, what is your opinion on where Olive sits?

image

I know that Olive is still in rapid development and not on the registry yet when I tried to download it. But I think this is a really great idea. A bit too early for me to try to adopt it or use it for anything in my work/studies yet, but I will be watching closely. Thanks @emmettgb and great work pushing the boundaries of what is possible within Julia!

~ tcp :deciduous_tree:

emmaccode commented 1 year ago

Hi @emmettgb ,

Just came across Olive recently and find it immensely fascinating! I mentioned having some issues in another issue but I find this idea really interesting. What I like about it is a few things from what I have seen:

  1. Seems to run on top of Genie! That is really cool as you can now have a live website alongside notebooks running Julia all in one place. Plus, with the capacities built into Genie, you could pull up dashboards alongside live scripts. Really cool stuff
  2. Having modules for each script is an interesting concept. I know that Pluto does something similar but Olive seems completely different as you can source a module in real-time or something? Either way, interesting idea -- curious as to how it pans out.
  3. Sequential evaluation is nice. This was something that I wish Pluto supported as a mode.
  4. I have been noticing the spread of people making custom tomls for projects within the Julia ecosystem. I don't mind that idea but am curious to see how it shakes out as a design decision to have an olive toml. At first glance it seems like a good idea so just curious how it evolves.
  5. The fact that you can easily and readily style an Olive notebook to how you want it, is really cool. I like the additional cells you can have as well. It seems you have a really great interface set-up as well.
  6. Curious how you encode things within the Julia files as comments. I think that isn't a bad idea at all and in fact, a pretty interesting one I find personally. You could make some really cool literate style documents within Olive like you could in Pluto.
  7. Plugins is really exciting. As you know I've been a fan of the ecosystem you have been building and the way you have constructed things seems greatly composable which I am a huge fan of (kudos on the excellent work there).

In short, I am curious as to your thoughts about where Olive sits within the Julia ecosystem. It is almost like a hybrid of Genie, Franklin, and Pluto with influences from Jupyter as well -- the latter especially for your idea of the easy creation of plugins like the Python plugin you demoed. Really gives freedom to the user in a variety of ways! So, what is your opinion on where Olive sits?

image

I know that Olive is still in rapid development and not on the registry yet when I tried to download it. But I think this is a really great idea. A bit too early for me to try to adopt it or use it for anything in my work/studies yet, but I will be watching closely. Thanks @emmettgb and great work pushing the boundaries of what is possible within Julia!

~ tcp 🌳

Hi Jacob. A few things.

  1. Olive is actually not based on Genie at all. When I first started the project, it actually was, but I found Genie was really not a good choice for something like this... I have built my own web-framework, Toolips. However, all of those things you discussed are still benefits to Toolips, Toolips is just more full-stack -- and like Olive, extensible.
  2. Yelp, this stuff is all sources inside of Julia modules. It seems to work pretty well. The great thing about this is that it saves a lot of memory compared to kernels, and generally it is a lot faster -- no need to sit around and wait for kernel restarts and things of that nature.

In this regard, it is also really easy to define and control variables for the module -- i.e. I could make a StackFrame inside of each module for better error tracking, I could delete better methods to get rid of security for Base methods using Base.deletemethod! I think that is the method, there's a comment about it somewhere in this project 🤣. I tested it and that works really well :)

  1. Yes, that is something I really like too -- being able to have multiple projects and run the cells from any of them at any time is pretty awesome :)
  2. So the custom TOML for Olive just loads and saves what is in the settings menu, as well as other user info, while also creating the project. In the future, this will also hold project types and also Olive directories ( you'll be able to add other permanent directories with different permissions. )
  3. The resulting cell files are pretty simpler, (as far as I know this works)
emmaccode commented 1 year ago

I did not mean to press that 🤣 anyway,

  1. The resulting cell files are pretty simpler, (as far as I know this works) Olive actually has a Pluto reader so it will automatically read Pluto files into cells. I don't really have Pluto notebooks on my machine to try that with, but as far as I know it might work. Anyway, based on my experience making that reader, Olive files are actually much more legible than Pluto files. There are no cell ids to track, Pluto files have a huge stack of evaluation order at the top, with Olive this is much more manual and the cells are just written. For example, a code cell will be written like this.
    x = 5
    #==output[code]
    5
    ==#
    #==|||==#

    As for comments, a comment IN a code cell will render just like they do in the case above, just without output and the comments replacing their source. However things like the TODO cell, and of course other cells, will be written differently, in the example of your TODO cell,

==output[TODO]

==#

And a markdown cell,
```julia
""" # markdown
"""
#==|||==#

The extensibility of this project is really really cool, and part of the best thing about it; I have plans to eventually include a drag and drop web builder into the extensions ecosystem, dashboard builders, and more -- as well as markdown extensions to save files as markdown, etc. It is awesome because you can pick what you need, and if you don't have what you need you can create it!

In terms of ecosystem position, I see Olive as a few displacements from something like Jupyter or Pluto.

I am definitely not expecting anyone to daily drive this current form, but it won't be too long until this project is super stable and ready for people to use daily! It's certainly exciting! Thanks for your interest :)

RoyiAvital commented 9 months ago

Olive is a bit different in that it could be turned into Pluto (reactive features can be added via an extension) but is not Pluto out of the box. That's an advantage when we consider things like the Neptune fork of Pluto -- some scientists might love reactivity, if you are like me you might find it tedious and often in the way.

I appreciate this point of view. Let the user choose.