Monday, November 25, 2013

On launching AngularJS 1.2: what we learned, what we're changing

You might have noticed something new since we launched 1.2... Now that we're caught up, we've begun pushing a new release every week or two to stay on top of things and keep the PR queue responsive. Unless there's something big or noteworthy, we're also no longer blogging about every release.

We learned a lot from launching 1.2. Here are our own notes on the 1.2 launch process, and what we'll be improving, in case you're curious too.

1.2 took way too long!

  • The community uptake and increase in github activity alongside 1.2 caught us by surprise. We got swamped, and it took some time to get on top of the new volume of contributions. We're back in the flow now, with a few new folks on the core team, and we're taking steps to keep from getting overwhelmed.
  • To handle this new volume, we needed better infrastructure in place. We were depending too much on manual processes; managing them took time that couldn't be spent on development. We've since improved the CI server, and added more automation to our launch processes and tests. We're also looking for more ways of automating and streamlining the release process.
  • Some of our 1.2 goals turned out to be much more challenging than we anticipated. Animations, for example -- we realized that we needed to do something different, to make it really easy to use by thoroughly anticipating use cases, instead of putting the burden on the developer to implement. Getting it right took longer.
  • Our release schedule wasn't all that well organized. Because the core team was overwhelmed, we often sat on fixes and features for too long, delaying the feedback loop with contributors. We're generating pre-release builds from the CI server and working on providing them via bower (either nightly or even after each commit) so that we can get feedback faster.

Underscore issues and the revert in 1.2.1

Shortly after 1.2, we issued 1.2.1, reverting a late change around hiding "private" properties prefixed with an underscore. We tested the change on hundreds of apps at Google, and with a few minor exceptions, nobody was affected, so we assumed it was safe to proceed. But we missed the real impact on apps elsewhere.  We reverted the change within a week, but we'd like to avoid making the same mistake again.

What steps are we taking?
  • We're committing to release more frequently, reducing the feature pressure on any one release.  With a consistent release schedule, we'll have more time to fully consider the implications of the features that we add and the changes we make.  
  • New pre-release builds from the CI server provide greater visibility into what we're working on. No surprises.
  • Even if the impact seems small, no more breaking changes in the last release before a final major version. We learned this lesson and we really mean it.

Friday, November 22, 2013

Farewell, Disqus

tl;dr: We are removing Disqus comments from the AngularJS docs.

Problems with Disqus
Besides making it difficult to moderate off-topic or inflammatory comments, many comments are specific to past versions of Angular. We think the documentation should be versioned alongside the code so there's never a question of whether information is out of date.

Disqus has been great for allowing us to get feedback and allow developers to share tips about AngularJS, but we think there are better ways to do this now. You'll always be able to see the Disqus comments in past versions of Angular (<=1.2.2), but going forward, here's where we think the things previously posted in comments should belong:

Post questions to StackOverflow or the mailing list. They tend to get answered more quickly and stay up-to-date because of the active community there.

Bug Reports (Issues)
Bug reports should go on Github. It's useful to be able to see everyone's issues, workarounds, and the progress towards fixing them all in the same place. See the relevant section of the contributing guide for more.

Improvements to the Documentation
We think the best way to improve the docs is by directly improving the text. You can do this via the "improve this doc" button at the top of each page.

Friday, November 15, 2013

AngularJS 1.2.1 - underscore-empathy available now

Our first stable release in the brave new post-1.2 world is available now.

AngularJS 1.2.1 underscore-empathy reverts hiding "private" properties, improves $compile for transcluded directives by making it possible for the child elements of a transcluded directive to access the transcluded directive's controller, and fixes a few minor bugs.

We introduced "private" properties (for properties prefaced with an underscore) in 1.2 thinking that this would be a fairly uncontroversial change. Oops! Apologies (and thank you) to the folks who filed bugs alerting us to the larger consequences in your code of making this breaking change. We've reverted this feature.

For full details in this release, see the changelog.

Thanks to the 33 superheroic individuals who contributed PRs!

Aaditya Talwai, andre, Andrei Korzhevskii, Ari, Ben Wiklund, Brian Ford, Caitlin Potter, Chirayu Krishnappa, Derek Peterson, Eddie Monge Jr, gdi2290, Igor Minar, James deBoer, Jeff Cross, Julien Sanchez, Martin Field, Mathis Hofer, Mauro Carrero, Miško Hevery, mkolodny, PatrickJS, Pete Bacon Darwin, Peter Kosa, Phillip Alexander, rsnapp, Sebastien Roul, smarigowda, Stéphane Reynaud, Tatham Oddie, Tobias Bosch, victorbjelkholm, Vojta Jina, xdhmoore.

Friday, November 8, 2013

AngularJS 1.2.0: timely-delivery

Our much-anticipated release of AngularJS 1.2.0 has landed. Pinch yourself; you're not dreaming.

AngularJS 1.2.0 timely-delivery fixes many issues found in 1.2.0-rc3, and introduces several new features since the previous stable release.

Since our last stable release, the most notable changes are:
The team has spent a lot of time consolidating, simplifying, improving content, and improving the user experience of our documentation. This is a work in progress, so stay tuned for more improvements.

For full details in this release see the changelog.

See the full migration guide on our guides.

Thanks to the 294 superheroic individuals who contributed PRs toward 1.2.0!

