# Guide for contributing to julia package on Github

**URL:** <https://discourse.julialang.org/t/guide-for-contributing-to-julia-package-on-github/17401>\
**Category:** General Usage\
**Tags:** pkg\
**Created:** [November 11, 2018, 12:18pm UTC](https://discourse.julialang.org/t/guide-for-contributing-to-julia-package-on-github/17401 "2018-11-11T12:18:48Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![kkmann](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/kkmann/32/1727_2.png) [@kkmann](https://discourse.julialang.org/u/kkmann)\
**Post date:** [November 11, 2018, 12:18pm UTC](https://discourse.julialang.org/t/guide-for-contributing-to-julia-package-on-github/17401/1 "2018-11-11T12:18:48Z")

</div>

Hey,

so, since 1.0 I am really confused about the recommended workflow for contributing to julia packages which are being developed on [GitHub.com](http://GitHub.com).

Is there any documentation on the entire process? I forked and cloned the package I want to sent a PR to (NLSolversBase.jl) but `activate .` in my local clone does not seem to do the job since the Project.toml is missing. I am a just totally confused right now since the CI is of the package seems to work fine for 1.0.

Can anybody enlighten me as to whether the Project.toml is needed (aka what exactly IS as julia package) and how ideally should do my PR?

Thanks,

Kevin

---

<div class="post-metadata">

**Author:** ![holtri](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/holtri/32/6016_2.png) [@holtri](https://discourse.julialang.org/u/holtri)\
**Post date:** [November 11, 2018, 1:28pm UTC](https://discourse.julialang.org/t/guide-for-contributing-to-julia-package-on-github/17401/2 "2018-11-11T13:28:28Z")

</div>

I guess this does the trick:

```julia
(v1.0) pkg> dev NLSolverBase

```

This will checkout NLSolverBase into the dev dir defined in JULIA\_PKG\_DEVDIR.

You can then just add your github fork as a second remote to your local repository, and issue the PR after pushing to this fork. I guess you could do it the other way around, i.e., install the package directly from your fork. However, because the fork is not registered with General, you would need to manage the dependencies for NLSolverBase yourself.

I understand that you don’t need a Project.toml/Manifest.toml and the dependency fallback is the REQUIRE file. However, this will change in future.

The need for better documentation is already noted:  
[https://github.com/JuliaLang/Pkg.jl/issues/805](https://github.com/JuliaLang/Pkg.jl/issues/805)

---

<div class="post-metadata">

**Author:** ![nilshg](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/nilshg/32/2283_2.png) [@nilshg](https://discourse.julialang.org/u/nilshg)\
**Post date:** [November 12, 2018, 11:16am UTC](https://discourse.julialang.org/t/guide-for-contributing-to-julia-package-on-github/17401/3 "2018-11-12T11:16:18Z")

</div>

Still not sure I get how this is supposed to work. In my case, I would like to develop a package `PackageA.jl`, which in turn depends on `PackageB.jl` and `PackageC.jl`; all of these are v0.6 compatible currently so I’d like to dev them in 0.7 to fix deprecations.

Is the way to do this:

1. Fork all three packages
2. `pkg> dev "https://github.com/nilshg/PackageA.jl"`, and the same for B and C
3. `julia> using PackageA` to see deprecation warnings, fix them
4. git push the changes

---

<div class="post-metadata">

**Author:** ![Sukera](https://avatars.discourse-cdn.com/v4/letter/s/ce7236/32.png) [@Sukera](https://discourse.julialang.org/u/Sukera)\
**Post date:** [November 12, 2018, 1:06pm UTC](https://discourse.julialang.org/t/guide-for-contributing-to-julia-package-on-github/17401/4 "2018-11-12T13:06:57Z")

</div>

Work your way up - start by fixing `PackageC`, then `PackageB` and finally `PackageA`. Each fix can be based on the fixed branch or PR of the previous package.
