24 comments

[ 2.4 ms ] story [ 43.4 ms ] thread
I could see where this would be useful for somebody just starting out, and maybe that is what they are shooting for, but I see people outgrowing this pretty fast. Once people reach a certain level of competence it's going to be quicker and/or easier to set things up themselves.
Can you explain this more? What about it will be outgrown and how could a home grown setup be faster than just running a yeoman init command?
Here's an example - When I set up a new rails app there is a variety of stuff that I go and change immediately. Part of this has to do with the fact that I use jruby exclusively. I have a hand full of my own initializers I add to almost every rails app. Change some default config options. Delete some of the default tests that they give you. Delete some default fixtures.

A similar story could be applied to any of the technologies that Yeoman attempts to wrangle.

Yes I am quite aware that I could write my own generator to do all this for me. That is not the point.

I agree that what Yeoman aims to do could be useful for some. I am just pointing out that most people I work with have outgrown boilerplate solutions, as have I. I think many people will have a similar experience.

(comment deleted)
I don't think this is true. In fact, almost the reverse is the true.
I feel the complete opposite, actually. The more I know, the more I don't want to have to keep going through the same setup on every single project. It's important to understand what's going on under the hood, for sure, but to setup each project by hand every time is a big waste of time.
True. But you cannot expect that their boiler plate is good for everyone. As you become more familiar with a technology, you probably want to create a boiler plat that works for you. I find that tools like Yeoman keeps me from learning a tool when I'm just starting out and when I become good enough, its boiler plate is just not good enough.
I keep seeing "boilerplate" being tossed around in these comments, I'm not sure that really serves to identify what Yeoman is.

Yeoman is tooling and workflow concepts, take what you need, leave what you don't. Best of all fill any gaps with your specific needs.

Yeoman pursues package management through Bower. This can be done with our without Yeoman but the reality is front end package management is still a relatively new concept but one all developers should be latching onto sooner than later.

Yeoman pursues workflow tooling through Grunt. Many lack an understanding of what Grunt is and how it impacts your workflow but for me it was revolutionary.

Yeoman generators give you starting points for your front end assets but aren't intended to be more than staring points for concepts within your application (eg. I need a new controller). If these generators fail to meet your needs for a specific project or your overall project workflow, author ones that do. They also pull together tasks you would typically handle manually (eg. I created a new-controller.js now I need to add that script tag to my index and setup some unit tests).

Yeoman is a lot of things but doesn't claim to be a boilerplate for any one thing.

Whether or not you use Yeoman, I encourage everyone to dig through it and get a complete understanding of what it is and how it attempts to improve the efficiency of your workflow and tooling. You can apply these concepts to your own custom workflow or build a custom one based on theirs.

your talking only about the default boilerplate.

but what yeoman primarily is, is a rails-inspired generator system and you can personalize it and build up your own collection of generators. for that it works quite well and better than grunt's own which is simpler.

for instance I'm about to write one that clones compass-bootstrap and creates a _variables.scss and a screen.scss and a test page and hooks up guard reload into a grunt watch task. so I can then live tweak a bootstrap setup while looking at my example page (with all elements( and easily comment out all the features I don't want for a given site.

other simple generators do things like create a single bootstrap model.

or you could have your own personal reset and .scss libs and clone or copy them into any project.

you can write your own using the generator that generates default generators. build up your personal collection.

Others are disagreeing with you, but I actually agree. Yeoman isn't attractive to me at all. It's a lot of boilerplate and the return just isn't enough. It's much easier to directly set things up, and create custom boilerplates for my needs.
I think there may be some confusion by some as to just what Yeoman is and it's usefulness. My opinion is that Yeoman strives to improve your workflow and tooling in front end development.

The core team has engaged the dev community and identified how people are working, what tooling they use and what pain points they experience. Yeoman serves to centralize workflow and tooling and ease those pain points. The generators are very useful as well and extensible.

Again, Yeoman may not be right for everyone but I would be interested to know more about your workflow and tooling and contrast it to some of the concepts pursued. This feedback would be useful to those considering Yeoman.

I think there's a certain kind of person that's attractive to these kind of verbose, complex bootstrapping tools. Not that that's a bad thing at all, but like you said, it's not for everyone.

I can see the usefulness, but when I try to use it, it just feels like it has a steep learning curve and I could better invest my time elsewhere.

I use node heavily, and setting up the project, `npm install express` and a few other libraries, only takes a few seconds. I can start writing code quickly. I also don't create new projects that often, but I can't imagine most people are daily creating new projects.

