Goals for 2022

Having a better CLI

Currently, the CLI is a bit wonky. It can break at any moment for any reason. If you try to compile a scene with a syntax error, it will crash without explaining why it failed. The way it compiles scenes isn't great: instead of getting all the needed data once, the CLI executes multiple times the Dart file. It may be interesting to use the Embedding Dart API. Also, there are way too many options (--gl, --webdev, --html, ...). It's difficult to know which flag is important.

Support other rendering back-ends

Currently, the only supported rendering API is the HTML 2D Canvas. However, using Cairo to render non-interactive animations would be faster than the 2D Canvas API: the scene code could be compiled to a native executable which would run a lot quicker compared to a JavaScript file. I started implementing the Cairo backend, but it's not finished yet: gradients aren't implemented.

3D rendering could be done with OpenGL/WebGL. However, these libraries are made to render triangles or polygons not shapes defined with Bézier curves. So, it could take a while to implement.

Precompiled videos

(suggested by JCosmos)

When rendering complex animations, it would be better to render this animation in the compilation step. Otherwise, it may lag someone's computer when running this animation. It could be done right now but it's better to wait for the Cairo backend integration and the CLI improvement.

I hope it can be done quite easily with something similar to this:

class TestScene extends Scene {
	@override
	Future construct() async {
		await part1();
		await part2();
	}

	Future part1() async {
		// animations here
	}

	@precompiled
	Future part2() async {
		// animations here
	}
}

More documentation

One advantage of Dart is dartdoc. It's a tool that'll generate documentation based on comments in the code. For example, a well-documented class is the AbstractDisplay (API Reference page)

AsciiMath integration

AsciiMath is an alternative syntax for LATXE\LaTeX. For example, when you want to draw this formula:

n=11n2=π26\sum_{n=1}^{\infty} \frac{1}{n^2} = \frac{\pi^2}{6}
You can use this LATXE\LaTeX code:\sum_{n=1}^{\infty} \frac{1}{n^2} = \frac{\pi^2}{6}. However, the backslash character is reserved for strings and needs to be escaped with another backslash: \\sum_{n=1}^{\\infty} \\frac{1}{n^2} = \\frac{\\pi^2}{6}

But, in AsciiMath, it's : sum_(n=1)^oo 1/n^2 = pi^2/6. Also, most LATXE\LaTeX code is valid AsciiMath code.

GUI for ManimWeb

It's very unlikely this goal will be achieved this year. However, it may be interesting to have suggestions on the way it would work.

Community goals

This year, it would be awesome to have projects that use ManimWeb. If someone wants to make a project with ManimWeb and has some problems, I'd gladly help.

Also, it could be nice to have a simpler logo for the Discord server and the website.