
Buffalo – MVC Web Framework for Go - sjellis
http://gobuffalo.io
======
dchuk
I always defer to frameworks when working on any project, large or small, so
this looks really cool to me as we have been debating on breaking out some of
our high volume components into microservices at work and Go is an option.

For large projects, using a framework and writing code the way the framework
wants you to means that it's much easier to get new team members up to speed,
meaning they contribute sooner and with less draw on other team members to
teach them the nuances of your weird custom stack.

For small projects, and side projects especially, you can't/don't want to lose
steam in analysis paralysis deciding on every little library and thing you
want to use. Just pick up the framework that has made most of those decisions
for you and focus on the business logic.

Rails nails this. Laravel is pretty good at this. Lots of others do this too
(rails and laravel are where I spend my time). Sure, they might not be
"exciting" but they are productive, and that, to me, is most important.

~~~
volker48
Depending on how micro your microservice is and if it really is high volume
(not sure what high volume means to you) then I would recommend just stick
with the standard library to start and grabbing other libs as you need. I
wrote a simple internal microservice handling ~400k req/s at peak with no
framework and it works great. I can see the appeal of the framework in getting
something up and running really fast with one command, but that amount of time
in the beginning that it saves is insignificant compared to the long term
lifecycle of the project.

~~~
cowl
We know that standard library is enough But there is always need for a
framework if you do the same thing over and over again. The consensus in the
GO community seems to be that you create from scratch every-time the same
handlers, utilities etc. And practically we have ended up with everyone having
their own in-house framework. There is nothing wrong with not wanting to
create the same helpers every time or not wanting to have your personal
framework.

Saying that the standard library is all you need is like saying that you don't
need the standard library either, Go's Keywords are all you need.

~~~
volker48

      Saying that the standard library is all you need is 
      like saying that you don't need the standard library
      either, Go's Keywords are all you need.
    

Not really sure what you mean by that. I didn't say the standard lib is all
you need I said start with the standard lib and add other libs when and as you
need rather than starting with everything in the beginning. In my experience
you end up fighting the framework in the long run, but if you like them use
them.

------
vesak
That REPL is awesome and an actual differentiating factor.

I grew to web programming with Rails and Django, and trying out PHP (where to
my knowledge nothing comparable exists, or apparently even could exist) for a
few years felt like I had entered the stone ages. And that feeling did not
pass.

~~~
memco
In the PHP space I know Laravel has an "artisan tinker" command which gives
you a similar REPL where you can do at least some of the things demoed on the
Buffalo site. This seems to be increasingly common to have for web frameworks
from my somewhat limited experience.

~~~
vesak
Indeed, artisan tinker is quite close to what Rails and Django give. The REPL
is a bit awkward when compared to ipython, though, but that is probably
fixable. If they'd just do it :)

------
warent
Go is such an easy language as it is, these kinds of frameworks just encourage
amateur developers to skirt by with minimal understanding of what they're
really doing. An MVC framework sounds like a great personal hacking project
for fun, but I would beware of advertising anything like it for professional
use.

~~~
hordeallergy
The further problem is the resulting community. Interviewing for Go devs is
going to become a pain.

~~~
thewhitetulip
> Interviewing for Go devs is going to become a pain

Might I ask why?

~~~
hordeallergy
Wheat from chaff.

~~~
thewhitetulip
I am sorry, I still didn't get your concern. It is easy in my opinion to
identify the person writing Go code. Look at their Github profile! (I am not a
recruiter, so I don't know how effective that really is, but Github profile
does reflect a person's contributions to FOSS and if the person is a FOSS
contributors, look at their repos or their other PRs or their projects)

------
bmpafa
That's the best mascot I think I've ever seen. Merits of the language
notwithstanding, Go consistently outperforms on `d'awww` benchmarks.

------
TeeWEE
I think in practice most of the time, you dont need a framework for webapps in
golang. A simple http handler with json / templating etc output is very simple
to write. The net/http package is very powerfull, but still has a lean api.

I do use
[https://github.com/urfave/negroni](https://github.com/urfave/negroni) for
routing. But otherwise i just use the http package.

------
astrodust
Time to update the "Buffalo buffalo..." page on Wikipedia:
[https://en.wikipedia.org/wiki/Buffalo_buffalo_Buffalo_buffal...](https://en.wikipedia.org/wiki/Buffalo_buffalo_Buffalo_buffalo_buffalo_buffalo_Buffalo_buffalo)

~~~
ascotan
buffalo from Buffalo using buffalo who are buffaloed by buffalo from Buffalo,
buffalo other buffalo using buffalo from Buffalo

------
tboyd47
Love the JQuery + Webpack defaults!

The main issue I ran into when trying to develop a web app with Go was
debugging. Web apps are multi-tier systems, and Go doesn't give you stack
traces when something goes wrong, which is something I don't have the patience
for when there are plenty of good and mature languages to use that do have
stack traces. I know a common response to this is, "just practice better
system design," I'm not one of those people who believes that I need to define
an API for every internal piece of code. I just want to be able to find an
error quickly and move on. Does Buffalo have a solution to this? I really like
it so far.

------
bscott818
I think the main point of Buffalo is using the common web app libraries that
are used most. Yes it's still important to understand how it all works
underneath the hood. Coming from a Rails background, Buffalo makes me really
enjoy web development. I feel this is what Rails was to Ruby in a way.

------
charlieegan3
Sounds like Buffalo is omakase?

~~~
kevinmannix
Explanation on "omakase"? I haven't heard that term before and Google only
provides sushi restaurants nearby...

~~~
charlieegan3
Was a reference to this post: [http://david.heinemeierhansson.com/2012/rails-
is-omakase.htm...](http://david.heinemeierhansson.com/2012/rails-is-
omakase.html) where Rails is described as a curated set of
defaults/components/tools/options.

------
my_ghola
It tries to install webpack globally which it can't because I'm not running it
with sudo and I have it installed already anyway. I see I can skip adding
webpack to the app but can I just skip the installation part?

------
andrewvijay
Not a mobile friendly website? Please it's 2017

~~~
nbrempel
That's a pretty negative attitude.

It's open source. Why don't you contribute?

[https://github.com/gobuffalo/gobuffalo](https://github.com/gobuffalo/gobuffalo)

~~~
andrewvijay
I am requesting in my comment. But anyway its a good suggestion to contribute.
Will do.

