bruth / synapse

Hooks to support data binding between virtually any object.
http://bruth.github.com/synapse/docs/
BSD 2-Clause "Simplified" License
150 stars 6 forks source link

Future of Synapse #31

Open bruth opened 11 years ago

bruth commented 11 years ago

I receive a few emails from time to time asking if the project is abandoned. The answer is no, it's not, but I have had no reason to update it for personal use.

It is useful to reassess whether a library is necessary after it has stagnated. I consider Synapse a lower level library for defining how data binding is defined between objects than something like what Ember, Knockout or Epoxy (for Backbone) provide in their data binding facilities. It may be on par with something like rivets.js, but I have not personally looked at it yet to compare (it seems like it is tied to the template?).

To help assess, I would like to open up the floor to anyone with feedback, questions, comments, use cases, etc. This will help define and drive Synapse as a project.

alanchrt commented 11 years ago

I came in here specifically to see if the project had died, and it's nice to see this little note.

I'd love to encourage you to keep going. I started a few months ago with Ember.js, and after spending some time with it, I really got frustrated with the strong opinionated nature of it. It dictates in a lot of ways how you develop your application, and when you want to deviate from the conventions, it can take a lot of acrobatics. Some of it gets really ugly, really quickly.

Furthermore, the all-in-one frameworks are relatively large file size if you don't need all the magic. In server-side frameworks, all the extra helpers and code make no difference, since file storage is no problem, but when you use an all-in-one magical frontend framework, you push the extra code to your users as bandwidth cost or load time.

So, it's more up-front work, but I've been putting together a more slimmed-down codebase tailored to my application's needs using Stapes.js (observable objects), Crossroads.js and rivets.js. Stapes would be a great candidate for a Synapse hook, by the way.

Each of these frameworks offer me a really tiny file size, and an un-opinionated approach to how I develop my application. I'm building a single-page MVVM architecture, because it's super convenient for my use case, but someone could whop these together into an MVC or even imperative style if they wanted. Stapes and rivets don't care what you do with them. They just do one thing well.

These are similar to the reasons I'm building with Pyramid now, even though I've developed client websites in Django for years.

But, looking around, there's a huge lack in that niche, and there's a big need for more component libraries like yours to crop up. I stumbled across Synapse as an alternative to rivets, and I'm thinking of testing it out to see what my code might look like if it's not sprinkled with data attributes. You're right, rivets is tied to the templates (DOM). I don't mind it, necessarily, but I want to see what else is out there.

Opinionated front-end frameworks like Ember.js and AngularJS and back-end ones like Rails and Django in my opinion make a lot of sense if you're cranking out a lot of client sites and need to develop rapidly, without coding a lot of boilerplate up front. But, if you're building a product, SaaS, or long term project and don't mind spending more time up front, the smaller Stapes, Rivets, Synapse, Crossroads.js type of tools let you customize things and keep them de-coupled, then swap out components later if you find something better without learning a whole bunch of new conventions in an opinionated framework.

That's my two cents. I haven't delved into Synapse enough to know if I'll stick with it on my current project, but I want to say that I'm totally into the idea of keeping projects like this alive and pushing for more of them. There aren't a lot of options and there's a need from at least one person. :)

bruth commented 11 years ago

Thank you for the feedback and motivating thought process. I agree there are few libraries in this space and having one would benefit development/innovation across these kinds of libraries. I need to take a quick trip through the code and docs to assess the state of things.