yeoman / generator-angular

Yeoman generator for AngularJS
http://yeoman.io
5.73k stars 1.44k forks source link

Generator Roadmap #553

Open eddiemonge opened 10 years ago

eddiemonge commented 10 years ago

In an effort to be more transparent about the project, we are creating roadmaps for everything. This is the tentative roadmap for the Angular generator.

Priority 1

If you think there are other things that should be added to the roadmap, or have questions about any of these, please feel free to comment.

btford commented 10 years ago

:+1:

intellix commented 10 years ago

Add support for JS templates = something like html2js? I was looking at this earlier. Was wondering how to integrate it into the usemin process and it seems like it involves creating a custom "flow" which would merge the templates.js from html2js into the concatinated script generated from the usemin block files.

passy commented 10 years ago

Excellent! :+1:

@passy - from his phone On Jan 20, 2014 8:00 PM, "Eddie Monge" notifications@github.com wrote:

In an effort to be more transparent about the project, we are creating roadmaps for everything. This is the tenative roadmap for the Angular generator. Priority 1

  • Refactor all the tests to test everything, including all existing options
  • Make everything configurable. This will include a combination of flags, prompts and a configuration file (yo-rc.json)

Priority 2

  • Remove minsafe files
  • Consolidate all template files/folders into a central location
  • Add support for JS templates

Priority 3

  • Add support for TypeScript
  • Add support for Stylus, Less
  • Add support for Jade
  • Remove Bootstrap from the project (cause a lot of issues but is open for discussion/debate)

If you think there are other things that should be added to the roadmap, or have questions about any of these, please feel free to comment

— Reply to this email directly or view it on GitHubhttps://github.com/yeoman/generator-angular/issues/553 .

addyosmani commented 10 years ago

:+1: this looks sharp. Nice work putting this together @eddiemonge.

jjt commented 10 years ago

Bootstrap could be considered orthogonal to the generator, but I think it's better to leave it as the default option.

The Bootstrapped version makes gen-ng look like it's done a much better job than than the plain version, because it looks more like an actual website. I think that users who are new to gen-ng will be more impressed with the BS version and you'll have a higher adoption rate, while veteran users will (hopefully) know what they want and can choose to not install BS.

eddiemonge commented 10 years ago

@jjt The vanilla CSS version needs work. I updated the P3 with a better alternative

jjt commented 10 years ago

@eddiemonge Ah, nice! Was going to say that other frameworks would be a good addition, but didn't want to pile more on. As to a vanilla css look, including normalize.css, centering .content, and making the nav menu inline with no discs would go a long way.

programbo commented 10 years ago

I'd really like to see ui-router an an option. I'm know I'm not alone in preferring ui-router as my go-to over the default ngRouter. Also, I'll second that html2js request, and what ever became of that massive discussion about feature grouping (ngBoilerplate style) vs layer grouping?

diwa-zz commented 10 years ago

+1 for feature grouping

ahimta commented 10 years ago

+1 for jade or anything that makes writing HTML more developer friendly. I really don't like HTML syntax (writing opening and closing tag), I prefer HAML.

34r7h commented 10 years ago

Does "Support the project as a sub-generator for other projects" mean having the ability to generate sub-modules for larger projects, which are then thankfully separated by feature?

vincivince commented 10 years ago

+1 for Jade

vincivince commented 10 years ago

-> grunt-jade-i18n + grunt-html2js

ProLoser commented 10 years ago

Any thoughts on adding proper module structure? Creating controllers/services/directives into respective directories seems like it is encouraging a now-considered poorer practice.

eddiemonge commented 10 years ago

@programbo That could be explored. Would need the configuration done first as that would add exponential more complexity

@Ahimta I prefer Jade since its based off Haml but easier to use and pure JS

@irthos Possibly, I think. Not entirely sure about your question

@vdesbarres i18n most likely won't be a part of this. You can easily add that to your own project with something like angular-translate though. html2js also probably won't make it as I am leaning towards (and have been using) the grunt-angular-templates plugin for this functionality

