Package Development Checklist, Flow, Prerequisites, Quickstart guide, etc

Hi–I’m wondering how a beginner package developer can develop an objective sense of whether or not one’s package is “useful” and “up-to-date.” I break this question down into a few components, and presumably there are many more that I have not considered:

  1. The package may offer some feature, but is that feature duplicated in an obscure part of Base or in another existing package? How do we find out?
  2. The package may not use best practices in terms of code development or testing. How do we know what these are? Is there a high-level checklist we can run through?
  3. The package might not anticipate (or might duplicate) changes that are coming to the language that are well-known to the core Julia devs. How do we lowly package developers get wind of the important developments of which we should be aware?
  4. What are the other unknown unknowns we should consider before publishing a package? Again, is there a checklist?

Essentially, as first-time package submitters, my colleague and I are flying blind wondering “Have we done this right at all? Or are we just completely off-base?” And in our states of ignorance, we realize that we don’t know a lot, but we have no idea what are all the things that we don’t know or where we can learn them.

Any guidance–especially in the form of a checklist, even at a high level, e.g. of “Make sure you’ve implemented working tests, make sure you’ve integrated with Travis CI, make sure you’ve searched key words against this repository of packages, make sure you’ve read the most recent X github issues, make sure you’ve read the latest stable julia/NEWS.md, etc.” would be very helpful and much appreciated.

Thanks!

(The specific package we’re working on getting to v0.1 is here.)

1 Like

I just ask the Gitter channel. If no one there knows about it, then it’s obscure enough that it needs a better documented / visible package.

Communicate with people. It can be hard to follow all of the issues in Julialang, but I learned about most of the important through the Gitter channel. A quick throwaway question could lead to a world of information.

See the links above.

I think the key information that I have to share is that you can learn far more from a quick conversation than from loads of reading, mostly because there’s just too much information online. But if you ask for help and let someone guide you to the right information (like you did here), it’s much easier.

3 Likes

This is great; thanks!