@supercobra, Adam, Adam Bowen, Adam Kent, Adam Shannon, Adam de Baugh, Alan Klement, Alex Olshansky, Alex Young, Alexander Kaidalov, Alexander Shtuchkin, Anders Hessellund Jensen, Andreas Marek, Andreas Sander, Andrew Jackson, Andrew O\'Brien, Andrew Peterson, Andrew Stuart, Andy Gurden, Andy Hitchman, Andy Joslin, Angel Balcarcel, Anthony Tran, Artemy Tregubenko, Arun Israel, Ash, Balázs Suhajda, Ben Holley, Ben Lesh, Ben McCann, Ben Ripkens, Ben Tesser, Boris Serdyuk, Brad Green, Braden Shepherdson, BrainCrumbz, Brenton, Brian Fitzpatrick, Brian Ford, Bruno Coelho, Butch Peters, Buu Nguyen, Caio Cunha, Caitlin Potter, Calvin Fernandez, Carl Danley, Chirayu Krishnappa, Christopher Hiller,, Colin Casey, Colin Frei, Dag-Inge Aas, DanS, Dang Nguyen Anh Khoa, Daniel Herman, Daniel Lamb, Daniel Luz, Daniel Tse, Dave Peticolas, David, David Barker, David Bennett, David Gonzalez, David Mosher, David Sanders, Dean Peterson, Dean Sofer, Derek Hammer, Dmitry Kichenko, Dmitry Shirokov, Domenic Denicola, Dusan Bartos, Eddie Monge, Eduardo Garcia, Ehsan Ghandhari, El Juli, Emmanuel, Eric Hagman, Eric Large, Eric Subach, Felix, Francesco Pontillo, Fred Sauer, Freek Wielstra, G Lormeau, G.H. Naylor, Gabor Csizmadia, George Bonner, Gias Kay Lee, Gowtam Lal, Greg Thornton, Grzegorz Lachowski, Hack Reactor Students, Henning Teek, Henry Hazan, Hubert SABLONNIÈRE, Igor Minar, Ilia Choly, Itamar Rogel, ItsLeeOwen, J Bruni, J. Tangelder, Jad Naous, James, James Daily, James Davies, James Dunn, James Roper, James Talmage, James deBoer, Jamie Mason, Jamund Ferguson, Jan Kuča, Jan Laußmann, Jared Forsyth, Jarrett Harris, JasonM23, Jeff Cross, Jeffrey Palmer, Jen Bourey, Jens Rantil, Jesse Palmer, Joao Sa, Joe Grund, Joe Hanink, JoeLeCodeur, Joey Organisak, John Bohn, Jordan Klassen, Josh McAdams, Josh Schumacher, Josh Taylor, Julie, Julien Bouquillon, Jussi Kosunen, Jérémy, Ken Chen, Ken Sheedlo, Lane Goldberg, Leandro Ostera, Lefteris Paraskevas, Leif Halvard Silli, Luc Morin, Lucas Galfasó, Maarten Stolte, Manuel Kiessling, Marc Tamlyn, Marcel Morgan, Marcin Wosinek, Marco Vito Moscaritolo, Mark Campbell, Mark J. Titorenko, Mark Striemer, Marko Bonaci, Martin Cortez, Martin Probst, Matias Niemelä, Matias Niemelä, Matthew Kleiman, Matthew Windwer, Merrick Christensen, Michael Kueller, Michael Stewart, Michal Bendowski, Michał Gołębiowski, Michiel Staessen, Mikk Kirstein, Misha Moroshko, Misko Hevery, Mr.Raindrop, Nelson Blaha, Nepoxx, Niall Smart, Nick Donohue, Nicola Peduzzi, Nicolas Brugneaux, NimaVaziri, OpherV, Ore Landau, P. Envall, Patrick Canfield, Patrick Drechsler, PatrickJS, Paul Meskers, Paulo Scardine, Pavel Vasek, Pawel Kozlowski, Paxton Hare, Pete Bacon Darwin, Peter Bacon Darwin, Peter Fern, Preston Marshall, R. Merkert, Randi Hillerøe, Renan Ivo, Reto Aebersold, Ricardo Bin, Richard, Richard John, Richard Sentino, Rob Culliton, Rob Dodson, Robb Shecter, Robbie Ferrero, Robert Fauver, Roberto Bonvallet, Roland, Ron Waldon, Rory Douglas, Sam Dornan, Santi Albo, Saul Maddox, Sean Fahey, Sebastian Müller, Sequoia McDowell, Siddique Hameed, Simeon Willbanks, Spencer, Spencer Applegate, Stefan hr Berder, Stephen Merity, Steven Sojka, Tay Ray Chuan, Thomas Tuts, Tim Graham, Tim Ruffles, Tim Statler, Tobias Bosch, Tom Dunstan, Tom Elovie Spruce, Tyler McGinnis, Umur Kontacı, Uri Goldshtein, Valentyn Shybanov, Vineet Kumar, Vojta Jina, Walter Higgins, Wesley Cho, Woody Peterson, Yang Pengcheng, Yuriy Bilogub, Zachary Friedman, adamshaylor, andre, anilgulecha, basarat, bolasblack, brakon, cjmling, commonlisp, douglascalhoun, ebeal, exex zian, gabriel-tessier, gdennie, gdi2290, ghodss, granteagon, jakub-bochenski, janhartigan, jankuca, joscarsson, joshbowdoin, joshkurz, joshrtay, jquadrin, justinrknowles, lorint, mgechev, micole, mmieszek, mtaran-google, naomiblack, naorye, neilmcgibbon, netpoetica, paolo-delmundo, phamdt, phanboy4, pzajdel, rjferguson21, rodbv, rodyhaddad, royling, sarkasm, sdesmond, sflahave, tgkokk, thorn0, tigbro, tomazy, ts-web, wiebl, Étienne Barrié