@ProLoser Yup. Updated the milestone with a link to https://github.com/eddiemonge/generator-angular-api/ . Feel free to comment and post issues there until I get that functionality into the generator

34r7h commented 10 years ago

+1 currently i've created a /modules dir and inside each one a dir for a new module, each being a standalone generated app. a few smart grunt tweaks and all the subapps are sending their js from /dist to the main app. kinda klonky. wish the generator could be run again from the root directory and make a new sub.module if there's an app there. then the generator should register the module and inject it appropriately. tricky stuff, no doubt.

On Thu, Jan 30, 2014 at 3:14 PM, Dean Sofer notifications@github.comwrote:

Any thoughts on adding proper module structure? Creating controllers/services/directives into respective directories seems like it is encouraging a now-considered poorer practice.

Reply to this email directly or view it on GitHubhttps://github.com/yeoman/generator-angular/issues/553#issuecomment-33745539 .

ragingwind commented 10 years ago

:clap:

ProLoser commented 10 years ago

I would like to see a LESS option since you are already offering bootstrap. I also second the use of ui router, and while we're at it it would be cool if we prompt them about ui bootstrap if they request bootstrap. Alternatively, maybe we should start creating a ui sub-generator instead that is designed to go along with this one.

intellix commented 10 years ago

After seeing how Gulp is about streaming, I wouldn't mind seeing a Gulp version of this. I wanted to add html2js and with all of the temporary files and complexity of usemin creating it's own flow, I have no idea where to throw that into.

It would be good to say: these files I specify (templates): html2js + files found within index.html > concat > uglify

I've not played with it yet, but it looks and sounds good. I really do think the Gruntfile here is a beast.

jarrettch commented 10 years ago

+1 for adding ui-router.

Edit: I mentioned Protractor but apparently there's already a generator and instructions for using it here: http://www.codeorbits.com/blog/2014/01/26/angularjs-end-to-end-testing-with-protractor-easy-set-up-with-yeoman/

My mistake.

programbo commented 10 years ago

Protractor is great, and whilst it would be a convenience having it as the default e2e test runner, it's pretty easy to add to generator-angular projects after they have been created.

On 5 Feb 2014, at 6:18 pm, Jarrett Harris notifications@github.com wrote:

+1 for adding ui-router.

It seems the AngularJS team is moving towards Protractor for testing. Is adding this feasible over the next year?

Reply to this email directly or view it on GitHubhttps://github.com/yeoman/generator-angular/issues/553#issuecomment-34142856 .

bguiz commented 10 years ago

My vote to bumping protractor up to top priority group.

timelf123 commented 10 years ago

Thanks @eddiemonge ! Great work.

piotrwitek commented 10 years ago

+1 for typescript support, Great effort!

diwa-zz commented 10 years ago

+1 for typescript support.

Is this still the 2014 Q1 roadmap ?

eddiemonge commented 10 years ago

Yeah, Im a little behind schedule but trying to catch up.

tpluscode commented 10 years ago

+1 for submodules

yavorski commented 10 years ago

+1 for the module structure.

didlich commented 10 years ago

+1 for adding ui-router as option would be nice

gintsgints commented 10 years ago

I have made some beginings of ui-router option... can someone review?

https://github.com/gintsgints/generator-angular

cartogram commented 10 years ago

+1 for protractor

eddiemonge commented 10 years ago

The first three tasks of Priority 1 are coming along. Late but still chugging. A preview of a new feature for the generator: full configurability (not finished yet) https://www.youtube.com/watch?v=zy33uO1Qf9A

diwa-zz commented 10 years ago

Great to see this. Any rough timeline of when this will land ?

JamesRLamar commented 10 years ago

Looks great! Especially happy to see Protractor in there.

markthethomas commented 10 years ago

:+1:

23tux commented 10 years ago

+1 for Protractor

austinpray commented 10 years ago

Ui-router is essential. :+1: :beer:

ruud commented 10 years ago

+1 for Protractor

