rangle / rangle-starter

48 stars 23 forks source link

Decouple example apps from starters? #152

Closed SethDavenport closed 7 years ago

SethDavenport commented 8 years ago

These starters have two purposes:

1) to give our projects a toolchain setup, and 2) to serve as architectural examples.

However recent experience suggests that 2 is interfering with 1 somewhat. It would be nice to separate the two concerns.

How do we do this without going nuts trying to keep 10 things up-to-date?

SethDavenport commented 8 years ago

One suggestion would be to keep two versions of the sample app: NG2+Typescript and React+Babel (down from four), put them in their own repos, and not worry too much about keeping the up to date with package updates.

The starter projects would then just be a hello world page and toolchain stuff, but kept aggressively up-to-date.

Projects get their starter kits, and when people want code examples we can just point them to the two sample apps above.

SethDavenport commented 8 years ago

Another proposal is to make the rangle-starter CLI strip out the sample app when you use it to clone.

SethDavenport commented 8 years ago

Discussion welcome.

RSNara commented 8 years ago

Another proposal is to make the rangle-starter CLI strip out the sample app when you use it to clone.

Not too sure if this is the easiest solution. We already have a handful of starters, all of which don't look to be configured in exactly the same fashion. Adding all that logic to strip out the sample app into the cli seems like it could be a pain to implement and maintain. Also, it'd introduce coupling between the starters and the rangle-starter cli, which would make upgrading the starters with their examples more difficult.

One suggestion would be to keep two versions of the sample app: NG2+Typescript and React+Babel (down from four), put them in their own repos, and not worry too much about keeping the up to date with package updates.

Speaking from personal experience, I think this might be a good idea. Whenever I start a new project by cloning the starters, I almost always do it because I need to toolchain, not the examples. It's often the case that I end up deleting everything and migrating only the things I need form the starter. I think the experience is not unlike buying a new computer and having to manually uninstall the copious amount of bloatware that come with it.

It seems to me like the example code provides more value in repository that serves as a reference for good practices and designs. That way, maintaining the starters becomes easy for us, and using the starters may become easier for rangle developers that eventually use them. But yeah, I've largely just used the starters for experimentation, side projects, and only one Rangle project. It would actually be pretty cool to see what existing teams (who started their projects with the starter) think about this.

danielmhair commented 8 years ago

I vote for the latter:

One suggestion would be to keep two versions of the sample app: NG2+Typescript and React+Babel (down from four), put them in their own repos, and not worry too much about keeping the up to date with package updates.

SethDavenport commented 8 years ago

Right now we have 6 starter repos:

Each one (except Koa) contains a starter app. Splitting them as-is would result in 11 repos, which I don't have time to maintain :)

Ng2 + TS only exists because some people found the Ng2 + TS + Redux starter complicated as a starter.

Here's what I propose: we split the example apps and the starters up as follows:

\ Starters ** Ng1 + TS Ng2 + TS React + TS React + ES6 Koa

The starters would be kept up to date with toolchain fixes.

\ Sample Apps ** Redux app with Ng2 + TS Redux app with React + ES6 Redux app with Ng1 + TS

The sample apps would be more static; probably I'd turn off greenkeeper for them and simply use them as reference material for internal and external training.

This only adds 2 new repos to the total number (8), of which 5 would be maintained aggressively.

Given that ng1 is not a huge priority right now we could probably just deprecate, it if necessary.

Thoughts?

e-schultz commented 8 years ago

Overall I think this is a good idea, looking at projects that have used the starter - the first commits are always renaming things and/or dropping things. Getting them to be a bit more minimal/barebones would be good.

SethDavenport commented 8 years ago

@e-schultz let's not have 'starter' in the example repos

also I don't think we need two angular2 examples (with and without redux). Let's just have the redux one.

e-schultz commented 8 years ago

ok, so

SethDavenport commented 8 years ago

Per the support squad meeting today, it sounds like we're in agreement about the starters being decoupled from the examples.

Here's the wishlist we came up with for what a starter should do:

With this in mind we would need the following starters for now:

SethDavenport commented 8 years ago

We should make a similar wishlist for example repos. Ideally we'd want a minimal set that covers the following:

Note that I'm not suggesting an example for each of these!

We can probably come up with two or three examples that cover all the bases.

Also note that our TS-React starter is decently popular, probably because few other people are doing it. So even if we decide to not maintain it any more we should probably keep it around somewhere.

SethDavenport commented 8 years ago

Where possible we should rename existing repos to be the examples and spin up new ones for the starters

So links that have been sent out/stars for the more popular examples are retained.

Examples:

Currently I'm thinking the following set of examples will cover the bases above. Where possible we should rename existing starters into the new examples because there are a lot of links to them in the wild (blog posts, gitter, slides, etc.)

Official Examples (maintained as we come up with better ideas; keeping deps up to date less important)

react-redux-starter: rename to react-redux-example

angular2-redux-starter: rename to angular2-redux-example

Best-effort, but unofficial examples (kept around due to community interest but no longer actively maintained)

typescript-redux-starter: rename to typescript-react-redux-example

angular-redux-starter: rename to angular1-redux-example

Gutted, toolchain only starters

Aggressively maintained but no app code beyond a 'hello world' page.

@josepot @e-schultz does this sound good? If so I think @josepot has some cycles.

SethDavenport commented 8 years ago

Retired angular2-redux-starter as above. The old repo is still available as https://github.com/rangle/angular2-redux-example - there are a few cleanup items on that repos issues page for anyone who's interested.

bennett000 commented 8 years ago

@watrool was able to setup the dedicated react starter at: https://github.com/rangle/react-starter

It still contains Redux and the Router and the rest of the tool chain as well as the utils, but no app code.

bennett000 commented 8 years ago

react-redux-starter renamed to react-redux-example. The old link still works :)

React/TS also updated:

SethDavenport commented 7 years ago

A few more action items for this story:

troyt-42 commented 7 years ago

@SethDavenport @bennett000 Can we close this issue? It seems all the starters have been separated from examples.

SethDavenport commented 7 years ago

@bennett000 @watrool looks like angular-redux-starter still needs to be split.

SethDavenport commented 7 years ago

Consensus is that it makes sense to keep the angular1 example as is for now.