GeppettoJS / backbone.geppetto

Bring your Backbone applications to life with an event-driven Command framework.
http://geppettojs.github.com/backbone.geppetto/
MIT License
203 stars 28 forks source link

Bringing Geppetto to life. #86

Closed howardroark closed 8 years ago

howardroark commented 9 years ago

I understand that Geppetto is based off of backbone, but I think it is a lot more than that. I am not really a "developer", but I am learning to be. Up until now I really just pushed things around until I got what I needed out of them. Through the process of attempting to digest the ideas behind this framework I started to understand how "all-in-one" frameworks have been crippling my ability to create things and truly understand them. Ever since @creynders used the term the "triumvirate" to explain Geppetto things have started to make so much sense. I really think there is truth behind the idea that programming is about distilling your logic into 3 core ideas per "plane" of thought. MVC has held true since the 70s for a reason and really think it has a lot to do with the fact that it distilled your overall logic into 3 groups. The things that occupy the M, V and C likely have a large role, but it is evident the the C is very subjective.

What if Geppetto defines itself as "The Triumvirate Framework" and really aims to stick to that concept. I mean it is right there already anyway. I understand that it is built upon backbone, but it is a lot more than that in my mind.

To me it is this...

1. The Skeleton

The first layer is a Skeleton which starts you off with three core class types which are the basis of how you would break up anything being built for human interaction. I feel backbone is spot on with the idea that those class types are Models, Views and Collections. (To me "controllers" are a relatively crippling idea when your objective is likely to evolve as you learn) Effectively this layer is the spring board of the creators vision.

2. The Library

The second layer is the Library of extensions of those classes that keep up with the state of UI that people are currently accustomed to building and interacting with. It is also a collection of functions that enable you to better implement things like templates and the current open source landscape of tools. More or less the "common sense" layer which reduces the redundancies of how you may extend the skeleton layer to work for your objectives. (Ideally this layer could be distilled into three core ideas as well... Or maybe as the metaphorical "middle" there is a relative chaos to its nature)

3. The Context

The third layer is the Context which takes the role of stringing things together in a way that allows things to evolve. This layer is that point at which you need to begin to trust its methodologies and let go of the urge to "see" everything in your mind at once. Sort of the idea that a core "controller" is just not a realistic objective and will only hinder your project. You really need to harness the ideas of Events, Commands and Dependency Injection and let things "come to life".


I am not a "technical mind" per-say, but when things are broken down into these terms I can really see its value. In my view Geppetto should be less about Backbone and Marionette and more about distilling these fundamentals so that people attempting to leave behind "all-in-one" frameworks like Angular can really digest the nature of what it takes to build things for the future. When you start to see how things stop bloating and actually get simpler over time it is quite the realization for people.

Geppetto is the Triumvirate Framework which uses the S.L.C. methodology ;)

creynders commented 9 years ago

@howardroark thanks for your thoughts. I agree on most points except maybe the SLC terms themselves ;) I started working on v0.8 this weekend, which definitely pushes towards the triumvirate approach, keep an eye on the dedicated issue for more info.

howardroark commented 9 years ago

Hah! I had to throw an acronym in there :P I am excited to see what comes down the pipe!

For me I just needed a narrative in my head for explaining to others why we should go a route like this vs something like ember or angular. Not that there is anything wrong with them... they just don't offer the freedom that something like this can. Backbone and Marionette are amazing tools, but not quite enough. Maybe the triumvirate breakdown was semi-accidental, but the point is that it really does make a lot of sense when you look at the "bigger picture".

I'm excited to see docs and usage examples grow :)