Angular 2 released a third release candidate this week, which means that we are getting very close to a final release. So the question(s) for today’s Slack chat are:
todd: Let’s begin the flame war!
ed: One reason I could see Angular 2 taking off is because it can use different template engines for HTML, XML, etc. – as we’ve seen with NativeScript.
cody: I’d like to believe that ng1 was right time, right solution, right community. With ng2, the timing has been horrible, the solution is narrow, and parts of the community have moved on. I’m wondering why they think they can repeat right time, right solution, right community?
todd: Yeah – there’s a lot of that “magic” lost from what made Angular 1.x super popular. Front-end devs could hack together something with little JS knowledge, similarly backend devs can use their MVC pattern knowledge to move across to Angular – so it had that special mix of the right time/community etc. that made it grow
tj: I’ll agree that ng2 will have a hard time reaching ng1 levels for those reasons, but I don’t think ng2 necessarily needs to reach ng1 levels to “take off” though.
cody: Can we agree that ng2 targets a new community? Which is fine.
todd: Definitely, not sure on React statistics community wise (compared w/Angular), but that’s certainly taken off.
cody: But what can we say about this new community?
tj: It’s a venn diagram. Some overlap.
todd: 100% agree
cody: Really, what is the overlap?
tj: Personally I think Angular 2 is an ideal fit for big companies building big apps.
cody: Ok. Which it wasn’t before, right?
ed: ng2 is a more complete architectural solution than some of the competition. Not all developers have the experience, or luxury, to architect all of the moving parts in an application. This is where ng1 was a big help.
tj:I think that’s where the overlap is. ng1 could definitely be used for those types of apps, but ng1 was also great at quick little forms on a brochure site.
todd: I think it was a right choice before but I think a lot of us misunderstood Angular 1.x, which is why we have several flavors of apps:
There was no “direction” which allowed freedom. People like freedom for hacking about with.
tj: Lots of people do lots of things with ng1, whether they should or not.
todd: Exactly, yeah. Whereas ng2 is the straight and narrow – Very focused tooling, very focused structure. Not that I’m saying that’s a bad thing! 😄
tj: Tooling is the key word there. As someone that spend five years building big Java apps I can tell you that those types of companies LOVE them some tooling.
cody: So, ng2 has gotten narrow and very specific in who it will help and who’d use it, right?
tj: I don’t think that community is narrow. The Java and .NET worlds are enormous.
todd: Angular 1.x I believe you can use for pretty much anything; Angular 2 you want scale. I wouldn’t build a production ready todo app in Angular 2. At that point you’re killing a fly with a rocket launcher.
cody: Well, I’m confused. Is it different than ng1 and for a different community? Or is it not?
tj: I agree with Todd. I think the overlap is with ng1 you could build about anything. ng2 is more focused on bigger apps, and is overkill for less complex applications.
todd: I think for a lot of the Angular community – we came to it and it changed the way we think/build apps (knockout/jquery style before or whatever). And we liked that style of building. There are a lot of people that don’t like Angular 2 – and that’s fine, you don’t have to like your favorite artists new album – audiences change, developers change, development techniques change.
ed: To TJ’s point, shops that need structure (think government, banking, etc.) need those Java/.NET type of platforms. Stability, and support are a necessity for these scenarios. You can’t just grab a dozen half baked micro frameworks that offer zero support and make an application in that environment.
todd: Exactly, those guys are unlikely to whip up a quick React + Redux app.
tj: Exactly Ed. Having Google and Microsoft (via TypeScript) behind the project is huge for those environments.
Marc was almost ready to implement his “hello world” React app pic.twitter.com/ptdg4yteF1
— Thomas Fuchs (@thomasfuchs) March 12, 2016
ed: Yes. They need that reassurance that the tooling isn’t going to be the next “left-pad” incident.
cody: I think my point would be this: The path from ng1 to ng2 isn’t straight – at all. The community variations. The timelines. The product variations. All this will make it difficult to bring the community who made it a success on the wagon. Not that it can’t happen. I just believe they have made it very difficult for themselves. But, none of that matters if the solution is so good, people will walk on nails to get it. So, is it that good? That is the question. Is the new and shiny thing, shiny enough?
todd: Reassurance has been hard, with all the rewrites/changes in Angular 2.
ed: Breaking changes is one thing Todd, I’m talking unsupported code.
tj: To Cody’s point, developers are smart. “Is it good?” is indeed the question. I go back and forth on that.
cody: I’d say the question is, “Is it good enough to defeat what has happened and where it is headed?”
todd: First, what do you define as “good enough”? As good/exciting as Angular 1.x was? Is it “the solution”?
tj: Does it elegantly solve a problem that developers have better than other frameworks? That would be how I would phrase the question. Because that’s really what decides what tool that developers will ultimately choose.
cody: Or is the solution strong enough to hide the difficulties and challenges we have been talking about? It could be the best solution ever, but everything around it could have gone wrong.
todd: It solves “modern” problems, that were found in Angular 1.x (
$digest cycles were slow, no more dirty-checking, the two-way data binding mess and the ability to server-side render).
tj: I’ve been building with ng2 for 3–4 months now and I go back and forth on this. I’ll start by saying that I have come around on TypeScript, as have a lot of other people in the JS community.
I’m sold on TypeScript. Would like to move as many of my projects to it as I can, not sure about the Node workflow though.
— Tom Dale (@tomdale) January 20, 2016
todd: The hardest part hasn’t been deciding whether it’s good or not; it’s the ever-changing landscape that happened a while back. I know a lot of Angular bloggers/devs that either moved to React or stopped even bothering with Angular 2 and focused on Angular 1.x. For them, it leaves a bitter taste.
cody: Top down buy in always scares me. If you are Tom Dale, and build something like Ember, I can see this. But, he is not reaching the wide and broad community (like ng1) with that post IMO.
tj: Yeah. TypeScript, like Angular 2, works best in big code codebases, like Ember for instance.
ed: I feel that TypeScript really elevates JS (and ng2) to a higher standard. Again, typed languages are better for corporate/government projects.
todd: Indeed, which loops us back to Cody’s mention on who’s the audience here?
tj: Heh, I was just typing that 🙂
cody: I’d like to point out again, that TypeScript is not good for the community that made Angular a thing, but for an eventual community that is yet unproven. That is what I hear, we changed it, and it’s better now for a different community.
ed: I think that’s an assumption, TypeScript is good for the community, they just don’t know it yet. 😉
tj: Cody, I agree but I again will say that I think there’s overlap. I’m a JS developer but I could see myself using TypeScript in certain projects. I’m a JS developer and I could also certainly see myself using ng2 in certain projects.
ed: When talking to Brad Green on the podcast, he explains how TypeScript helped identify bugs in the codebase, bugs that unit testing missed.
cody: This is why I doubt it will succeed. Even that attitude of you should want TypeScript because it is better will destroy the ng1 community. Mostly because it is arrogant. My proof – the docs. And the obvious difficulty people are having getting going.
tj: Cody, are you saying TypeScript is assumed with ng2? (If so, I agree.)
cody: I’d say TypeScript is pragmatically required.
todd: Many people don’t like “magic”, and some of it feels too magical if you don’t know how to write the “raw” code underneath TypeScript (minus types – I’m talking decorators, etc.). TypeScript is assumed because it looks horrible in ES5/6.
tj: Well, I think ng1 developers are ok with magic. 😉
cody: I think I should make it clear – this all comes down to perceptions. And perceptions around timing, community, etc. Not quality. If quality was a factor ng1 would have never been popular.
tj: The Angular CLI helps with the getting started experience considerably. Remember that other frameworks — React, Ember, etc — aren’t exactly trivial to get started with either.
Cody: If quality was a factor ng1 wouldn’t have been as popular.
Cody, I disagree.
ed: If quality was a factor, none of us would be on this topic. The web is one hot mess of bubble gum and band-aids.
todd: This brings another small topic of TypeScript being a superset of ES6. Unlike the React community, much of the Angular community is still in the ES5 land. ES6 is new in Angular community IMO – and that’s a hurdle in itself.
cody: TJ, I’m not sure what there is to disagree, if they had to burn ng1 down and start over, they had issue with quality at some level. But, I don’t care about quality (in this narrative), that is point and neither do developers
todd: They rewrote it because architectural-ly it wouldn’t have been able to do what they wanted it to do – i.e. server-side/web workers and many other things.
tj: I think ng1 was very well optimized for fast and easy data binding. Did it scale great? Maybe not. But the millions of apps out there show that it solved the data binding problem well for a ton of people.
todd: Indeed. The barrier of entry was also extremely low. Include the angular.js, add a controller and boom you’re done. Developers spend days, kid you not, trying to even “hello world” Angular 2.
Cody: but, I don’t care about quality that is my point, and neither do developers
That’s quite the statement sir 🙂
cody: Well, at the level we are talking and who we are talking about I think it does matter – tools, documentation, easy start up, community, training, all things that shine while the solution itself can be a little rough.
ed: Exactly, I think that needed some context.
cody: I think the issue of Google being a product company is also hurting Angular. ng1 was not exactly planned success. With ng2 they are trying, but are they the correct organization for it? You know, to really help developers, to listen to developers. I do think, things like eating one’s own dog food is important.
todd: Which Facebook do extremely well. They even run alpha versions in production.
tj: I know if you ask Brad Green this question, which we have, he’ll give a super long list of projects within Google that use ng2.
cody: But honestly, what worries me most is success by ng1 was stumbled upon, assuming success with ng2 I think is a mistake. They will have to earn it.
todd: Yeah – you can’t force feed a community
cody: And they won’t earn it by being good enough quality wise. They will earn it by doing all the things around it right. Things I fear they don’t value. Mostly external developers and their problems. And mostly, the ng1 developer and his problems, pains, and perspective.
todd: What like?
cody: Well, standards seems to have slipped in ng2 from ng1 (html). The pragmatic forcing of TypeScript. The lack of communication. The lack of transparency about state of project. Change! Timelines. Fact that, really an internal Google app drives direction of ng2, not external developers needs… I could go on and on. My point, it could be the best solution ever, but all these things around it have to be dialed in too. If they’re ignored, I fear for real adoption.
tj: Keep in mind there are a lot of things that the ng2 team is doing very right. The docs on angular.io are top notch; the tutorials have a ton of depth. The Angular CLI has eased the getting started pains considerably.
cody: TJ, all I’ve seen in the community is complaining about the docs. The rate of change. TypeScript. The difficulty. Are you saying these things are baseless? Will a ng2 CLI save the day? Um, no.
todd: Agreed on the docs front, the docs are poor if you want ES5/ES6. Also, many of the docs are still incomplete. Plus all the confusion around deprecated APIs etc. A CLI won’t solve these problems – not at all. It addresses a pain point.
tj: I’m saying those complaints are about the rate of change in the framework, not in the docs themselves. As someone that has routinely referred to the docs for the last few months I’ve found them well written and helpful.
cody: I’d say, honestly, it is both. I’ve seen issue of change in the docs. And experienced them. But maybe it has calmed.
ed: There’s a lot of developers in the communities I’m involved in that like ng1 & ng2. I think TypeScript is a blessing in disguise for those who haven’t used a typed language before. Having used both, I understand the strengths of having that compiler there to keep things “right”. I also think that being able to plug in different templates is a huge feature which is yet to be realized.
cody: I fear the message, and the message is ng2 on all platforms. Now think about that. Do you fear React on all platforms? Nope. Because it is just the view layer. Loose coupling is a THING.
tj: Ok, so clearly we have opinions on the matter 🙂 Let’s wrap up because clearly we could talk all day. Closing arguments?
cody: Given what we set out to discuss I think it is easy to conclude that NG2 will be used. But it certainly won’t be used by the same community and at the same scale. That ship has sailed.
todd: The thing is, communities change, tastes change. A community isn’t a solid figure, people jump in and out all the time. The community I know that were betting on Angular 2 years ago, for some the ship’s sailed as you say, indeed.
ed: I fear relying too much on client-side code and forgetting that there’s real horsepower in the cloud/server. Remember that there’s a lot of developing countries with “low powered” devices that need to be able to access the web.
cody: Ed, um, drop everything and check out the size of NG2 in the client.
ed: Exactly Cody, ng2 included.
todd: One of Angular 2’s goals is mobile + performance – be it native or web.
To sum up – I’m super intrigued as to where things will go. The Angular community has always been a huge mix of front/backend developers and that’s what made it great and super powerful. Angular 2 is pretty future-focused: it’s big, powerful, complex and tough to learn. We won’t have the same community in 5 years time as we’ve had the last 5 years, and that’s okay. I can’t picture it being as big as Angular 1.x (even Angular 1.x is still growing!) – but it certainly has its place for the future.
tj: Ultimately I think Angular 2 will succeed because it’s a genuinely good solution for building large applications that will appeal to a large swatch of the development community. I’ve been building a handful of apps with ng2 for the last six months, and I’ve went from a skeptic to a big fan.
I don’t think ng2 is a good fit for everyone. There’s a lot more structure and things to learn, and it’s a framework that was clearly designed for complex apps rather than quick-and-dirty marketing sites. Because of that I think ng2 will (and has) scared off some of the ng1 community.
BUT. The structure that ng2 ships with is well suited for large companies that require the tooling that ng2’s structure makes possible. And those companies encompass millions and millions of developers. Angular 2 will succeed because it offers a compelling solution for building big apps (especially when used with NativeScript, of course 😉).
I’m just going to remember Cody’s quote:
Cody: I don’t care about quality
New Twitter bio right there. 🙂
cody: I like how you say all this, even as the thing you compliment is still changing.
lol, TJ, that is not out of context or anything is it 🙂
tj: Nope 🙂