guide/src/why_nannou.md
nannou is a collection of code aimed at making it easy for artists to express themselves with simple, fast, reliable, portable code. Whether working on a 12-month installation or a 5 minute sketch, this framework aims to give artists easy access to the tools they need.
The project was started out of a desire for a creative coding framework inspired by Processing, OpenFrameworks and Cinder, but for Rust. <sup>Named after this.</sup>
Nannou aims to provide easy, cross-platform access to the things that artists need:
Scalar, Range.Path, Polyline, Polygon, Rect, Line, Ellipse, Quad,
Tri.Cuboid.Ellipsoid, Cube, Prisms, Pyramids, *Hedrons, Camera, etc.Nannou aims to use only pure-rust libraries. As a new user you should
require nothing more than cargo build to get going. Falling back to C-bindings
will be considered as a temporary solution in the case that there are no Rust
alternatives yet in development. We prefer to drive forward development of less
mature rust-alternatives than depend on bindings to C code. This should make it
easier for nannou users to become nannou contributors as they do not have to
learn a second language in order to contribute upstream.
Nannou will not contain unsafe code with the exception of bindings to
operating systems or hardware APIs if necessary.
Nannou wishes to remove the need to decide between lots of different backends that provide access to the same hardware. Instead, we want to focus on a specific set of backends and make sure that they work well.
Rust is a language that is both highly expressive and blazingly fast. Here are some of the reasons why we choose to use it:
NULL.For the most part, nannou is trying to maintain as much flexibility and compatibility with the licensing of Rust itself, which is also dual licensed.
The Apache 2.0 and MIT license are very similar, but have a few key differences. Using the Apache 2.0 license for contributions triggers the Apache 2.0 patent grant. This grant is designed to protect against leveraging the patent law system to bypass (some) terms of the license. If the contribution is under the Apache 2.0 license, the contributor assures that they will not claim a violation of (their own) patents. If someone makes a work based on Apache 2.0 licensed code, they in turn also vow to not sue their users (for patent infringement). The MIT license provides compatibility with a lot of other FLOSS licenses.
Further reading: