# \[ANN\] DistributedAdhoc.jl: for machines that don't share a common filesystem

**URL:** <https://discourse.julialang.org/t/ann-distributedadhoc-jl-for-machines-that-dont-share-a-common-filesystem/75853>\
**Category:** Package Announcements\
**Created:** [February 5, 2022, 10:35am UTC](https://discourse.julialang.org/t/ann-distributedadhoc-jl-for-machines-that-dont-share-a-common-filesystem/75853 "2022-02-05T10:35:02Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![aplavin](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/aplavin/32/222056_2.png) [@aplavin](https://discourse.julialang.org/u/aplavin)\
**Post date:** [February 5, 2022, 10:35am UTC](https://discourse.julialang.org/t/ann-distributedadhoc-jl-for-machines-that-dont-share-a-common-filesystem/75853/1 "2022-02-05T10:35:02Z")

</div>

`DistributedAdhoc.jl` helps using Julia Distributed in an ad-hoc way, on computers not dedicated to distributed processing. The only setup required is to install Julia everywhere.

Each machine can have different paths, different usernames and home directories, no shared filesystem.

DistributedAdhoc sends files, directories, and whole environments from one process to other workers:

```plaintext
julia> using DistributedAdhoc # reexports Distributed, adds no new exports

julia> addprocs(...)

# send a local file and a directory to worker #3
julia> remote_file = DistributedAdhoc.send_file("local_path/to/my_file.txt", 3)
"/tmp/jl_S1vUpx/my_file.txt" # path of the file on worker #3

julia> remote_dir = DistributedAdhoc.send_dir("local_path/to/my_dir", 3; include=["file.txt", "data/*.csv"])
"/tmp/jl_fKgj4Y" # path of the dir on worker #3

# send the current Julia environment to all workers, instantiate and activate it
# this example includes source code in `src`, developed packages (in `./dev`), scripts (in `./scripts`), and CSV files (in `./data`)
julia> DistributedAdhoc.send_env_activate_everywhere(include=[
    "*.toml", "src/*.jl", "scripts/*.jl",
    "dev/*/*.toml", "dev/*/src/*.jl", "dev/*/src/*/*.jl",
    "data/*.csv",
])

```

More functions, options, and details: see [src/DistributedAdhoc.jl · master · Alexander Plavin / DistributedAdhoc.jl · GitLab](https://gitlab.com/aplavin/DistributedAdhoc.jl/-/blob/master/src/DistributedAdhoc.jl) or docstrings.

After half a year of this package being publically available, I’ve just registered `DistributedAdhoc.jl` in `General`.  
Git repo available at [Alexander Plavin / DistributedAdhoc.jl · GitLab](https://gitlab.com/aplavin/DistributedAdhoc.jl).

---

<div class="post-metadata">

**Author:** ![carstenbauer](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/carstenbauer/32/4981_2.png) [@carstenbauer](https://discourse.julialang.org/u/carstenbauer)\
**Post date:** [February 5, 2022, 11:01am UTC](https://discourse.julialang.org/t/ann-distributedadhoc-jl-for-machines-that-dont-share-a-common-filesystem/75853/2 "2022-02-05T11:01:06Z")

</div>

Out of curiosity, why gitlab instead of github?

---

<div class="post-metadata">

**Author:** ![aplavin](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/aplavin/32/222056_2.png) [@aplavin](https://discourse.julialang.org/u/aplavin)\
**Post date:** [February 5, 2022, 11:07am UTC](https://discourse.julialang.org/t/ann-distributedadhoc-jl-for-machines-that-dont-share-a-common-filesystem/75853/3 "2022-02-05T11:07:58Z")

</div>

See this post of mine, from about a year ago:

> [@Using Opensource hosting repo instead of GitHub](https://discourse.julialang.org/t/using-opensource-hosting-repo-instead-of-github/53592/14):
>
> A pragmatic reason for putting public projects on gitlab instead of github is their attitude to privacy. Most notably, github shows a feed of all public activities of each user without any option to hide it. This would be completely fine and expected from social network like facebook, but not from a code hosting website. I’m even a bit surprised that only 15 registered julia packages use gitlab. The above applies to public repos only, because activity in private ones obviously doesn’t show anyw…

Btw, looks like now 45 packages in `General` are hosted at gitlab. A 3-fold increase over a year (:
