# Ideas for useful packages missing from the ecosystem

**URL:** <https://discourse.julialang.org/t/ideas-for-useful-packages-missing-from-the-ecosystem/42063>\
**Category:** Specific Domains\
**Tags:** package, proposal, development\
**Created:** [June 25, 2020, 7:45pm UTC](https://discourse.julialang.org/t/ideas-for-useful-packages-missing-from-the-ecosystem/42063 "2020-06-25T19:45:53Z")\
**Posts on this page:** 16\
**Page:** 1

<div class="post-metadata">

**Author:** ![Nosferican](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/nosferican/32/9275_2.png) [@Nosferican](https://discourse.julialang.org/u/Nosferican)\
**Post date:** [June 25, 2020, 7:45pm UTC](https://discourse.julialang.org/t/ideas-for-useful-packages-missing-from-the-ecosystem/42063/1 "2020-06-25T19:45:53Z")

</div>

I wanted to share two packages which provide useful functionality but are currently not available in Julia. The following two would make Julia even more attractable for users in / with #hpc.

- SSH Tunneling ([https://github.com/pahaz/sshtunnel](https://github.com/pahaz/sshtunnel) ; Python package)
- TeX available to Julia ([TinyTeX - A lightweight, cross-platform, portable, and easy-to-maintain LaTeX distribution based on TeX Live - Yihui Xie | 谢益辉](https://yihui.org/tinytex/) ; R package)

---

<div class="post-metadata">

**Author:** ![tbeason](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tbeason/32/15898_2.png) [@tbeason](https://discourse.julialang.org/u/tbeason)\
**Post date:** [June 25, 2020, 9:08pm UTC](https://discourse.julialang.org/t/ideas-for-useful-packages-missing-from-the-ecosystem/42063/2 "2020-06-25T21:08:21Z")

</div>

Maybe this is a good idea for a GitHub list. Like a “Most Wanted” type of thing?

---

<div class="post-metadata">

**Author:** ![Tero\_Frondelius](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tero_frondelius/32/7629_2.png) [@Tero\_Frondelius](https://discourse.julialang.org/u/Tero_Frondelius)\
**Post date:** [June 25, 2020, 9:41pm UTC](https://discourse.julialang.org/t/ideas-for-useful-packages-missing-from-the-ecosystem/42063/3 "2020-06-25T21:41:26Z")

</div>

As always these kind of lists provide very little if any help. Instead of collecting lists and discussing about the lists the effort should be in implementing these missing packages. Alternatively, if you are missing some package or feature and you cannot implement it yourself then the most useful thing is to collect money for someone who can do it.

---

<div class="post-metadata">

**Author:** ![Nosferican](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/nosferican/32/9275_2.png) [@Nosferican](https://discourse.julialang.org/u/Nosferican)\
**Post date:** [June 25, 2020, 9:53pm UTC](https://discourse.julialang.org/t/ideas-for-useful-packages-missing-from-the-ecosystem/42063/4 "2020-06-25T21:53:58Z")

</div>

I have developed and maintain several registered packages as well as proprietary ones. The first step in deciding as an author to invest time and effort into developing something is knowing that there is a real need / benefit of making it available to the community. Identifying gaps is really helpful to me as a developer and I imagine to others as well. Assuming I have the knowledge, time, and interest to develop and maintain those, even then, there might be others equally or more capable to do that. For that reason, the discussion in the public forums can aid in coordinating efforts. I strongly disagree with the premise.

---

<div class="post-metadata">

**Author:** ![Tero\_Frondelius](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tero_frondelius/32/7629_2.png) [@Tero\_Frondelius](https://discourse.julialang.org/u/Tero_Frondelius)\
**Post date:** [June 25, 2020, 10:04pm UTC](https://discourse.julialang.org/t/ideas-for-useful-packages-missing-from-the-ecosystem/42063/5 "2020-06-25T22:04:14Z")

</div>

You are right it’s better to find all who are interested in the topic before you start. And it’s nice to hear that you might have some time to contribute new packages as well. Currently, I don’t have direct need for either packages, but I think I could need both of them in the future.

---

<div class="post-metadata">

**Author:** ![Nosferican](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/nosferican/32/9275_2.png) [@Nosferican](https://discourse.julialang.org/u/Nosferican)\
**Post date:** [June 25, 2020, 10:12pm UTC](https://discourse.julialang.org/t/ideas-for-useful-packages-missing-from-the-ecosystem/42063/6 "2020-06-25T22:12:13Z")

</div>

I imagine the SSH tunneling might be best serve by someone from the JuliaWeb community with some threading experimentation. A pretty common use case for SSH tunnels is also when connecting to databases. @quinnj am I correct in that assessment?

As for the TeX package, I would imagine it would be some of those talented JuliaPackaging folks that understand Yggdrasil magic. @staticfloat would BinaryBuilder be a sound approach for that?

---

<div class="post-metadata">

**Author:** ![staticfloat](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/staticfloat/32/34_2.png) [@staticfloat](https://discourse.julialang.org/u/staticfloat)\
**Post date:** [June 25, 2020, 11:02pm UTC](https://discourse.julialang.org/t/ideas-for-useful-packages-missing-from-the-ecosystem/42063/7 "2020-06-25T23:02:05Z")

</div>

A Tex binary distribution could certainly be built within Yggdrasil; I think there are competing, more lightweight alternatives today rather than the full texlive distribution that many of us are familiar with. I seem to remember a rust reimplementation being talked of positively a while back, but I don’t know what the status of that is.

---

<div class="post-metadata">

**Author:** ![Nosferican](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/nosferican/32/9275_2.png) [@Nosferican](https://discourse.julialang.org/u/Nosferican)\
**Post date:** [June 25, 2020, 11:15pm UTC](https://discourse.julialang.org/t/ideas-for-useful-packages-missing-from-the-ecosystem/42063/8 "2020-06-25T23:15:41Z")

</div>

The TinyTeX is a customized distribution that plays really well with R markdowns. From the TinyTeX documentation on its motivation

> You have to either install a basic version that is relatively small (several hundred MB) but basically doesn’t work, because it is very likely that certain frequently used LaTeX packages are missing; or you install the full version that is several GB, but in your whole life, you probably will only use 1% of the packages.

I would imagine a direct porting or light customizing using that as the base distribution might work well for Julia literate programming tools (e.g., IJulia, Weave, Literate). I usually just use Overleaf for LaTeX but don’t want to install the full TeXLive distribution for a simple PDF from a Julia markdown and a few tables…

---

<div class="post-metadata">

**Author:** ![chakravala](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/chakravala/32/6832_2.png) [@chakravala](https://discourse.julialang.org/u/chakravala)\
**Post date:** [June 26, 2020, 1:20am UTC](https://discourse.julialang.org/t/ideas-for-useful-packages-missing-from-the-ecosystem/42063/9 "2020-06-26T01:20:08Z")

</div>

The full TeX distribution of all packages is large, and is easier to maintain at an operating system level. What I dont like about binary artifacts is that they take up a ton of unnecessary duplicate space with OS packaging. It would be nice to have TeX binaries available in CI jobs, but I wish these binaries would be used from the operating system packaging if possible, especially because the full set of them is large data.

PS, I have some programming tools which build and generate TeX documents, [VerTeX.jl](https://github.com/chakravala/VerTeX.jl) but it uses local operating system binaries.

---

<div class="post-metadata">

**Author:** ![Nosferican](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/nosferican/32/9275_2.png) [@Nosferican](https://discourse.julialang.org/u/Nosferican)\
**Post date:** [July 1, 2020, 7:51pm UTC](https://discourse.julialang.org/t/ideas-for-useful-packages-missing-from-the-ecosystem/42063/10 "2020-07-01T19:51:15Z")

</div>

There also seems to be a new package that does so [Tectonic.jl](https://github.com/MichaelHatherly/Tectonic.jl). It might just check the second box. @mike does it play well with Weave?

---

<div class="post-metadata">

**Author:** ![mike](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mike/32/39_2.png) [@mike](https://discourse.julialang.org/u/mike)\
**Post date:** [July 1, 2020, 10:19pm UTC](https://discourse.julialang.org/t/ideas-for-useful-packages-missing-from-the-ecosystem/42063/11 "2020-07-01T22:19:54Z")

</div>

> [@Nosferican](#):
>
> There also seems to be a new package that does so [Tectonic.jl](https://github.com/MichaelHatherly/Tectonic.jl). It might just check the second box. @mike does it play well with Weave?

Not tried it with Weave yet, but those are the kind of place that this _should_ be suitable for, i.e. where you need PDF generation, but don’t really want/need to install the full TeX Live distribution.

---

<div class="post-metadata">

**Author:** ![giordano](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/giordano/32/2166_2.png) [@giordano](https://discourse.julialang.org/u/giordano)\
**Post date:** [July 1, 2020, 10:54pm UTC](https://discourse.julialang.org/t/ideas-for-useful-packages-missing-from-the-ecosystem/42063/12 "2020-07-01T22:54:42Z")

</div>

There is an [ongoing discussion on Yggdrasil](https://github.com/JuliaPackaging/Yggdrasil/issues/1070) about packaging a small TeX distribution

---

<div class="post-metadata">

**Author:** ![Juan](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/juan/32/7657_2.png) [@Juan](https://discourse.julialang.org/u/Juan)\
**Post date:** [July 1, 2020, 11:25pm UTC](https://discourse.julialang.org/t/ideas-for-useful-packages-missing-from-the-ecosystem/42063/13 "2020-07-01T23:25:49Z")

</div>

There are other threads like this one.

I think there are two important missing packages:

- Multiple Imputation (MICE).
- Meta-analysis

---

<div class="post-metadata">

**Author:** ![Albert\_Zevelev](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/albert_zevelev/32/11844_2.png) [@Albert\_Zevelev](https://discourse.julialang.org/u/Albert_Zevelev)\
**Post date:** [July 2, 2020, 1:21am UTC](https://discourse.julialang.org/t/ideas-for-useful-packages-missing-from-the-ecosystem/42063/14 "2020-07-02T01:21:38Z")

</div>

MICE is crucial for ML & currently super slow in R. Our ecosystem& the ML community would greatly benefit if there was a Julia implementation

> [@How to do multiple imputation on Julia?](https://discourse.julialang.org/t/how-to-do-multiple-imputation-on-julia/17713/14):
>
> I have been working a bit on this lately, there is some functionality that works quite well for time-series and matrices [https://github.com/baggepinnen/TotalLeastSquares.jl#missing-data-imputation](https://github.com/baggepinnen/TotalLeastSquares.jl#missing-data-imputation) it’s not a complete data-imputation package but in the setting where it works it works well.

---

<div class="post-metadata">

**Author:** ![anon92994695](https://avatars.discourse-cdn.com/v4/letter/a/ce7236/32.png) [@anon92994695](https://discourse.julialang.org/u/anon92994695)\
**Post date:** [July 2, 2020, 1:29am UTC](https://discourse.julialang.org/t/ideas-for-useful-packages-missing-from-the-ecosystem/42063/15 "2020-07-02T01:29:42Z")

</div>

I’m trying right now to get a Swirl equivalent for Julia.

I’m calling it DrJulia… I’ll make an RFC soon probably let me know if you wanna contribute.

---

<div class="post-metadata">

**Author:** ![simeonschaub](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/simeonschaub/32/216566_2.png) [@simeonschaub](https://discourse.julialang.org/u/simeonschaub)\
**Post date:** [July 2, 2020, 5:57am UTC](https://discourse.julialang.org/t/ideas-for-useful-packages-missing-from-the-ecosystem/42063/16 "2020-07-02T05:57:17Z")

</div>

For the first one, there is also an OpenSSH jlll, so you could do something like:

```julia
using OpenSSH_jll
ssh() do ssh
    @async run(`$ssh -L 8000:localhost:1234 user@myserver.com`)
end

```
