Move Over Meteor: Derby Is The Other High Speed Node.js Framework In Town
techcrunch.com
techcrunch.com
With frameworks, the framework calls your code. With libraries, your code calls the libraries.
If you've never taken the libraries approach and are working with a framework, then you are essentially holding a hammer and looking at all problems as nails.
What I'd prefer to hear about is a discussion of Racer, the synchronization library used in Derby.
By your silly standard, passing a function to _.each() makes Underscore.js a "framework", which is probably not the point you were trying to make.
From this perspective, underscore.js presents an Enumeration framework. However, it is usually a couple stack frames deep and still way at the leafs of your code paths. Backbone.js is clearly a framework -- it describes your data model plumbing and interactions and provides the bindings and pipelines -- this structure dominates the organization of your code and program flow. Nothing about underscore's utility functions have this "infectious" or "dominating" characteristic.
I used to maintain: https://twitter.com/FrameworkvsLib
A framework is indeed "just a library," but when one is using a framework one is building on that framework, using that structure to construct some new thing. A library I see as something that is called into for some routine, it's a body of functionalities one can tap into. Your code is-a instance of your chosen framework, and it has-a series of calls out to libraries.
Derby is an npm module, and developers are in control of their own standard Node.js/Express server files. We use Browserify (https://github.com/substack/node-browserify) to bundle up scripts, so you can use any standard npm module on both the server and the client without modification.
We have a long way to go in terms of customizing Derby; however, it is already very flexible in some ways. For example, Derby apps can be rendered and sent to the client from Express routes or via Derby app routes. There's also a method to simply get a blob of rendered HTML or render a static page using the same templates. Derby includes model-view bindings, but it's simple to bind some things and not others or nothing at all.
Much of Derby and Racer is very different from how web apps are written today, and we are focused on iterating quickly to start. As it matures, Derby will become more of a collection of independent modules. That way, most developers could use Derby out of the box, but others could fork the project and customize or use features of the framework independently. It's a ways off, but that's the long term goal.
Don't get me wrong--there's plenty of ways for frameworks to get this wrong, but the overall idea is not inherently useless.
[1]: And why would you want to do that? Because desktop apps never evolved some killer features of the web app: lightweight, cross-platform, zero-install, a passable remoting API, and sandboxing.
"No one agrees on frameworks. It's difficult to get consensus on how much or how little a framework should do. Flatiron's approach is to package simple to use yet full featured components and let developers subtract or add what they want" http://flatironjs.org/ , Philosophy
I agree that the best thing about Node.js is how small, what tiny surface most modules have. Node, hopefully, can stay on this path so far away from the rest of the development world, can be a programming environment where people understand full stack how their application functions. I think not making frameworks or making them out of small modular systems is what it takes to make that win.
After the 20 days my biggest problem was with Derby and trying to make progress as the community and support just wasn't there. Of course you might think that one shouldn't complain about this, but its important for the uptake to have clear documentation (it starts well), guides and people involved etc. I think it was Nate that would answer my stupid questions on IRC when he had time, but other than that I was on my own and the feeling I got from others was the same...
Normally I would just read the source, but it was in coffeescript ( glad that Derby has now moved to plain Javascript), and it just wasn't enjoyable when I wanted to integrate with my own datasource from a custom JSON backend - not just another NoSQL database, but an API I know well. I got it working and so forth but it did make me wonder why the hell I bothered and rm'd the git repo.
Doing the same exercise using Meteor the first thing that struck me at the time was their community. The second thing was I was having fun again, and thirdly it was less effort as long as I didn't leave the path too much. But the fact that it didn't have auth and that my datasource was completely exposed and that I couldn't use existing packages was a downside. So I put both to bed.
I hope Derby is getting greater traction and a community is starting to form around it. I also hope that the move to Javascript will make some of the design decisions clearer.
In a few months I will probably give one or other a proper project to work on.
What? no npm?
So I recently switch to SocketStream. So far so good. I like to be in full control and assemble together the bricks I need.
We just added a lot of functionality to our query system, but it is very much a work in progress. Making it easier to create queries that represent relationships is definitely on our task list.
For some tasks, this is undeniably true, but for most business problems I think this is just not the case. The profound irony behind this is that schema-less document stores wind-up being so much less flexible due to them being inherently very denormalized.
The good case for document stores is:
1. You have data that really is a blob independent of having relations 2. You need high-performance or map-reduce (Riak, Dynamo, etc.)
Those two use cases are really rare in the real world. For most people there's a huge amount of code that leans on RDBMS strengths such as:
1. Integrity constraints 2. Very flexible ad-hoc queries. 3. Decades worth of work on tooling to mitigate rough edges, and solve tough problems that have come up before.
For our particular use cases, we think that document stores are a better fit, but I am not arguing that document stores are universally easier or better.
Look at Voldemort Nosql DB. Now that's a unique (to software) name.
Supposedly these features are coming, and I sincerely hope that derby matures into a real-world tool. The RacerJS tech is amazing, and the library is fun to work with.
We understand that authentication and authorization are critical, and we have been ironing our issues with them using the app that we are developing as a first test. Pretty much all of the required code is already in master, and an example is forthcoming.
They're currently building a core product that actually has a business model with the derby framework which will help it progress along very well.
While they may not have raised 11.2M these guys aren't going anywhere.
In spending just an hour or two with them their talents really shined through. As a supporter of rails I will certainly be staying on top of changes to both Derby and Meteor and looking forward to what comes next for both.
The reality is the creation of frameworks like these is nothing but a good thing for the hacker community at large.
Congrats on the press guys, Keep up the good work!
I think Derby is really cool, especially the synchronization and conflict resolution model. Though we've made some different choices with Meteor, I think there are many people that will like Derby's direction. Everyone benefits when there are multiple choices.
...and a spell checker ;)
Ironic that i come to know about this framework via Techcrunch.
What exactly are they funding in? Please explain, im a developer who clearly fails to understand business.
Edit: Please feel free to email if you would rather keep this thread clean from this detour.
There's 11 million dollars on Meteors side.
How silly of me.
Everyone has a right to be fucking stupid.
Enjoy Meteor and have a nice day.
You've taken my argument (money!=quality), and decided to counter it with 'you can make more money developing a windows app than a linux app'. Perhaps you should go into politics... Or go back and re-read the thread... perhaps you'll see how badly and incoherently you come across.
So don't discount anything yet...
I am not picking a side - i am saying that these are factors which may equate to nothing or everything and it is far too early to call...