BestieTemplate - Your best practices friend

BestieTemplate.jl

Welcome to the documentation of BestieTemplate.jl. This package provides a template in the copier engine for a Julia package. Furthermore, it provides a wrapper around convenience calls to that package.

The main features of this package/template are:

  • It provides a curated (opinionated) list of tools and best practices for Julia package development;
  • It can be applied and reapplied to existing packages, allowing the updates in the template to be imported into the package;

asciicast

Using

To fully benefit from the template, there are some steps to be done before and after you generate your package. Check the full guide for more details.

However, if you kinda know what you need to do, this is the TL;DR:

using> # press ]
pkg> add BestieTemplate
julia> using BestieTemplate
julia> BestieTemplate.generate("path/to/YourNewPackage.jl")
julia> # or BestieTemplate.apply("path/to/YourExistingPackage.jl")

I really recommend checking the full guide, though.

To understand more about our motivation and what the template provides, check the explanation page.

Getting and providing help

I hope you find this package useful. If you have any questions, requests, or comments, check the issues and discussion pages.

If you would like to get involved in the BestieTemplate growth, please check our contributing guide. We welcome contributions of many types, including coding, reviewing, creating issues, creating tutorials, interacting with users, etc. Make sure to follow our code of conduct.

If your interest is in developing the package, check the development guide as well.

References

Here is a list of links/repos that include content that we have used for inspiration, or used directly. This is most likely not a complete list, since many of the things included here were based on existing packages and knowledge that we brought from other projects. This also doesn't explain where each file came from or why they are here. You can find some of that information in the Explanation section of the docs.

  • PkgTemplates.jl, naturally. We used it for many years, and in particular for the initial TulipaEnergyModel.jl commit (see below).
  • Netherlands eScience Center's python template includes many of the best practices that we apply here. We used many of the ideas there in a Julia context, and took many non-Julia specific ideas from there.
  • TulipaEnergyModel.jl was the project that motivated this version of a template. From the start we decide to implement many best practices and so we started from a PkgTemplates.jl template and started adding parts of the python template that made sense.
  • The Julia Smooth Optimizers package ecosystem was one of the main motivations to look for a solution that could be applied and reapplied to existing packages, in particular to help maintainers.

Contributors

Abel Soares Siqueira
Abel Soares Siqueira

💻 📆 📖 🚧
Tangi Migot
Tangi Migot

💻 📖 👀
Pablo Rodríguez-Sánchez
Pablo Rodríguez-Sánchez

📖 🤔
Olga Lyashevska
Olga Lyashevska

💻 📖 🤔
Luisa Orozco
Luisa Orozco

💻 📖 🤔
Netherlands eScience Center
Netherlands eScience Center

💵
Suvayu Ali
Suvayu Ali

🐛 👀 💻
Stefan Verhoeven
Stefan Verhoeven

💻 🤔
Dominique
Dominique

🤔 💻
fdiblen
fdiblen

💻 👀
Greg Neustroev
Greg Neustroev

💻
Luca Ferranti
Luca Ferranti

🤔
Guillaume Dalle
Guillaume Dalle

🤔
Johannes Hidding
Johannes Hidding

🐛 👀
Frames White
Frames White

💻 🐛 🤔
Lauren Clisby
Lauren Clisby

🤔 💻
Diego Alejandro Tejada Arango
Diego Alejandro Tejada Arango

🤔
LeoXia
LeoXia

💻