JuliaLang / juliaup

Julia installer and version multiplexer
MIT License
1.01k stars 86 forks source link

Add a GUI application for Julia version management #54

Open davidanthoff opened 3 years ago

davidanthoff commented 3 years ago

We could also add a GUI application named Juliaup or Julia Configuration or something like that. This would appear in the Start menu and would show a list of all channels on the system, which ones are out-of-date, with a button to update individual or all channels.

diversable commented 1 year ago

Is there still interest in this issue? If so, I could look into using Tauri (https://tauri.app) to implement a simple GUI for managing julia versions w/ juliaup...

StefanKarpinski commented 1 year ago

If this is going to be done, shouldn't it be separate from juliaup? The command line tool seems like it should be as simple and reliable as possible, which is very much at odds with having a GUI.

diversable commented 1 year ago

I've already been experimenting with adding a GUI using a separate repo, as you suggest. It's still extremely experimental - I'm having some issues w/ Tauri spinning up a Rust embedded Julia runtime using Jlrs, which provides access to the Julia C API - but I'll get that figured out eventually (I need to sort that out with the Tauri dev team soon, 'cause it works fine as a plain Rust CLI).

My current line of thinking is to create a GUI that can both install a version of Julia using juliaup, as well as provide a GUI + much simplified cmd line interface sub-commands for Pkg.jl, PkgTemplates, & PkgCompiler as well (Tauri enables making GUI's, and can make a CLI for your app too). I'd like Julia users to have one simple, visual & non-repl-based cli tool to 1) install julia, 2) set up a project & add dependencies, and 3) prepare to deploy their finished project.

Features would include:

I'm not sure if I'll be able to convince the necessary Julia package authors to cooperate to make the required changes to enable the GUI functionality, but I'd like to try!

I think that using Julia as a person's first introduction to programming would be an excellent use case for the Julia language community to serve better, but the tooling and the language docs are not really set up for the 'complete beginner' right now (if your primary goal with Julia is anything other than interactive repl data science use). If beginner-level scripting, web dev, and app dev are your main goals, then an editor like VSCode is easier to work with (imho).

I'm hoping this GUI project (which I'm tentatively calling "gaston" - as in Gaston Julia) could help new users more easily navigate Julia's tooling & allow beginners to focus on the code in the editor (and primarily use the repl for testing code and working with data in data science workflows). Basically, I'm shooting for the equivalent of Rust-lang's rustup and cargo, but in an all-in-one GUI + cmd-line app.

Thoughts? Suggestions? Recommendations? Should I pursue a different hobby project, or do you think there would be a desire for a tool like this?

uncomfyhalomacro commented 1 year ago

As I am exploring some issues here and there, I noticed this. I think this is a good idea for new users (or some users) that do not like to setup/manage/update a project or a julia version through the CLI. It's worth noting there are a lot of possible GUI frameworks we can use in Rust.

All of these are platform agnostic. Slint and tauri seems promising though.

davidanthoff commented 1 year ago

If this is going to be done, shouldn't it be separate from juliaup?

Yes, at least initially I definitely think so. If something emerges that is super reliable and feature complete etc I could imagine that we bundle it down the road with the stuff here, but I'm more thinking years than months ;)

I think architecturally what we need is to expand the API that we have in Juliaup already to cover all the cases that a UI needs, and then the UI can use that under the hood to implement the actual functionality. VS Code could then also expand its integration with Juliaup via the same API (it already uses the current, pretty meager API to find Julia versions).