There has been quite a bit of dialogue around the proposed changes that AngularJS 2.0 is going to introduce and some of it is pretty heavily covered in tones of hysteria. I completely understand how this happened, given the sensational way that these changes were presented in ngEurope by the AngularJS core team without some additional context to balance it out. With that said, I want to take an opportunity to share a few things that have helped me keep a level head while navigating through the AngularJS 2.0 echo chamber.
1. We are all in this together.
This is the single most important point and I cannot stress it enough. The AngularJS team is entirely approachable and influenceable by the community. This means that we each have an active role to play in shaping the future of AngularJS 2.0 and we should banish the thought that AngularJS is something that is handed to us from on high. We are all on the same team and if we need to build something like a migration path from AngularJS 1.0 to AngularJS 2.0, we can do it together. Be participants, not recipients!
2. The AngularJS team is genuinely trying to do the right thing.
Creating anything non-trivial is really hard! We only have to look as far as JavaScript to see that mistakes can and will be made and eventually improved upon. When we accept that the AngularJS team is genuinely trying to do the very best they can, it just deflates the evil undertones that some of the AngularJS 2.0 rhetoric has taken. When Misko Hevery got up on front of 700+ people and personally apologized for some of the design decisions he made in AngularJS 1.0 and then went on to explain how he thought he could make them better, that reinforced the commitment to doing the right thing and not destroying our lives. I can accept that we will have wildly varying opinions about what the “right thing” is, but we should at least agree right now that we are trying to move towards the same goal.
3. The AngularJS team does not owe me anything.
AngularJS has opened up some incredible career opportunities for me over the last couple years and changed my life in ways that I could not imagine. I have had the privilege of making hundreds of new friends, seeing new places, learning how to do incredible things and it has come with a monetary cost of absolutely nothing. I appreciate all of the work that the AngularJS team has put into creating an excellent framework; but never for a second have I thought that they owe said framework to me. If you are making money using open source software, stop and reflect on what you are getting versus what you have put in. I guarantee that in almost every case the scales are heavily tipped to the receiving side and not the giving side. This is also why I make it a point to say only positive things about other frameworks and projects. Certain aspects of the framework may not resonate with me, but I take my hat off and salute you for your time and sacrifice to creating something meaningful.
4. We have to embrace forward-moving technology.
Let’s just be honest with ourselves. Legacy browsers hinder progress and do absolutely nothing to improve our lives. We have to make hard decisions to embrace new and emerging technologies so that we get languages and tools that empower us to build better things for society as a whole. Technology solves problems. AngularJS 2.0 on the surface appears radical because it is entirely forward thinking. That should be applauded, not derided.
One of the best books I have ever read on the subject of technology is Zero to One: Notes on Startups, or How to Build the Future by Peter Thiel. I cannot recommend it enough.
5. AngularJS IS open source.
And though we should embrace the future, we still have to live in some very real and present constraints. This is why the AngularJS team truly believes in open source, and with that comes the opportunity to take ownership of any part that comes up short and fix it. Not only is the framework open, but there is a complete openness in plans. This gives us plenty of runway to see what is coming down the road and make good decisions. I would also like to point out that it is not entirely unreasonable for AngularJS 2.0 features to be back-ported to AngularJS 1.3. I have had the privilege of talking to Rob Eisenberg about his work with the new router and this is something into which the team is putting a lot of cycles. Again, let us be participants and not recipients.
6. Evolution has happened before.
This entire scenario has a distinct deja-vu quality to it as I have seen almost this exact scenario play out when ActionScript 2.0 was introduced. ActionScript 1.0 was based on ES3 and almost identical to JavaScript as we know it now. Then ActionScript 2.0 came along and introduced classes, types, etc. – and pandemonium ensued! AS 2.0 was heavily criticized for being hard to learn and entirely different; but do you know what the net result was? It was a much better language.
7. The ideas behind AtScript have already been proven.
The most interesting aspect of sitting in the keynote where AtScript was introduced as that none of it seemed new to me. The ideas behind AtScript such as typing and annotations have been around and proven for years on the Flash Platform. I have personally worked on enterprise applications that have generated 100s of millions of dollars in annual revenue using a dialect almost identical to what AtScript is proposing.
8. There is nothing wrong with extending a language.
I would also like to point out that a large amount of AtScript is entirely optional. We do not have to use typing and we do not have to use annotations. We can write it entirely as ES6 and call it a day. With that said, there is nothing wrong with extending a language to give us more of what we need and want. To take offense to this would mean throwing out CoffeeScript, Less, Sass, etc., and I think we can agree that people have gotten a lot of mileage out of these tools. If AtScript is an extension of JavaScript that helps me do my job better, then I embrace that.
9. It is counter-productive to form permanent opinions about things in transition.
It always amazes me when I go to Amazon and see ratings for a book or movie that isn’t even out yet. How is that possible!? How does that person really know that they like or dislike that book? At this exact point and time, I do not have any firm impressions of AngularJS 2.0 because quite simply, I have not written any AngularJS 2.0 yet. How many people have? How can any of us really truly know what we think of AngularJS 2.0 until it is out in the wild and we have written something with it? This brings me to my next point…
10. Don’t miss the opportunity to provide massive value to the community.
If we do not know exactly what AngularJS 2.0 is going to look or feel like, what can we do? We can get involved! We have the opportunity to take ownership in the framework and help guide its creation so that it provides the maximum amount of value for the web community as a whole. If you have a really great idea of how to make AngularJS 2.0 better then please let us know. We are in this together and genuinely committed to making a world-class framework that enables people to build better things faster.
In Closing
AngularJS is so much more than a code base. I have had the opportunity to attend ngConf 2014 and ngEurope 2014 and I met hundreds of intelligent, passionate people who were excited to build amazing things. I have made friends that I am quite close with today. I met people who have had their entire quality of life changed because of AngularJS. Families and loved ones are the indirect beneficiaries of the work that everyone has put into this amazing framework. And because AngularJS is so much more than a code base to me, I believe we owe it to ourselves to stay professional and positive.
Some of the points I have made in this article are almost direct quotes from conversations I have had with Brad Green about AngularJS 2.0. I appreciate his thoughtful answers and even admitting that we could have engaged the community better. I am excited about the future and I hope that we can get there in the classiest way possible. With that said, we are listening.
Huge thanks to my BFF Jeff Whelpley for providing thoughtful feedback and suggestions on this post.
but srsly, no contrllerz?!?
I admit that I was more angry at first but decided to settle down and understand a lot of the points you bring up. Thank you for doing so.
For my team, we decided that none of our new applications will be written in Angular until 2.0 comes out. We are in the process of building a new infrastructure and will be doing so with a lot of Vanilla js and lightweight libraries and frameworks mixed in where appropriate.
Great article about staying positive and contributing to help a movement not hinder it before you even give it a chance.
Thanks for the shout out, Lukas.
Connor, the concept of what a controller does will still be there, but it is just part of a generic component. Take some time to read about Web Components (http://webcomponents.org/) and it will start to make a lot more sense as to why they are doing this.
Kyle, I used to work at Wells Fargo where we weren’t allowed to refactor 20 year old code, much less stuff we just wrote last year. So, I totally understand the instinct that if someone says a new version is coming out, then I should just wait until that version is out. The thing that is very different about now vs the past, however, is that web development is in the process of going through a series of massive changes. By the time ES7 comes out in a couple years, the way everyone builds for the web will be very different than how we build today. I would argue that no matter what you do today, you ARE going to have to make massive changes in 1 – 2 year, regardless of whether you are building on Angular 1.3 or vanilla JS or something completely different.
Here’s the way I would look at it. First, really understand where the entire web is moving right now and try to envision how things will be in 2 years. Now, given that, what is your best strategy for today to prepare for that? Working on Angular 1.3 doesn’t prevent you from building for the future today AND I think it will become clearer over time that you can modify your 1.3 app so that it is more aligned with the 2.0 direction and the migration path will not be as painful.
I feel this is not about not embracing forward-moving technology, that’s why I’m using AngularJS in the first place, it’s more about spending a lot of time (and money at the end of the day) that I don’t have to re-learn a tool that I was just starting to dominate. Many of us would feel more comfortable by learning small pieces at a time with each update.
Let’s say we all support this and jump into the AngularJS 2.0 bandwagon. We develop our products based on it. Then what? We’re still in risk of having to spend real money (in form of time) to re-write our products ’cause the AngularJS team is still not satisfied with what they did with AngularJS 2.0? This is not evolution but re-invention.
Let’s not forget, there are frameworks who have embraced forward-moving technology in evolutionary steps, I mean AngularJS 1.3.X isn’t that bad that there’s an urgent need of re-doing the whole thing before losing any more adopters. Of course, there are always room for improvement and a whole lot of new things to try (specially nowadays), but that doesn’t mean you have to throw everything out the window.
Why not keep upgrading the 1.3.X branch (not just fixing small bugs) as well as start developing the proposed 2.0 as separate products, then it´s up to the developer what to choose.
Fair points and I believe you nailed what is going to happen in your last point. The AngularJS team is committed to the 1.3 branch and there are already discussions to port the appropriate 2.0 pieces back to 1.3 such as the new router. I personally would not write off seeing a 1.4 release if enough of these features are introduced.
I personally think 2.0 is going to be incredible and am really looking forward to it. I think that 1.3 is just an amazing framework on its own. It is the distance between the two that we need to work out.
Well said my friend!
I totally agree! I’m very excited about the future of angularjs.
I want to thank the angularjs team and community they have build an amazing framework that makes the frontend development fun and easy.I was able to keep my job here in the Philippines and got a promotion because I was able to create web applications fast and reliable. From that I was able to enroll my sister to college and support my family. I’m truly grateful to all of you guys.
The AngularJS team has announced a new SPA framework to be available at the end of 2015. That framework is sufficiently dissimilar to AngularJS 1.x that migrating requires significant effort, both in learning the new framework and in doing the actual work. In particular, there is, as yet, no path for an evolutionary migration from 1.x to 2.x.
For me, this boils down to two things: (1) I have only this year started to dabble with AngularJS and as much as I like it, I wouldn’t risk committing to its use on a commercial project starting now, when I already know that 1.x’s lifespan is limited. (2) When 2.0 comes around, it has to earn developer mindshare on its own; it won’t be able to count on people just moving on to the next version. 2.0 will be the new kid on the block, not a grown up resident.
Wow! Thanks for sharing Alex!
Michael — good points! I think the trick is to come up with that sane migration path and I know there is A LOT of mindshare going into solving that problem right now.
“let us be participants and not recipients”
That’s all.
+1
The point here is thatAngularJS development for new projects is shut down until AngularJS 2.0 is release. There is not reason to start new projects with AngularJS 1.3.
Eimmy – that is the exact opposite point that the AngularJS team wants to make. To take that stance would dictate one of two things… you either start NO new projects until AngularJS 2.0 comes out which is a huge waste of opportunity to build awesome things right now or you just do not use AngularJS at all to which I would still argue that AngularJS 1.3 is the best web framework out there.
Also, all of the existing concepts of AngularJS are going to be in tact but the implementations are going to simpler and give us more options to embrace emerging technologies like web components.
A lot of these ideas going in to Angular 2.0 (should it be Angular*JS* 2.0 as it will also be for Dart?) are already in AngularDart. After switching over to AngularDart the advantages of notations and killing the controller are easy to see. Code is cleaner, easier to understand, there is less abuse of the scope so templates are easier to grok and your IDE can now help you! This is definitely a step in the right direction.
It is worth pointing that all of these ideas have been proven for years in ES4 (ActionScript 2 & 3) and more recently AngularDart. The ideas are solid and now it is just a matter of executing on them in a sane way.
Thanks so much for this great article! I couldn’t agree more.
I think we’re having really great times right now. Think of the possibilities we had with JavaScript a couple of years ago compared to now. It almost feels like Christmas every couple of months when new great tools, frameworks or features are released that push the boundaries even further. So I don’t understand why we shouldn’t be excited, technologies and tools have always been changing or replaced. And as far as I know Angular 1.3 apps will not explode or anything even after Angular 2.0 is released. 🙂
We were going to move forward with AngularJS 1.3 and then I watched the video describing 2.0. Such seeming disregard for existing users, for ease of migration and backwards compatibility is very disturbing. It is prompting me to rethink my recommendations in a big way. If the team wants to come up with an approach of “now THIS is the perfect way to build apps” where there is a regular reinvention without regard to the existing users, it would be more useful if each altogether different approach had an altogether different name. If we could stick with AngularJS for the life of the software app with evolution but not constant reinvention, that would be far better. In this case, the site is replacing an app built with fifty-year-old technology that is still available as a viable development platform today, with evolutionary changes over that half-century. It is time to update the app, but we do not have resources to do that in 1.3 and then again with 2.0. So, now what? Go with 1.3 or back to the drawing board? Sigh.
Dawn — definitely do NOT go back to the drawing board! 😀 AngularJS 1.3 is still one of the best web frameworks out there. The reason there is not a clear migration path is that AngularJS 2.0 is not finalized and therefore it doesn’t make sense to migrate to a moving target. Furthermore, the web is evolving an incredibly rapid pace and a lot of the changes in 2.0 is designed to accommodate them… mobile first, web components, etc. Also, just some food for thought… Google has like 1600 AngularJS 1.x applications running internally and so if anyone has a vested interest in getting a sane migration right… it is them!
It doesn’t really matter how you skin it. This announcement killed new projects for AngularJS. No team, company, or project would be crazy enough to waste the time an effort to build something in Angularjs 1.3. Sure there is talk of a sane upgrade path, but with so little known about 2.0 and so much changing, is there really any wonder why people are ticked off?
We get that its open source, and that people put time into building this framework. However for some reason there is no discussion about the time, money, and investment that teams who learned Angular or work with it on a daily basis. This is a very one sided post that only focuses on whats been done for us. Lets be honest here, if thousands of developers didn’t love angularjs, then it wouldnt be popular in the first place.
Sorry but this entire situation really felt like a reaction to react.js (pun intended). So if you really want to move to a world of web components then do so. I just wouldnt call it Angular anymore.
Bill – fair points but we can agree to disagree. I think this is a pretty broad statement “No team, company, or project would be crazy enough to waste the time an effort to build something in Angularjs 1.3.” as I know TONS of teams, companies and projects that are continuing to build on top of 1.3 because it is awesome and will be supported indefinitely by Google and the community.
simpulton – fair point. However I think we could at least agree that a large majority will be taking a very serious look at ever using Angular 1.* in any new project. Our team is already looking for alternatives and I know quite a few other colleagues in the same boat.
And to that I agree… I think that every team should factor in 2.0 when making a choice on what framework to use. It does affect things. With that said, AngularJS still has an incredible ecosystem and is a great framework right now and I would personally be fine letting a web application live on the 1.2 or 1.3 branch for its entire life cycle.
2.0 is a new framework, but I think the next step is more about Polymer. If not Angularjs then Polymer.
Half of my users are on IE8, so I will be using Angular 1.2 for the foreseeable future. No need to get hysterical, Even if the Angular team did not release a single upgrade to the 1.X branch, applications I develop today will continue to work in legacy and modern browsers for a long time. When the time comes, I will switch to 2.x, it will probably be 2.3 by then, and there will be plenty of books, videos, supporting libraries. to make transitioning easier. As for the migration path, I really do not need it, I have applications written in 2000 that are still running on 2000 technology, for profit businesses are not in the habit of having apps that still meet the business need rewritten just to target the latest technology.
What is the timeline on this? Sorry, I just found out now. I had been putting all of my evenings and nights into understanding Angular.js and am not sure whether to continue or wait for the changes.
Don’t stop learning! 😀 AngularJS 2.0 is still quite a ways off and the concepts will all translate even if we have to adjust for syntax.
You’ve got to like the positive attitude; however, reality has a way of interjecting. I would be interested in seeing some opinions of those who fund our work. You know, those who don’t understand the neat bells and whistles but are intimately tied to project costs.
Some are angry, some are elated, some are indifferent. Let’s just wait and see how this actually affects Angular JS market share.
+1
I agree, I was skeptical at first, but have come around to support the radical changes.
Summarized some of my thoughts on the topic here:
http://www.syntaxsuccess.com/#/viewarticle/548149ce33d9be142d14c423
Thanks for sharing! I believe it will be a lot less “scary” when we have facts instead of conjecture. 😀
Just reads as a list of excuses. It’s ok if it’s not your money and you are an employed developer, what about those of us who have to pay for this?
Pay for what exactly?
Very well put. I’m embarrassed for the snobby elitist portion of the programming community, to the point that I rarely read comments on any programming related articles anymore. If you hate a technology that much, don’t use it, or give constructive criticism rather than bashing it as if some soulless robot built it. People put a lot of time and hard work into these things and they’re doing a hell of a lot more for the world than only leaving scathing comments on articles while continuing to make their living off technologies they had no part in building, so have some damn respect.
I cannot believe what they proposed in Polymer, which appeared destined to be dead on arrival. The amount of opinion and complexity for what seemed like marginal or zero gains, left me in utter disbelief, waiting for a punch line. Now they are shoehorning those same overwrought notions into Angular. I don’t see why they feel obligated or believe it is necessary to buy into nascent standards that may never become a norm.
Web Components and shadow DOM are just additional layers of misery for any humans out there trying to accomplish a simple task. Who is proposing all of these esoteric standards and why are they getting hyped anyway? You would think that object oriented programming was anything other than a fad or something..
Encapsulation – Where a programmer hides state because it feels empowering and provides them with a false sense of security because all of their creations are inaccessible and were thereby rendered obsolete the moment they clicked save.
If I have one just more sad realization today, I may just quit the industry altogether.
AngularJS 2.0 – it won’t be its out now we stop everything before – so calm down – Google themselves have 1000s of AngularJS 1.x apps out there so they will be supporting it
It is a huge step – the questions about is it right or not – we won’t know until it is in full release. I question some of it, but see reasons for others. I do think the current 1.x version are a fantastic improvement to Javascript development and make sense both logically and structurally.
OO programming is the way and making Javascript a typed language was always going to happen sooner or later so integrating this concept into AngularJS 2.0 – good stuff.
I do think – it might cause people to adopt other technologies – but the standard i think is clean and I am positive about it – but no migration available – thats a b***h. You basically have to build a new – are users going to have that option if working for company who have 1.x around – probably not.
Still – let wait and see shall we – I say its brave and I await some proper documentation on the matter
Great points but I am willing to bet $100 dollars on a sane migration path. 😀
Flask Transpiler.. BOOM!
nice article, can you divulge a bit on this line:
‘ I believe we owe it to ourselves to stay professional and positive.’
Thanks, Dean! To expound on that statement, we not only respect the community, our friends, our coworkers but ourselves when we make a commitment to being professional and positive. I believe that we are worth that level of respect. I try to be very careful what I say about other frameworks because even though I do not use them, they are great tools put together by smart people who have given their time freely. And now we are seeing a level of collaboration between Ember, React and Angular that I think is really REALLY awesome! This is possible because of mutual respect that comes out of being professional and positive.
I agree with you, Lukas, it’s not the best idea to form an opinion at this point. The only thing we can do is keep reading and waiting. Another review on Angular2: http://webcreek.com/2016/05/09/angular-2-coming/ What do you think?
After two years (and all the things which changed), would you write that article again? With the same tone? Would you?
@Max For the most part, yes. There are definitely frustrating parts about the framework that I wish would have been smoother #coughRouter #coughForms but as a whole… I really love the essence of Angular 2 and I believe it is pointed in the right direction. From an architectural standpoint, it has profoundly affected the way that I write Angular 1.x applications for the better.
Thank you for writing this, you changed my heart about Angular 2. I’ll actually make time to learn it now.
Thanks so much for this great article.