diff --git a/README.md b/README.md index fe25bc7a..4e3c7f19 100644 --- a/README.md +++ b/README.md @@ -796,6 +796,32 @@ handling of the SIGPIPE. This can be done by setting ## [Developing Babashka](doc/dev.md) +## Including new libraries or classes + +Before new libraries or classes go into the standardly distributed babashka +binary, these evaluation criteria are considered: + +- The library or class is useful for general purpose scripting or accomplishing + small devops tasks. +- Adding the library or class would make babashka more compatible with Clojure + libraries relevant to scripting or small devops tasks. +- The functionality can't be met by shelling out to another CLI or can't be + written as a small layer over an existing CLI (like `babashka.curl`) instead. + +If not all of the criteria are met, but adding a feature is still useful to a +particular company or niche, adding it behind a feature flag is still a +possibility. This is currently the case for `next.jdbc` and the `PostgresQL` and +`HSQLDB` database drivers. Companies interested in these features can compile an +instance of babashka for their internal use. Companies are also free to make +forks of babashka and include their own internal librries. Or if their +customized babashka is interesting to share with the world, they are free to +distribute it using a different binary name (like `bb-sql`, `bb-docker`, +`bb-yourcompany`, etc.). See the [feature flag +documentation](doc/build.md#feature-flags) and the implementation of the +existing feature flags ([example +commit](https://github.com/borkdude/babashka/commit/02c7c51ad4b2b1ab9aa95c26a74448b138fe6659)) +how to customize babashka. + ## Related projects - [planck](https://planck-repl.org/) diff --git a/doc/dev.md b/doc/dev.md index 4948ba75..f1d75090 100644 --- a/doc/dev.md +++ b/doc/dev.md @@ -20,25 +20,7 @@ $ git submodule update --recursive `lein repl` will get you a standard REPL/nREPL connection. To work on tests use `lein with-profiles +test repl`. -## Adding libraries and classes - -When adding libraries and classes to babashka, consider these evaluation -criteria: - -- The library or class is useful for general purpose scripting or accomplishing - small devops tasks. -- Adding the library or class would make babashka more compatible with Clojure - libraries relevant to scripting or small devops tasks. -- The functionality can't be met by shelling out to another CLI or can't be - written as a small layer over an existing CLI (like `babashka.curl`) instead. - -If not all of the criteria are met, but adding a feature is still useful to a -particular company or niche audience, adding it behind a feature flag is still a -possibility. This is currently the case for `next.jdbc` and the `PostgresQL` and -`HSQLDB` database drivers. Companies interested in these features can compile an -instance of babashka for their internal use. - -### Adding classes +## Adding classes Add necessary classes to `babashka/impl/classes.clj`. For every addition, write a unit test, so it's clear why it is added and removing it will break the