Will Angular 2 Take Off?

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:

  • Do you expect Angular 2 adoption to take off?
  • Will it achieve the level of adoption that Angular 1 had? Why or why not?
  • How do you see adoption happening among existing users? Quickly? Slowly? Or not at all?

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:

  • Event driven ones;
  • Directive driven ones
  • Super messy ones 😛

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.

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.

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 🙂

todd: jQuery devs turned JavaScript developers (the majority) won’t have a clue what to do with types. It’s a different paradigm of programming.

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: Remember that there are an ENORMOUS number of Java/C#/etc developers that have been trying to force types into JavaScript for literally decades. TypeScript seems to be the first implementation that’s actually taken off.

todd: For sure, and types will land in native JavaScript at some point.

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.

todd: I hear you – though one thing they could’ve done to avoid this is improving the Angular docs to cater for the JavaScript folks (ES5) and even ES6.

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.

ed:

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 🙂

Related Resources:

Comments

  • Interesting stuff!

  • sharpmachine

    Flip. I used NG1 for awhile and have been working in NG 2 for 4 months or so. IMO NG2 is waaaay easier to grok and write. When I go look back at my NG1 code it’s ugly compared to NG2. And Typescript is a Godsend. It makes you a better dev IMO.

    • Łukasz Pawełczak

      I have same feelings. Every time I’m force to work on older ng1 projects, I feel like I’ve moved back to the cave ages.

  • Thomas Burleson

    Angular Material 1.x has not been deprecated. The support for *some* of our issues have been deprecated so the Material teams can focus on *both* Angular Material 1 and Angular Material 2. Community developers have been encouraged to submit focused PRs for any deprecated issues and the core team will review those for ‘quick merging’.

    Many developers will want to use the amazing Angular 2 tech platform immediately. And for new product implementations using Angular 2, the UI framework of-choice will be Angular Material 2. Other teams will continue to use the Angular 1 framework for existing products… and Angular Material 1 will remain an important part of their solution set.

    Instead of shrinking, our Angular team(s) have actually grown since the v1.0.0 release. We have not changed our commitment to support Angular Material 1.x or the pending 2.x releases. And I feel compelled to state again that “Angular Material 1.x has *not* been deprecated”… it is a live, growing, maturing UI framework ideal for Angular 1 applications.

    • Thomas, thanks for this – I also replied to your email as I think my comment was misinterpreted. We’ve just removed that bit to avoid confusion 🙂

  • Skattabrain

    Thanks for the frank discussion guys.

    Angular 2 is still a bitter pill for me considering the pace of the past couple years, a busy life outside code and the 1.x style guides which are still rather new (Todd’s recent updated guide for example).

    I can’t see companies rewriting their apps from 1.x to 2… I don’t see how practical that even is to an enterprise watching the bottom line. New code… go for it.

    Here’s my problem with jumping to React… with ng1, I get the full framework (minus UI-Router)… with React you have to know what the tool of the moment for everything is. Call me crazy… I want the kitchen sink!

    • Skattabrain

      Another thing, I rather LOVE the state of my 1.x apps… thanks to folks like John Papa and Todd, they are clean… other devs can jump in and Grok it… performance is great (at least for my needs).

      • Thanks for the kind words man! 🙂 great to hear your comments.

  • JP

    I actually love Angular 2 so far. What always annoyed me about Angular 1 was all of its quirks (digest cycles and two-way data binding in particular, as mentioned above). I also felt like Angular 1 usually gave me unhelpful error messages. Angular 2 certainly has a much steeper initial learning curve (TypeScript and Rx.js, neither of which I had ever used before). However, the few quirks that I’ve found in Angular 2 so far are either very minor or actually end up making sense. After the initial steep learning curve, I’m actually finding it significantly easier and quicker to build things in Angular 2 than in Angular 1.

    That being said, the breaking changes throughout the release candidates is a tad annoying.

  • Emmanuel Nyachoke

    I can’t really understand the frustration about Typescript people should really give it a go. For somebody who wrote his first program in Java I feel much better now I can’t speak for people who have wrote JS all their lives. Am currently in team that is using ng1 in a relatively big project with some large and complex dynamic forms which means we have felt the real blunt of the flaws in ng1 and if ng2 were to deliver half of what it promises we are rewriting our code and we shall not miss ng1. Personally I have been working with ng2 for a month now and I don’t thing getting started is really that difficult compared to something like react. I took a week to get a simple react app running and a few ours setting up the tour of heros. One thing that I really like about ng2 is that it has a few moving parts it is all components and services which means lesser confusion,no controllers,directives, controllers in directives ,should I uses this or $scope multiple ways of doing DI. All in all I know moving from ng1 is hard but for anybody starting a new project now give ng2 a shot.

  • Łukasz Pawełczak

    I don’t see why complexity of typescript/ng2 is a problem. For people (like me), that are far past initial learning curve and wants to work on big commercial projects, ng2 & typescript is the best thing. From my point of view, why should I care about casual programmers and theirs problems? I feel it’s the similar issue as java & spring vs php & any php framework. So ng2 & typescript is the new java/spring for frontend development.

  • It needs verification but I remember reading writing vanilla ES6 with Angular2 is the way to go.

  • Robert Ferentz

    Interesting points made by all. I very much agree about the time it takes to get started with NG2 (even with the cli) as opposed to ng1, however, I (personally) feel that once you get that out of the way, ng2 becomes much nicer to work with.
    But, I’ve only done minor stuff with ng2, so not sure if my opinion should matter 😛

  • Sean

    like it or not, ng2 will win… and once and for all will will bring the web together… coupled with support from Google and Microsoft, it will dominate and win… on a personal note, I agree it has a bit of learning curve, but hey smooth oceans don’t make for good sailers. its awesome and provides a complete framework.

    learn it, you will love it!!!!

    checkout https://github.com/born2net/ng2Boilerplate

    ng2 rocks

    Sean

  • Great discussion and well thought points as well.
    Angular 2 indeed seems to be a rather large face lift from version 1. With that, it’s important to mention that a nice and well thought work is being done by the angular 1.x team to make transition to angular 2 easier or at least, somehow, make ng1 apps code be better designed following ng2 concepts using life cycle hooks, the new uni-direction “<" data binding, the "component" function and much more. Also, Typescript does add a very nice added value once the burden is overcome.

    From my experience since the beta.40 version up until now, ng2 is fun to work with, feels like there a pretty straight style guide for how to approach components design.
    All in all, I think that Angular2 has already "took off" – as for today, there's a wide community around it and a rather new audience as well.
    * I've been playing with my open source project Echoes Player (http://github.com/orizens/echoes-ng2) to experiment with ng2

  • Lee Delarm

    I feel this conversation has many great technical points, but fails to tackle the issue of adoption through social means, which we as programmers often overlook. How many projects are out there in Angular right now? How many managers will simply point their team at Angular 2? How do people really FEEL about moving from 1 to 2, or learning 2 in the first place? How many employers are looking for Angular 2? And how many project/team leads will simply want to jump to the next iteration?

    Community is going to affect this movement more than technical aspects, because as this conversation showed, the tech aspects are going to be accepted by the community at large regardless.

    It’s the same sort of question you might pose, why do people still program in Java when there are so many other languages? It often comes down to personal, rather than technical preference.

  • Jonathyn Tellez

    As someone who builds small to medium sized apps I’ve found Angular 2 to be awesome. And I often use Angular CLI just to wire frame prototypes. In other words, NG2 works good for small projects as well in my experience. I’m not interested in trying to convince people to like TypeScript but for me, with many years of experience in typed languages, it’s been great. Will Angular 2 be as popular as Angular 1, who knows? Lots of people make compelling cases for why that will be a challenge. I just hope it’s popular enough to keep being maintained and improved. And I’m looking forward to doing next mobile project in NativeScript too!

  • My reservations regarding Angular2 is related to the credibility of trust Google has after the recent rewrite of Firebase. For me it is a major mistake, a shoot in the foot and it really affects the global vision of their dev products. How I can trust Google they often overestimate the complexity which the average developer is willing to swallow? But getting Google out of the context, Angular2 is a must-try at least for academical purposes.

  • TerraT

    It will appeal to the non-ui focused developers who struggle with JS. For the JS developer it just breaks our workflow, we spend 99% of the time in the browser tweaking and refining what we are doing. The idea of continually jumping back to TypeScript and trying to fix the output by tweaking the typed code is just a hole for productivity and continuity. We use scope and closure to achieve functional acrobatics, being non type safe allows for a whole range of solutions that work really well in a browser. Basically Angular2 is a JS library for non JS developers, I really don’t see it having much of a market after the first hurrah dies down. I think someone will pick up support for Angular 1.x and it will out live 2…

  • TerraT

    Additional… Anyone here currently using Angular 2 in commercial projects have no place talking about it’s suitability for big systems while they are engaged in implementing a RC in production code. These are the spearhead fan boys with no commercial sense, we will have a better idea of adoption in a years time when it settles down and becomes a viable choice for enterprise systems.

  • Manuel Ro

    From the perspective of a previous user of Angular 1.x, and a current enthusiast of Angular 2, I have to say that the latter has improved a lot regarding architecture, and from my personal opinion, I think it is even easier to use. But again, I’ve seen Angular 1.x, I’ve sandboxed many apps and know the core concepts quite well, I wonder if it’s just an illusory feeling about the framework being easier to use or it’s because I’m used to the previous Angular 1.x concepts that I find the “new” concepts easier to understand. I’m also wondering what new developers may think, would it be harder for them or will they find it easy to assimilate the learning curve too.

  • Rick O’Shea

    Unfortunately that discussion was rife with grossly inaccurate statements and assumptions so readers should maybe stop (reading) when that fact becomes clear. Consider that the first release is radically changed from RC3 (the subject of the discussion) and that in angular-cli you have an integrated build tool that is a very impressive start. NG2 is an excellent choice for applications of any size. Aside from subjective opinion I’m not sure there was a single accurate observation in that discussion.