# JuliaApps proposal

**URL:** <https://discourse.julialang.org/t/juliaapps-proposal/112817>\
**Category:** Tooling\
**Tags:** announcement, application, juliac\
**Created:** [April 11, 2024, 4:04am UTC](https://discourse.julialang.org/t/juliaapps-proposal/112817 "2024-04-11T04:04:09Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![Eric\_Sadit\_Tellez](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/eric_sadit_tellez/32/33615_2.png) [@Eric\_Sadit\_Tellez](https://discourse.julialang.org/u/Eric_Sadit_Tellez)\
**Post date:** [April 11, 2024, 4:04am UTC](https://discourse.julialang.org/t/juliaapps-proposal/112817/1 "2024-04-11T04:04:09Z")

</div>

Hi everyone,

I’ve put JuliaApps for your consideration: [https://github.com/sadit/JuliaApps](https://github.com/sadit/JuliaApps). This tool aims to simplify sharing Julia packages/applications with people who don’t know the Julia programming language. Most of the work involves handling isolated environments.

It is a simple bash-based workaround (until `juliac` is ready) to run Julia packages as commands/applications. The core idea is to clone Julia package repositories, instantiate them, and run them using the appropriate environments. It uses an entry point that handles the command line arguments (currently, it uses `Comonicon.jl`’s `command_main` for this).

# Installing

Clone the repository; the unique script is `japps`. Give execution permissions `chmod +x japps`; copy `japps` to some directory in your executable path. It may be a good idea to put it in the same directory than `juliaup`.

This procedure only works for unix based systems

# Usage

The idea is then to install packages having entry points, for instance:

```bash
japps install https://github.com/sadit/XGrep.jl

```

this will clone the XGrep repo, instantiate it, and try to precompile it.

then, it can be used as follows:

```bash
japps run XGrep -h

```

```bash
bash> japps --help

Install and run julia packages from command line easily

 usage: ./japps <commands> args...

 commands: run install uninstall update list help
...

```

Packages not need to be in some registry to be installed. Updates are basically `git pull` on the repository, followed by instantiation and precompiling.

It is also posible to make that `japps run XGrep` becomes just `XGrep` using symbolic links to `japps` and storing these symbolic links in the same directory where `japps` is installed.

`Comonicon.jl` is faster than `ParseArgs.jl`; however, it is still slow than what most of us really want.

This is a work-in-progress and any comment, idea, pull-requests are welcome.

Best,  
Eric

---

<div class="post-metadata">

**Author:** ![Alec\_Loudenback](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/alec_loudenback/32/278_2.png) [@Alec\_Loudenback](https://discourse.julialang.org/u/Alec_Loudenback)\
**Post date:** [April 11, 2024, 4:35am UTC](https://discourse.julialang.org/t/juliaapps-proposal/112817/2 "2024-04-11T04:35:14Z")

</div>

Cool! I might have to test this out soon.

Have you seen this - any thoughts comparing the two approaches? [GitHub - LilithHafner/Quickdraw: Install and use Julia packages with a single command on systems that may or may not already have Julia.](https://github.com/LilithHafner/quickdraw)

---

<div class="post-metadata">

**Author:** ![sylvaticus](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/sylvaticus/32/203883_2.png) [@sylvaticus](https://discourse.julialang.org/u/sylvaticus)\
**Post date:** [April 11, 2024, 5:06am UTC](https://discourse.julialang.org/t/juliaapps-proposal/112817/3 "2024-04-11T05:06:08Z")

</div>

Shouldn’t (by default) look for registered packages on the official releases rather than pulling the head of a git branch?

---

<div class="post-metadata">

**Author:** ![Eric\_Sadit\_Tellez](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/eric_sadit_tellez/32/33615_2.png) [@Eric\_Sadit\_Tellez](https://discourse.julialang.org/u/Eric_Sadit_Tellez)\
**Post date:** [April 11, 2024, 2:49pm UTC](https://discourse.julialang.org/t/juliaapps-proposal/112817/4 "2024-04-11T14:49:58Z")

</div>

I don’t know. The tool is in an initial state, and the precise behavior is yet undecided. Perhaps accepting a second argument for the install command to retrieve a precise branch or tag is enough. I follow this way for the `update` command.

I guess most people don’t want application packages in the General register, e.g., name restrictions and the 3-day wait for new packages. However, applications designed for some communities surely must be in the General registry.

---

<div class="post-metadata">

**Author:** ![Eric\_Sadit\_Tellez](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/eric_sadit_tellez/32/33615_2.png) [@Eric\_Sadit\_Tellez](https://discourse.julialang.org/u/Eric_Sadit_Tellez)\
**Post date:** [April 11, 2024, 2:59pm UTC](https://discourse.julialang.org/t/juliaapps-proposal/112817/5 "2024-04-11T14:59:16Z")

</div>

I didn’t know it. It seems to be a pretty similar approach.
