Guide for contributing to julia package on Github

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.

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

3 Likes

I guess this does the trick:

(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

3 Likes

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

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.

3 Likes