Skip to content

Creating Libraries for Qi

Siddhartha Kasivajhula edited this page Nov 9, 2022 · 5 revisions

If you're writing a new library for Qi, that's awesome! Here are a few recommendations / requests:

  1. For licensing, please place your code in the public domain without copyright restrictions.
  2. You are welcome to use the qi collection path in your package if you would like to.
  3. Read Writing Qi Docs for some ideas on writing your own documentation.
  4. Let Qi maintainers know about your library so that it can be mentioned in relevant places in the official docs.

Qi is an investment in attribution-based economics, and someday we may be able to get recognition for the value created by our work in the form of actual financial support. Such contributions could support not just Qi but other packages in the Racket ecosystem, Racket itself, and beyond -- but it only works if people know about it, and people will only know about it if we invest in it and spread the word. Releasing your work in this way is a great way to do that, and will help in simplifying the distribution of any future contributions made to Qi as well as possibly incorporating your innovations into the Qi core. Your support is greatly appreciated!

Racket's approach to package management is to keep collections and packages as orthogonal notions -- packages can provide modules in any number of collections, and likewise, collections may contain modules sourced from any number of packages. This means that anyone can provide modules in the qi collection that could be required as (for example) (require qi/my-extras), and such modules need not be in the Qi core package or in the Qi source repository. This gives us a lot of flexibility to provide modules wherever we feel they are most appropriate, but it also means that it is up to us to use the collection paths in a way that plays well with other packages. If you feel your module would be appropriate under the qi collection, then by all means, use it! You are also welcome to create an issue on the Qi repo to solicit opinions from other Qi users if you would like additional opinions on the require path. Good communities are built on good communication and trust, and open discussion around such conventions is healthy and encouraged!

Finally, good documentation is encouraged, and in the spirit of "signposting", it would be valuable to the community to have contextual references to your library in the main Qi docs. Towards this goal, let Qi maintainers know about your library once you've created it. And the better the documentation of your library, the more easily it can be referenced and discovered from (and perhaps eventually incorporated into) the main docs! ;)

Clone this wiki locally