DISCLAIMER: Expressed views on this blog are my own.
My new adventure with Celice started after I committed to making CraftyJS better by fixing the problems I saw with it, which were bugs, technical cruft (lack of documentation/tests and encapsulation of code), and making it fast on mobile. These bugs are related to oversight and handling of legacy devices/multiple browsers. I then realized I could do better than trying to restructure and modify everything in Crafty by doing my own thing because I was essentially just learning what had already been done and trying to modify it in a way that makes sense. Why learn what's been done when I can try building my own thing? (counter intuitive I know)
Celice is the Entity Component System (ECS). It is bundled up with a game engine driven by game states and systems. To align Celice with Entity Component Systems in javascript, Entities are just objects, Components attach data to Entities and Systems modify entities' component data. Game states store data related to the state and provide that information to the Systems in that state. At least this is my understanding of how the ECS interacts with a game, so far.
The secondary intention with Celice is to bring a modular game engine where you can pick and choose what systems you want in your states and easily include them without any modification to the internals and also make your own systems and integrate them into your states easily. Heck, if you want to share your game systems with others, that would be possible too. 3D games? Build your system and necessary components and put it into the state.
I intend to be strict about providing inline documentation in code and providing tests for Q/A. This means any contributions will have to be strict about these. If you fix something, then you must provide inline comments specifying the problem and how it solves it. Terse and Verbose comments are not acceptable, there needs to be enough to be able to come back to the issue later and understand what is going on.
I've always wanted to create my own 2D game, so that is where I am headed with Celice.