At work we have our own django bootstrap that we can easily hack on and clone.

I can't say exactly why it doesn't fit my use case, but it just doesn't feel right for some reason. It has a ton of dependencies. I don't see why I shouldn't just use grunt and bower directly, etc etc.

This is exactly what happened to me. I started using Yeoman, loved it, then I started to need more flexibility, I learned how to use Grunt, and set up my own build and preview processes.
I disagree. The initial release of Yeoman with it's "opinionated workflow" (as they had coined it) cornered you into some dead ends, Yeoman 1.0 does not and is highly extensible.

Yeoman no longer attempts to be a wrapper for things like Bower and Grunt but rather concedes their usefulness while keeping them separate. Use it how you see fit.

What is great about Yeoman is it really gets you thinking about your end-to-end process for front end application and asset development and provides you some great avenues to pursue in both tooling and workflow. From asset creation, unit/end-to-end testing and build process it's rather complete in concept.

Is Yeoman for everyone? That's entirely up to the developer. Anyone worth his/her weight will certainly be pursuing these concepts in their own workflow whether with Yeoman or without.

"Once people reach a certain level of competence it's going to be quicker and/or easier to set things up themselves." Could you be a bit more specific as to what they will outgrow? Evolve maybe, but I personally will only shelf my usage of Bower and Grunt tooling if something makes more sense in my workflow.

Thanks for all the hard work - glad to see that Windows support is almost ready. I'll give that a try.
Is there an example with backbone requirejs and karma testing for yeoman out in the wild?
Yeoman makes it quicker and easier to generate boilerplate code, but I think the goal should be to eliminate boilerplate and abstract it away. Yeoman keeps spaghetti organized, but it's still spaghetti.
I am already using gruntjs for js/sass/images compression & combining, template compilation, and a whole lot of other build related stuff. Can somebody please convince me why I would want to switch to yeomen?
You are not switching to Yeoman if you use grunt, since yeoman uses grunt for all the tasks you mentioned. Yeoman is for quickly setting up and adding common parts to your app. For example, in angular you can create controllers, directives etc. skeletons, based on predefined or your own scaffolds. Using it will only be good if the generator for your app is good.
Congratulations on the new release. Ironically, I tried Yeoman in earnest for the first time yesterday.

I've got deep respect for the authors, but I've had a pretty miserable experience with Yeoman so far, even after giving it another try this morning. In particular:

* Using the web app generator seems to download an absurd number of dependencies every time. It takes minutes to download everything to start a simple app, about as long as it takes me to install Rails from scratch on the same system.

* After generating an app, I've yet to be able to actually run grunt on the result ... it always errors out with something. If it's not a jshint warning that causes it to abort, it's a Compass warning.

One of the great joys of writing HTML5 + Javascript apps is that the experience tends to feel clean and unencumbered. So far, Yeoman has done nothing but make my workflow much more complex and error-prone. Things just feel ... rickety. At the end of the day, I gave up and used Initializr [1] to start the app. Didn't even want to bother trying out Brunch [2], I was so frustrated.

I wanted to love it and I know there are folks out there who've had great luck with Yeoman; hopefully some of them can chime in to tell me what I'm missing.

[1] http://www.initializr.com/

[2] http://brunch.io

Pointless pedanticism, sorry:

  Ironically
*Coincidentally
I started using it about two weeks ago and was pretty disappointed, too. The 1.0 beta was broken for things like coffeescript, backbone, custom generators, etc, and they pulled the previous version of Yeoman from the site. I got it to work for what I was trying to do, but spent twice as much time on Yeoman as I did working on my app. Not unexpected given the pre 1.0 state of both Yeoman and the Node community at large, but I wish they'd left the previous (functional) version accessible.

Either way, excited to see this kind of community development. Great work on Yeoman, excited about its potential.

I was messing around with Yeoman this weekend. The real strength I think is in the library of generators and the tools that the generator has in addition to the grunt derived ones.

The default generator is a one page webapp and that makes everybody think that that is what yeoman is, but there are many more:

https://github.com/search?q=yeoman+generator&ref=cmdform

65 repos there

Stupid question but what kinds of projects are people using Yeoman & Brunch etc for? I've been getting into lots of frontend MV* recently; a mix of stuff that I put in the Rails asset pipeline at work, and fun hacks on the weekend which I tend to use Brunch or Yeoman for.

Are people using Yeoman apps in production? How does it work deploying them & handling load etc etc? I'm assuming that Yeoman is more useful than just toy projects?