Our project needs feature X, could you implement it?
If we think it is a useful feature to have, we would be open to adding it to our roadmap. If you need it implemented in the short term, contact us to discuss ways to sponsor the development process.
Why not base it on SVG?
We have decided to use the Canvas object as the main backend because in our initial testing it was faster than SVG and allowed us to implement, optimize and have full control over our own Scene Graph / Document Object Model. SVG import / export is available and well tested. Refer to the next question.
How do I export as vector graphics?
Importing from and exporting to SVG is implemented in the library since Since November 2012. See project.importSVG(svg), item.importSVG(svg) / project.exportSVG(), item.exportSVG(). PDF exporting will hopefully be implemented in the future, possibly through an external library.
Aren't you cluttering the global namespace with lots of variables?
What about the competition? Aren't there quite a few libraries out there that wrap around the Canvas already?
We are aware of the many Canvas wrappers out there, but we see Paper.js as much more than that. It is an extensive library that comes out of years of experience with vector graphics and API design for Scriptographer. It offers many highly useful tools to work with vector graphics that canvas lacks: A well designed scene graph and DOM, highly optimised and accurate mathematical calculations for lots of bezier related things, such as bounding box calculations (with and without stroke expansion, including all different stroke styles, even miter limits), curve and path length (using Gauss-Legendre numerical integration), path time parametrisation (finding bezier parameters at a given offset / length, using Newton-Raphson root finding), curve fitting, and fast path flattening, allowing us for example to replace Canvas' missing dashed line support with our own at near-native speed.
Why not just work with the HTML5 Canvas directly?
See the previous question for a list of added benefits of working with Paper.js
Can you use Paper.js without writing PaperScript?