
Trails – Modern MVC Web Framework for Node.js - tilt
https://github.com/trailsjs/trails
======
clay_to_n
Weird situation with this and Sails right now.

Sails.js development has basically stagnated in the past year, and many people
in the community believe Balderdash, the company behind it, aren't giving it
the attention it deserves (they have a few new projects they're working on).
Travis Webb and his team behind Trails were kicked out of Balderdash (not
clear if fired from the company or just removed from GitHub group), and Travis
blames Mike from Balderdash for doing it as a political move to keep control.
Mike has said very little publicly about it, apparently not wanting to stir up
more drama.

Trails seems to be an attempt at achieving what Sails has achieved (a full-
stack modern MVC framework in node) with newer tools (ES6, I think Koa by
default instead of Express, etc) and perhaps more modularity.

I think it's an ambitious project with good goals, but it will be a while
before it will be stable and ready to use. And if it does reach that point,
it's still susceptible to what's hurting Sails right now (a larger community
than your developers can handle, de-prioritization, politics...).

Hopefully this turns out like the node / io.js split and is, in the end,
positive for the ecosystem in some way.

~~~
traviswebb
It will be awhile before it's fully production-ready of course, but we'll
begin using it internally for developing new projects after our 1.0-beta
release in February.

One note: we're using Hapi by default, but koa and express4 will be supported
as well. This is part of our modularity difference.

~~~
rattray
Can you please mention these things on the README?

------
romanovcode
>Trails is built and maintained by former members of the Sails.js core team

Just no. I was working with Sails.js for about a year now on production
systems - it's horrible. Without a doubt I can say that it's the worst
framework I've ever worked with. Especially their so called "orm" \- we
actually had to switch it off and work with pure mysql queries instead because
it can't even do migrations (it deletes everything from db, stores in ram and
re-insert).

Seriously, don't believe the hype, I bet this will be just as bad as Sails.

~~~
roblabla
While I haven't played with Sails.JS, I've heard many people complain about
how bad it was. However, just because the people building this new framework
used to work on the Sails.JS Framework, you're going to dismiss it as being
"automatically bad" ? I didn't look at Trails.JS so I don't know how it looks,
but this kind of attitude seems extremely toxic and detrimental to the Open
Source space. It makes me sad this is the top comment.

If anything, this gives them the chance to start anew, equipped with the
knowledge of past mistakes, to avoid making them again.

