This category is for discussion of development of fastai v1, a rewrite of the fastai library, including:
- Support consistent API for classification and regression, across all of: vision, NLP, tabular data, time series, and collaborative filtering
- Clear and complete documentation for both new and experienced users
- Well structured code
- Notebooks showing how and why the library is built as it is.
Still to come is:
- Consistent API for localization and generation, across the 4 application areas
- Good test coverage (both unit and integration tests)
Here are some ways that you can learn a lot about the library, whilst also contributing to the community:
- Pick a class, function, or method and write tests for it. For instance, here are the tests for
fastai.core. Adding tests for anything without good test coverage is a great way to really understand that part of the library deeply, and have in depth conversations with the dev team about the reasoning behind decisions in the code
- Document something that is currently undocumented. You can find them by looking for the “new methods” section in any doc notebook. Here’s a search that lists them
- Add an example of use to the docs for something that doesn’t currently have an example of use. We’d like everything soon in the docs to include an actual piece of working code demonstrating it. Currently we’ve largely only provided working examples for stuff higher up the abstraction ladder.
Note for new contributors
It can be tempting to jump in to a new project by questioning stylistic decisions that have been made, such as naming, formatting, and so forth. Especially so for python programmers coming to this project, which is unusual in following a number of conventions that are common in other programming communities, but not in Python. However, please don’t do this, for (amongst others) the following reasons:
- Contributing to Parkinson’s law of triviality has negative consequences for a project. Let’s focus on deep learning!
- It’s exhausting to repeat the same discussion over and over again, especially when it’s been well documented already
- You’re likely to get a warmer welcome from the community if you start out by contributing something that’s been requested on the forum, since you’ll be solving someone’s current problem
- If you start out by just telling us your point of view, rather than studying the background behind the decisions that have been made, you’re unlikely to be contributing anything new or useful
- I’ve been writing code for nearly 40 years now, across dozens of languages, and other folks involved have quite a bit of experience too - the approaches used are based on significant experience and research. Whilst there’s always room for improvement, it’s much more likely you’ll be making a positive contribution if you spend a few weeks studying and working within the current framework before suggesting wholesale changes.