AnirbanKundu commented 10 years ago

+1 for protractor.

austinpray commented 10 years ago

"Support the project as a sub-generator for other projects (Angular full stack, MEAN stack, etc)."

I would be super interested in this. I usually run https://github.com/yeoman/generator-gulp-webapp then generator-angular on top of whatever generator-gulp-webapp spat out and manually clean up the mess. Very inelegant but it is still faster than manually doing everything.

kristianmandrup commented 10 years ago

+1 for ui-router + protractor

dancancro commented 10 years ago

Merge generator-angular with another generator project, preferably Cleverstack which, at last count, appears to be the richest. http://dancancro.com/comparison-of-angularjs-application-starters/

Cleverstack has the following benefits missing from generator-angular:

Modular app files organization Modularized Core Module manager Dedicated chatroom Testing with Protractor Continuous integration Code coverage reporting Server-side tests Read-eval-print-loop (Repl) Command-line interface Build tasks: ...... reload build file upon change ............ change asset references to prevent caching ...... advanced JS analysis ...... coffee files compiled to JS ...... uglification ...... remove unused CSS ...... generate build reports ...... generate docs Database migration/evolution system Generator options: ...... Choose client and/or server ...... Choose port numbers ...... Quick install? ...... Options for making subcomponents ...... Authorization as optional ...... Generate routes ...... Choose db: SQL or NoSQL ...... Clustered HTTP sessions Subgenerators: ...... subgeneration undo ...... config ...... crud-mock ...... modal window ...... model - client side ...... test - client side ...... FEATURE (a.k.a. module, entity) ...... back end ...... controller - server side ...... model - server side ...... route - server side ...... service - server side ...... test - server side Bells and whistles: ...... Background task runner ...... Form generation ...... Calendar ...... Data tables ...... Browser detection ...... Alert messaging service ...... Functionality modularization ...... Currency list ...... Timezone list ...... File Upload ...... Digital fingerprint ...... Chat ...... Shopping Cart ...... Country list ...... CSV processing ...... Documentation ...... E-Mail system ...... Survey ...... Amazon workflow Asynchronous module definition (AMD) Configurable response caching Source Maps Verify user registration by email Oauth Authorization: Role-based Authentication with Google services Serve status codes only as responses Accept nested, JSON parameters Add a mutex around requests Add timer header to requests Support for signed and encrypted cookies Serve URLs based on the route definitions Serve headers only Object-relational mapping Object-document mapping

generator-angular has the following benefits missing from Cleverstack:

Build configurations file(s) Build script: ...... run tasks in parallel to speed it up ............ replace 3rd party deps with CDN versions ............ fill in js tags by searching directories ............ fill in css tags by searching directories ...... add CSS vendor prefixes ...... SASS version of Twitter Bootstrap Generator option: Optional precompilers Subgenerators: ...... constant ...... decorator ...... route - client side ...... value ...... view or view partial Google Analytics Languages of Generated files: ...... Jade ...... Coffeescript ...... SASS Run server in debug mode

Let me know if I missed anything.

kristianmandrup commented 10 years ago

Better to merge generator-angular features into Cleverstack than the other way around. generator-angular should be kept simple and "clean". As noted:

"Angular-fullstack-generator 2.0 is due for imminent release"

No reason to make generator-angular into yet another full stack generator.

dancancro commented 10 years ago

Better to merge generator-angular features into Cleverstack than the other way around.

This is what I am suggesting. It would be easier.

generator-angular should be kept simple and "clean".

I don't understand your reasoning. Not offering a backend (being "clean") is a strange benefit in my mind. Some of the generators give you a choice to generate the front-end, the back-end, or both. So everybody's happy.

"Angular-fullstack-generator 2.0 is due for imminent release"

No reason to make generator-angular into yet another full stack generator.

My proposal is to reduce the number of generators by merging them. Most people do not want choices. They want excellence.

kristianmandrup commented 10 years ago