~~~
bnb
100% agree with you. I don't agree with the comment you replied to, but it's
_not_ a good sign that they stole another project's logo.
[https://tent.io/](https://tent.io/)

~~~
yejodido
Hi bnb, it hurts to see the word "stole" and judgement passed so hastily, so I
thought I'd take a quick second to reply.

It was only just this morning with the attention from Hacker News that we
learned about the similarities between the two logos/brandmarks, and we're
actively coming up with something new and different.

We'll keep the community posted on the status of the new designs here:
[https://github.com/trailsjs/trails/issues/47](https://github.com/trailsjs/trails/issues/47)

Being open, compassionate, and transparent is a huge part of what we're hoping
to do with Trails, so chatting with us directly is always an option.

We hope to see you on gitter!

All best :)

------
traviswebb
All --

Keep in mind that Trails.js is pre-release. We're releasing 1.0-alpha on
January 8, which isn't too far away. For more info on our development
schedule, see our roadmap:
[https://github.com/trailsjs/trails/blob/master/ROADMAP.md](https://github.com/trailsjs/trails/blob/master/ROADMAP.md)

We'll be giving some talks on Trails the week of Jan 11th; we'll be visiting
local Javascript groups in Detroit, Miami, and Los Angeles that week. If
you're in the area, come hang out!

~~~
pdappollonio
I'm interested in the Miami one. Any information?

~~~
luccastera
I just announced the meetup. You can find it here:
[http://www.meetup.com/Miami-node-js-
Meetup/events/227782873/](http://www.meetup.com/Miami-node-js-
Meetup/events/227782873/)

------
edwinnathaniel
My new/current job is 100% JavaScript and I have been thinking to choose
NodeJS and either React/EmberJS/AngularJS for my newbside project (a typical
CRUD app) that I will have to maintain for a very long time. I almost chose
Sails because Express is too low level/too simple.

Lately I've been reconsidering my options ever since there were a few HN posts
related to my choice of stack that seem to conflict with my requirements: side
project (meaning little effort) and long term maintenance (meaning stability,
documentation should still exist for perhaps prior versions, relevant
articles, examples from the Internet). Real time isn't a requirement, REST API
isn't a requirements (yet), so I guess that minimize the need of NodeJS. I
also haven't found a good case/example of code sharing between client and
server side neither I heard people reaping tons of benefit from the principle
since most front end framework forces the user to subscribe to their
model/paradigm that may not work well with the back end code.

I quickly realized that perhaps Rails or the good old Java (with SpringMVC)
seem to satisfy the requirement.

~~~
supernintendo
As a full time JavaScript developer, I would never choose Node.js for the back
end if I had the choice. Elixir or Ruby all the way.

~~~
dpacmittal
Why?

~~~
supernintendo
For me, it's personal preference. Node.js is used and loved by many, but to me
it's just an asynchronous event loop running on a single threaded process with
a JavaScript API. I've written performant Node.js code and maybe for smaller
web services it's great. But for a backend server, I worry about human error
in large, evolving projects (especially when it comes time to scale).

Other issues faced by myself and colleagues more experienced than me include
callback hell, race conditions, NPM errors and debugging code (in hindsight,
something like node-inspector would have come in handy [1]).

Why Elixir? Well, for me OTP makes writing async code much easier. Message
passing between GenServers or other processes is effortless. Fault-tolerance
is built into the platform, as processes can be supervised and respawned when
they die. It is based on Erlang, released 30 years ago and used by many large
companies and projects [2]. Also, writing it makes me genuinely happy. :)

I would consider Ruby mostly because I've had my hands in Rails apps and can
make my way around them. I've also been blown away by many brilliant people
I've met and worked with in the Ruby community.

[1] [https://github.com/node-inspector/node-
inspector](https://github.com/node-inspector/node-inspector)

[2]
[https://en.wikipedia.org/wiki/Erlang_(programming_language)#...](https://en.wikipedia.org/wiki/Erlang_\(programming_language\)#Distribution)

~~~
edwinnathaniel
I'm with you on this one (except the Elixir part, never tried, can't comment).

Many past NodeJS stories/use-cases from the big name companies like LinkedIN,
eBay, Wal-mart seemed to use NodeJS as a front-end server. The back-end code
is still something else (or perhaps even legacy code). I know someone who
works for another big name company that uses NodeJS for their new project
doing exactly this as well: a front-end server that communicates with
multiple/many services behind the scenes. Those services are written in
Java/C#/C++.

Meanwhile, a few other NodeJS based commercial apps (e.g. Trello) does not
look too complicated when they begin the project...

------
kevindeasis
At first I was like, "oh another node framework"

Then I saw a point where they were using hapijs in their module:
[https://github.com/hapijs/hapi](https://github.com/hapijs/hapi)

That is giving me a small motivation to try some of my future weekend projects
with Trails.

~~~
sirodoht
Why such decision-changing positive energy towards hapi? I am not saying you
shouldn't, honestly asking why.

I have checked it, and I was not convinced of its superiority over express,
considering the express community, modules, SO threads, etc. At least for a
small-medium server.

~~~
kevindeasis
I just found it easier to work with. Some might find express easier, but that
is just my opinion. There are also companies using hapi in production. Walmart
used it and worked on black friday.

Modules is not a big problem since there are lots of node modules out there.

One could even say, why use express when meteor has a bigger community? They
have modules, etc.

------
andrewchambers
Can someone define "modern" in this context for me?

~~~
DonHopkins
MVC is old and obsolete cargo cult technology.

The phrase "Modern MVC Web Framework" is lipstick on a geriatric pig, like
"Modern Waterfall Software Development Paradigm".

Unless by modern they mean modern as in modernism, that began in the 1870s as
a self-consciousness and irony concerning literary and social traditions. [1]

In the same sense that the art style and technology in Fallout 4 is "modern".
[2]

MVC frameworks might be better described as "Modern Googie GUI Architecture".
[3]

"Things seem to hang on in computing just because they work a little bit."
-Alan Kay on MVC [4]

[1]
[https://en.wikipedia.org/wiki/Modernism](https://en.wikipedia.org/wiki/Modernism)

[2] [http://img.duniaku.net/wp-
content/uploads/2015/06/Fallout-4-...](http://img.duniaku.net/wp-
content/uploads/2015/06/Fallout-4-1.jpg)

[3]
[https://en.wikipedia.org/wiki/Googie_architecture](https://en.wikipedia.org/wiki/Googie_architecture)

[4]
[https://news.ycombinator.com/item?id=7755759](https://news.ycombinator.com/item?id=7755759)

~~~
dimgl
If it's obsolete, what should replace it?

~~~
jessaustin
Here's one idea: [http://cycle.js.org/model-view-
intent.html](http://cycle.js.org/model-view-intent.html)

~~~
DonHopkins
It's not just about replacing the controller, which nobody understands or
agrees on [1] -- it's about getting away from the idea that you can
oversimplify user interface architecture down to a holy trinity of just three
elemental concepts.

You could just as well ask "If Earth, Wind and Fire [2] are obsolete, what
replaces them?"

There's more to modern chemistry than Earth, Wind and Electricity.

[1]
[http://c2.com/cgi/wiki?WhatsaControllerAnyway](http://c2.com/cgi/wiki?WhatsaControllerAnyway)

[2]
[https://en.wikipedia.org/wiki/Classical_element](https://en.wikipedia.org/wiki/Classical_element)

~~~
jessaustin
With Cycle MVI can be just a guide for getting started. (More pejoratively, a
crutch.) I regularly find the _intent()-model()_ interface getting too verbose
and boilerplatey so I just munge the two pure functions together into one. So
far it's made sense to keep _view()_ separate, however.

------
harunurhan
I like how you differentiate from Sails such as ES6, and also the fact that
you are much more community oriented. Although I am not a JS fan for backend,
I will give it a try next time instead of using Sails.

------
manojlds
Context
-[https://github.com/balderdashy/sails/issues/3429](https://github.com/balderdashy/sails/issues/3429)

~~~
always_good
Yikes. Gotta wonder if the "Meet the Team" page on
[http://www.balderdash.io/](http://www.balderdash.io/) is up to date after
reading that.

~~~
dabernathy89
It's not. Travis' Twitter/Github profiles don't seem to be up to date either.

[https://twitter.com/mikermcneil/status/674307797832495104](https://twitter.com/mikermcneil/status/674307797832495104)

------
sotojuan
Pretty cool. Usually the Node community isn't into Rails-like stuff but I'll
give this a shot.

------
z1mm32m4n
Is there any documentation yet? I'd love to try it out.

------
bhanu423
Awesome to see a project from the SailsJS team. SailsJS was the first MVC
framework which I worked it and was extremely easy to begin with. Kudos for
using ES6.

~~~
mikermcneil
Sorry for the confusion. This isn't a project from us. Travis Webb (@tjwebb)
was added as a contributor in mid-2015, but unfortunately it did not work out.
The only contributor who was removed from Sails was Travis, in late November.
And ever since, he has been doing everything he can to discredit our project,
including claiming that the Sails team is working on Trails, or that Sails is
"abandoned". Travis is the _only_ former Sails contributor (i.e. someone with
actual write access to our repos) working on Trails.

If you have a technical problem with Sails, bring that up with me or another
member of our core team on GitHub. But please realize that this fork is not
about technical issues; it is a personal vendetta against me and the Sails.js
project.

~~~
traviswebb
> Travis is the _only_ former Sails contributor (i.e. someone with actual
> write access to our repos)

Again, we seem to define these terms differently. I think if you told the
hundreds of Sails contributors that they aren't actually contributors because
you haven't given them write access, they would feel rather insulted by that.

> But please realize that this fork is not about technical issues

It's true that I think you're a lying scumbag, but I need a software stack
that I can build my business on for the next 2-5 years. Sails.js is obsolete,
and these issues stemming from your poor technical competence and community
management are thoroughly documented on the internet.

------
mikemaccana
So what's actually included? A comment here mentioned koa, and there's some
kind of ORM, but the README has no information.

------
stephengoodwin
FYI, the trailsjs.io official site listed on Github is just a Namecheap
landing page.

------
anodari
A few days I saw [http://nodeontrain.xyz/](http://nodeontrain.xyz/), it looks
similar.

------
hmans
lol no