I agree that it's a mess with all these "half-baked" generators out there. However it is almost impossible to merge all the generators into a "one-size fits all generator" IMHO. Better to have separate projects for front-end, back-end and then a slim app generator. This is already in the cleverstack design/architecture as I understand it.

https://github.com/CleverStack/cleverstack-cli (app and CLI) https://github.com/CleverStack/angular-seed (front-end) https://github.com/CleverStack/node-seed (back-end)

So I would recommend patching these with features from generator-angular as you see fit.

angular-seed recommendations:

NodeJS seed

How tightly is the generated back-end coupled to the front-end?

This should be a discussion outside the issues thread of this project IMO. For sure we need better generators to get developers up and running and avoid too much maintenance, configuration, boilerplate overhead ;) Cheers!

dancancro commented 10 years ago

However it is almost impossible to merge all the generators into a "one-size fits all generator" IMHO.

If I understand correctly, the question is:

Should we continue to develop all of these generators?

and your logic is:

It is hard to combine everything -> therefore we should continue to develop all of these generators.

I think otherwise. I think

improving the best generator will yield a better generator than improving a lesser generator -> therefore we should spend energy on the best one and not the others

The thing is... generators are by definition, supposed to fit all. They are used to generate applications for everyone. This one is called generator-angular, not generator-angular-realtime-trade-processing or generator-angular-mobile-ecommerce. It is general. So are all of them. They are supposed to fit all, and they can. Until I made this comparison, nobody was able to see this clearly. Generators are just products and products are just collections of enumerable benefits that can be counted, weighted and used to determine a value. Thus a hard choice becomes an easy one. And if we can get people to work together, the hard choice will become a non choice - programming nirvana.

So I would recommend patching these with features from generator-angular as you see fit.

angular-seed recommendations:

replace angular-scenario (deprecated) with protractor for E2E replace angular-route with ui-router

I'm confused. Cleverstack already uses ui-router and generator-angular does not yet use Protractor. Yes, the other three items are provided by generator-angular and not Cleverstack.

who uses relational DBs these days? unless you have legacy systems?

WIth all due respect, you can't possibly be serious about this. SQL is used by millions. NoSQL and SQL have different benefits and meet different needs. The world needs both and supporting both is not only possible but has been done by both Cleverstack and jhipster.

How tightly is the generated back-end coupled to the front-end?

They shouldn't be at all, and since you can choose what to generate, I gather that the two are not coupled.

This should be a discussion outside the issues thread of this project IMO.

I think this is the right place because in this thread people are talking about duplicating work that has already been done in other generators. The alternative would be to stop working on this generator and instead spend that energy improving the one that already has the most benefits. But I'm curious - is Stackoverflow the official discussion place for this project?

I'm open to ideas but so far nobody has given me a good reason why we need more than one of these things.

kristianmandrup commented 10 years ago

I think it would be better to hear what other developers think. I believe that most other MVC frameworks have discussed these issues a lot, such as Django, Rails etc. and never quite resolved it with one standard generator to rule them all...

I had the same idea when I got introduces to Rails, but I later came to learn that it is much harder than you think and that the technologies change to fast that such an effort quickly becomes obsolete and almost impossible to keep sufficiently up to date etc. Of course I (and most other developers) would love if it could become reality instead of having to patch together all these fragments... it is developer hell :P About time that we progress from this patch-work development process.

dancancro commented 10 years ago

I honestly don't think anyone has ever analyzed things this way before. It takes a lot of time. So maybe that's why. I'd love to know what other groups have concluded. The walls between Rails, Django and AngularJS are higher than that between generator-angular and Cleverstack. We really need to break these walls down.

If anybody is in Berlin, on Wednesday I'll be presenting this idea to the local AngularJS meetup group. It should be fun!

craigbeck commented 10 years ago

+1 to adding support for ui-router. Also, if you do choose to deselect the angular-route.js option the app generated is broken so probably shouldn't be an option at all.

(edit) deselecting angular-route.js no longer produces broken app

eddiemonge commented 10 years ago

@craigbeck broken how? please file an issue about it