Sponsored By Aspose - File Format APIs for .NET

Aspose are the market leader of .NET APIs for file business formats – natively work with DOCX, XLSX, PPT, PDF, MSG, MPP, images formats and many more!

How Google broke the OSS compact with Angular 2.0

When I first wrote the title, I had to pause for a moment to consider if I was actually writing this post or if it was a bad dream. As it turns out, at least from my vantage point, what I’ve seen thus far, which candidly isn’t that much, has been much like a bad dream. For purposes of this post, what matters more is what we know we haven’t seen. Nonetheless, I have seen enough to make a few conclusions I’ll express here.

It’s helpful to start with some defined terms and a framework that I can use as a backdrop to support my argument. In this case, I’m relying on the classic OSS development model described by Eric Raymond in his 1997 essay The Cathedral and the Bazaar. I won’t go into all of the model’s facets save one: That all users should be treated as co-developers. The over-arching theme of OSS is one of transparency and at least get as close as possible, to true democratization.

In reality though,democratization is often preached by the same people that just as often don’t practice it. I won’t delve into motive or intent. Rather, I’ll simply rely on what I’ve seen and observed as an outsider looking at the building that has its curtains drawn – trying to get a glimpse of what is going on inside. Is it my or any of our business? You bet it is as collectively, we are part of a large community that is responsible for Angular’s success. We are impacted by decisions being made in the dark.

Looking at Angular 1.x, it has quickly become one of, if not the most popular MV* web development frameworks today. There is a robust community and at last count, has over 1000 contributors. All one has to do is navigate to https://github.com/angular/angular.js to see how robust and vibrant the community is.By all accounts, the Angular Team appreciates this community through the comments expressed at the 2014 ng-Europe Conference. In this day and age, words don’t mean nearly as much as actions. I’m a member of that ever-growing legion of people that judges by what is done, not what is said.

There is no doubt the external community (those outside Google) is the reason why Angular has been so successful. It’s common sense after all. Without broad uptake and support, an OSS Project may be many things, but a success won’t be one of them, unless of course, the goal was for the software to only be used by a few people.

Today, the world is abuzz with mentions of Angular 2.0. Here and there are mentions and perhaps the briefest of glimpses of what 2.0 will be. We keep hearing that it’s not an upgrade, but a complete rewrite, that it is for modern browsers, support for ECMA 6, etc. We’ve heard they seek to make 2.0 more modular and to correct things that weren’t right in 1.x. It all sounds good. But my question is simply this “Where is it? Perhaps you are part of an enterprise that adopted Angular and are wondering what the future will hold. What will happen with 1.x support? Should you plan for an upgrade? Can you upgrade? What about the supposed lack of support for certain browsers? Can you test and verify that? What are the plans after the first release? Again, where are the bits? This is one of the first blog posts on the matter: http://angularjs.blogspot.com/2014/03/angular-20.html. Note the date – March, 2014. You’ll soon see how common that date is.

As it turns out, there were some resources where we could start to get a picture. The problem is, that momentum never carried though. One such site is the learn Angular site: http://ng-learn.org/2014/03/AngularJS-2-Status-Preview/. Note the date: March, 2014. This is nearly an 8 month old post. Supposedly, the design documents are kept on a Google Drive: https://drive.google.com/a/bzmedia.com/?pli=1#folders/0B7Ovm8bUYiUDR29iSkEyMk5pVUk. There was much hype about the designs being released: http://sdtimes.com/google-releases-angularjs-2-0-designs/. Note the date – March 2014. After that, there has been for the most part, radio silence until the ng-Europe conference. But even at the conference, there still wasn’t much in the way of meaningful details. Looking at the documents today, they are either out of date or completely unreadable. Many have been crossed-out entirely. What does this mean? Has that design been scrapped? Is it a bad edit? If there is meaningful information in either the doc library or the source repos, then it is like finding a needle in a haystack. If the goal was to achieve secrecy through obfuscation, then congratulations – mission accomplished. It would be fair for some to conclude that Angular 2.0 is mere vaporware. I’m not willing to go quite that far.

Here’s my contention: if all of this was around the first release of Angular, fine. We had nothing in the first place and the team is trying to get things squared away before going public. I’ll say this, had this been Angular’s first release, where there was mis-communication and partial transparency, the prospects of success would not be there. The fact is, this IS NOT Angular’s first release. Clearly, 2.0 is a revolutionary step over 1.x. The Angular Team looking to capitalize and build upon Angular 1.x’s success. As such, the community that was praised at ng-Europe has a reasonable expectation to be kept in the loop. That’s the way you’re supposed to treat the community that makes up your development partner base. To me, it seems rather common-sensical. Why on Earth would a team want to disenfranchise the very community it relies upon and praises? Is it meaningful praise or does it just make for good copy? Words are cheap and easy. Again, it’s what you do that counts.

There’s an old saying in business and politics: You dance with the one that brought you…

If some other notable companies engaged in this sort of behavior, they would be publicly flogged. I’ll leave it to the reader to speculate on who those notable companies are.

My request of the Google Angular Team is a simple one – stop with the secrecy. Get the community involved. I’m not saying there has to be design by committee. That’s never a requirement in OSS. There should however, be an opportunity for the public to review and comment. Whether you implement that feedback is up to you. The public has a good way of showing its support or lack thereof. There are many individuals and organizations that not only need time to evaluate, they are owed that time. That is part of the compact. That’s how you earn and retain trust.

The public has put its collective trust in Angular. The Angular Team should return in kind.

About johnvpetersen

I've been developing software for 20 years, starting with dBase, Clipper and FoxBase + thereafter, migrating to FoxPro and Visual FoxPro and Visual Basic. Other areas of concentration include Oracle and SQL Server - versions 6-2008. From 1995 to 2001, I was a Microsoft Visual FoxPro MVP. Today, my emphasis is on ASP MVC .NET applications. I am a current Microsoft ASP .NET MVP. Publishing In 1999, I wrote the definitive whitepaper on ADO for VFP Developers. In 2002, I wrote the Absolute Beginner’s Guide to Databases for Que Publishing. I was a co-author of Visual FoxPro Enterprise Development from Prima Publishing with Rod Paddock, Ron Talmadge and Eric Ranft. I was also a co-author of Visual Basic Web Development from Prima Publishing with Rod Paddock and Richard Campbell. Education - B.S Business Administration – Mansfield University - M.B.A. – Information Systems – Saint Joseph’s University - J.D. – Rutgers University School of Law (Camden) In 2004, I graduated from the Rutgers University School of Law with a Juris Doctor Degree. I passed the Pennsylvania and New Jersey Bar exams and was in private practice for several years – concentrating transactional and general business law (contracts, copyrights, trademarks, independent contractor agreements, NDA’s, intellectual property and mergers and acquisitions.).
This entry was posted in OSS. Bookmark the permalink. Follow any comments here with the RSS feed for this post.
  • Pingback: Die Web-Wochenschau – von Symfony, dem Google Maps API, Ember JS, Sencha Space und Angular 2.0 - entwickler.de

  • Pingback: Strange bedfellows: Google does deal with Microsoft that will see AngularJS 2 adopting TypeScript - TechTub

  • Pingback: Microsoft And Google Collaborate On Angular 2 Framework, TypeScript Language | Contact Compumobile Oakville Ontario - Your Halton Region Tech Expert

  • Pingback: Microsoft And Google Collaborate On Angular 2 Framework, TypeScript Language | DigitalRetouchUK.com

  • Pingback: Can AngularJS Maintain Its Dominance? -Telerik Developer Network

  • black boulez

    John I love your work and your involvement with angular.But coming from an project manager.Angular 2.0 complete rewrite doesnt make me want to pick up a framework that i’ll have to use for at least 10 years. Stability is good,incremental changes are good.Complete rewrites often end in disasters for the maintainers and the users.

  • black boulez

    Of course it does owe everything to its users.Popular OSS=many contributors ,users happy,good buzz.Silly rewrites that breaks everything = less contributors,users pissed,bad buzz => less resources to the project.

  • Alfredo Ramirez

    Best things in life evolve. Angular 2.0 is a completely different animal. Large teams will have the resources to re-learn the framework. Learned the lesson and will move back to a framework that has shown to be more future-proof. I wonder, whats in the minds of the Ionic, Onsen and Mobile Angular UI frameworks for mobile.

  • johnvpetersen

    Hmmmm you’re on a site called Code Better. This is a technology related forum. The 20 comments before your’s made it clear that it was about Open Source Software. A rudimentary google search would have tee-d that up as well. Are you in the technology business? Your CV indicates you are. Some advice for you. Don’t be too free in admitting what OSS meant. For the record, your tools listing in your CV – lot’s of OSS tools there.

    I didn’t define MV* either. I gather you knew that…. Right? Just in case, the MV stands for Model View. The * is either Presenter, Controller or View Model.

  • johnvpetersen

    That’s one way of looking at it. Here’s another.

    The license is just that…a license. A compact is something different. There are written compacts – often between nations. There are also social compacts. These are normally never written. For any community to function, there are norms that have to be established and enforced. There’s a good book by Professor Lawrence Lessig called CODE and other laws of Cyberspace. The codes in that context were not just statutory. Other codes included the agreed upon rules of engagement in a community – whether it is brick and mortar or in the virtual world.

    In the world of OSS, there are some established norms that go to a vibrant and healthy OSS ecosystem. Again, I’ll rely on the philosophy espoused by Eric Raymond in the Cathedral and the Bazaar where one of the rules is to treat users as development partners. A true partnership is one where partners don’t act in their own self interest at the expense of other partners. That would be the antithesis of a partnership. Such a partnership doesn’t work.

    In the case of Angular 2.0, I don’t think for a moment there is anything malicious going on. I don’t think the team got together and decided “Hey, let’s freeze the community out.” Nevertheless, in spite of whatever intentions there were, the result is for the most part one where the community is frozen out – manifested by a lack of information.

    All kinds of theories have been espoused. The most common one is that the team simply doesn’t know where things are headed. Designs are incomplete. At the same time, there are some knowns. For example, AtScript and Dart. AtScript looks to be fine. Dart?? I don’t get that decision. To make a contribution, I’ll have to learn Dart? I get it that its a Google Product and perhaps it is good for the Angular 2.0 team to dogfood that. As an OSS community member, it doesn’t serve my interest. I wasn’t consulted and neither was the community as a whole. Can the Angular team make this unilateral decision? Sure. Will there be consequences? Yes, I think there will be. I think they will have a smaller community. To that, I can easily say and defend the notion that the ng-2.0 team broke the OSS compact through its actions and in some cases it appears, through its non-action.

    Just this one developer’s opinion.

  • http://www.martinspierings.nl/ Martin Spierings

    I think it would be wise to mention somewhere that OSS means Open Source Software. I wasn’t aware of this, so it was kinda weird.

  • johnvpetersen

    I wouldn’t be too quick to ditch Angular 1.x. There’s a lot worthwhile there. 2.0? For the most part, it’s vapor – defined as tangible working stuff such that I can play with it and see some things that are practical to my work. As for React, the one-way data binding thing to me is a bit off. There was an article a while back that dinged Angular because of its 2-way binding and citing that 2-way binding was itself, an anti-pattern.

    I don’t know precisely what “modern web development” is supposed to be. I know what valuable web development is. That’s the problem with a bunch of these teams – they think they are always finding new and innovative ways to do things. Sometimes they do find innovative new ways. Other times, its simply the same dog with different fleas that is from a “not invented here” mentality.

    Until react proves itself in a way that it provides value that cannot be achieved in other way, I’ll remain an observer of that approach.

  • http://www.mynameisjay.com/ Jay

    Remember this is all free and Open Source and they can do whatever they want with it. Still I agree with this article and with all the negative feedback they’ve been getting. I wasted my time learning Angular’s crazy framework. I was certain that this would have the same effect as jQuery years ago. I even implemented it on a large-scale project thinking it would be future-proof. It’s clearly not.

    So now, like a lot of developers, I am ditching angular all together and going with something else. Likely React + Flux + Backbone – though I am leery of React and especially Flux since they’re so new to the scene — but that’s modern web development.

  • http://craigsmitham.com/ craigsmitham

    Disagree. The only OSS compact is the license. Everything else is a matter of context and pragmatism based on the objectives of the project owners, to the benefit or detriment of the project.

  • johnvpetersen

    One other point. There ARE NOT a million contributors. For the 1.x project, there are just over 1000. For 2.0, there is this repo that was provided to me: https://github.com/angular/angular. This repo cranked up last month. There are a handful of commits and there are only 6 contributors. Most of the commits are from 1 guy. The other 5 have close to an equal amount of the remaining commits.

    Indeed, there is no release schedule. There is no product planning or release management whatsoever. Goes to overall point.

  • johnvpetersen

    @Jon47:disqus : There is no need to thank me. I believe in transparency. That means I’ll post comments that are highly critical such as yours. Yes, there is code out there to some degree. However, it isn’t readily apparent that its there. In addition, of what code is there for 2.0, the code is out of date. Note that I just don’t conclude that. Rather, I give *reasons* for why I conclude as such. That’s the difference. If you are going to assert that this post is just a “quagmire of fear mongering” – then if you are in any way interested in having your point being taken seriously or carrying any weight, then you are compelled to “get into it”

    As to your conspiracy point, I’ve never suggested there was a conspiracy per se. That said, a conspiracy is nothing more than a secret agreement by 2 or more people to engage in some act that would be considered harmful or illegal. We can set aside the legal side of this as that doesn’t apply. As to harm, I don’t see that the team has made a secret agreement to inflict harm on the project. If there is some harm to come to the project, that would be more of an unintended consequence. As such, the notion of a conspiracy doesn’t apply and why I’ve never said it or implied it.

    I went into that explanation to make clear a few things. First, I never said or implied there was a conspiracy. Second, why the notion of a conspiracy wouldn’t apply. So to that, I think your conspiracy point is nothing more than hyperbole injected by some emotional bias on your part. Nothing wrong with bringing the point up. You just need a basis for it.

    I have brought my issues up to several members of the team. I will tell you there is some agreement by some factions of the team. At the same time, by other factions, there is a general belief that what has been put out there is/was sufficient. Apparently, some things that were presented at ng-Europe were not correct. As an outsider who can only make inferences based on what is generally observable, it appears there are some team dynamic issues. Whenever there are issues with team dynamics, all kinds of dysfunction can occur and usually, nothing good comes from it. Not saying that I know this for certain. Rather, it is conjecture on my part based on both what I have seen and direct dealings I’ve had with some who have cause to know what is going on.

    As to stirring things up, I’m simply presenting my opinion. You are free to agree or disagree. What is not appropriate for you is to suggest that I don’t express my opinion. If you wish to express a different point of view and disagree, please do. I encourage that. All I ask is that you have a point and put forth a basis to conclude other than the fact you don’t like what I say. It’s that lack of discipline and rigor on your part that doesn’t leave me surprised that you may be OK with how the ng-team has prosecuted the 2.0 project. All you should be concerned with is how you feel and what your risk factors are. Don’t be concerned with my point of view. If I’m wrong, I’m wrong. The fact is, I think my views are more in the mainstream of general commentary about 2.0.

    Finally…my blog, my forum. I’ll decide what is right to post here. Most of all, don’t assume I haven’t shared my views with the ng-team. I have. And they are quite aware of this blog post.

  • johnvpetersen

    Thanks for posting the github repo. I see it has been about 3-4 months since the last commits. And, if you navigate to this item: https://github.com/angular/projects/blob/master/src/directives/ng_active.js, you’ll see the comment right there from Rob Eisenberg that indicates it is just a place holder that is waiting for other things to be done. So…to the extent that this is code, I’ll agree, To the extent that it represents current work or something that resembles something meaningful that I could extrapolate to a real world thing – no, I can’t agree on that.

    Of the code I do see, I have serious questions about the approach. Not saying one way or the other about whether this is a good approach.

    As to Dart, for the most part, yet another server and client-side c#/java/c++ like syntax. It’s a Google Product – which makes clear why it is associated with Angular 2.0. As a playground for Dart, the dartlang.org and try.dartlang.org sites are fine. How it all relates to Angular? It’s not much of any help.

    Good point about the team being busy with 1.3. Still doesn’t explain away the lack of formal info and structure around 2.0.

    As I see it, there is a feeling, perhaps on the part of the ng-team – that if *some* information out there, no matter how disorganized, disjointed or how old it is – that is “open”. To that, I would respectfully disagree.

    Again, I appreciate your comment and willingness to share/illuminate this info.

  • Jonz

    Thanks for approving my comment but I’m really not going to get into it, just read all the other comments man, the code is out there, it’s on github, it’s open source, there’s a million contributors and no release schedule. Basically, there’s no conspiracy, quit stirring things up.

    And if you *do need* to stir things up, go ask the Angular team, this isn’t the right forum at all.

  • johnvpetersen

    It is? I respectfully disagree with your conclusion. As to the premise that backs up your conclusion, I’d need you to elaborate on that a bit.

  • dipetersen

    I’m a fan – because you have a great last name! Good article.

  • Jonz

    This post is a quagmire of fear-mongering and sensationalism.

  • johnlindquist

    The original POC is also on github: https://github.com/angular/projects
    The other repos have examples as well and Dart was a “playground” of sorts.

    Also, the past couple months, the Angular team’s focus was on shipping 1.3 (which was a large effort) as well as the material design angular implementation (which is also on github).

  • Pingback: The Morning Brew - Chris Alcock » The Morning Brew #1724

  • http://www.sholo.net/ scottt732

    It is a LOT of breaking change to introduce in a single major version. From the birds-eye perspective, I can see where they’re going and I get the motivations… but there is a ton of 1.x code out there that will apparently be completely incompatible with 2.0. Two recent painful upgrade examples come to mind: jQuery 2.0 and Bootstrap 2.0. Updating jQuery from 1.9x to 2.x wasn’t terribly painful, but it involved a complete site regression and a handful of bugfixes. Updating Bootstrap from 1.3.x to 2.0, on the other hand was so painful that for most 1.x projects we didn’t even bother. The work isn’t particularly hard, but there’s so much of it that we kick the can. When we really want a 2.x feature that 1.x doesn’t have, we’ll need to schedule a bunch of time to tweak all of our UI code and then… a complete regression.

    AngularJS 2.0 makes both of these sound like a walk in the park. Paraphrasing infoq, there will be a new template syntax, AtScript (optionally), no more controllers, different directive syntax, no more $scope, no more angular.module, and no more jqLite. With the exception of the removal of jqLite, this basically means that apps written against Angular 1.x will need to be ported/rewritten. Since it would likely never even fit into a single sprint, it’s pretty much incompatible with ‘release early and often’. Since upgrading alone will add no immediate user-facing benefits, it’s going to be a tough sell to the product team to get it onto the project schedule.

    In our case, the most serious consequence is going to be related to staffing. Our existing team will need to learn 2.0 well enough to port our 1.x codebase and move forward. For potential candidates, 1.x experience will have diminished value and yet nobody will have 2.x experience. The Angular learning curve is not for the faint of heart and building a team with both 1.x and 2.x skills enough to write & maintain either version isn’t practical.

    A framework as popular as Angular with as many applications in production should be taking smaller steps with less breaking changes. If that means 2.0 in mid/late-2014 and 3.0 in 2015, then so be it. I think this project decision is going to cause a lot of teams to look for alternatives and I can’t say that I’d blame anyone for picking one.

    If I had any advice for open source teams, it would be: It’s fine to introduce breaking changes in a major release, but try to be conscious of how much effort it will take to upgrade (> 4 weeks for large applications = a problem). If the changes are so significant that it significantly diminishes the value of a developer’s prior (current) experience, you’re probably doing something wrong.

  • johnvpetersen

    **
    because open source isn’t about fulfilling debts, it’s about working together to build software.
    **
    Couldn’t agree more – as that is the compact. As to taking responsibility, getting involved, etc – there has to be a platform for that.

    Look – Angular 2.0 likely won’t see the light of day before the end of 2015. My goal has been simply to voice an opinion the hopes that the ng team gets its act together. It does make one wonder what has been going on since the flurry of announcements in March, 2014.

  • jroper

    I think it’s a fallacy to think that an open source project owes anything to its users. As soon as you start thinking that a project owes you something, open source breaks down, because open source isn’t about fulfilling debts, it’s about working together to build software. Open source advances as users take responsibility, investing their time into it by taking the initiative to review things, try things out, involving themselves in discussions.

    Google may not be doing the best job of communicating, but that doesn’t mean they aren’t being transparent. Have you tried out the things they are experimenting with? Have you tried emailing the dev list to discuss things? Or are you waiting for a gift wrapped invitation for you to bless the project with your input? That’s not how open source works.

    Google could do better at communicating what they are doing, and this would help them grow their community. But, as an existing member of the community, you have only yourself to blame for not involving yourself at the level you want to be involved. As other commenters have pointed out, all the code is in the open, all the changes are in the open, all the pull requests and issues are in the open. The project is there for you to get involved in. But at these early stages of experimentation, getting involved requires an investment of time – when you’re working on something in the early stages, you don’t document it fully because the way it works is likely to completely change, making the documentation you wrote useless. It’s only expected that if you want to be involved in the early stages that you’ll have to discover how to put it together for yourself. And if that’s an investment that you’re not willing to make, then don’t complain that you’re not involved.

  • johnvpetersen

    @Bloodbraid:disqus – You’ve made an assertion here about the Angular Team. How do you know that? How do you know they are merely late and are not ready? Even if that was true, it still does not eliminate the need to treat the community as development partners. The jQuery team didn’t act this way. There was an example of responsible and thoughtful management.

    Lack of transparency, lack of communication in a manner that appears to be intentional and at the same time, paying lip service to the community by saying how valuable they supposedly are…that’s pretty toxic. I’ll take my POV that is backed up by what is generally accepted as good OSS conduct any day of the week.

    And if there is technical trouble as you allude to, then all the more reason to steer clear of that mess. After all, if there is technical trouble and poor communication, all of which could have been avoided, then more likely than not, it’s a sinking ship I’d rather not be tied to. From a due diligence perspective, as a going concern, there would be serious doubts which wouldn’t be problematic given the numerous other alternatives out there.

  • Bloodbraid

    For ambitious software projects, not working as well or as easily as originally intended, changing direction and not respecting schedules is perfectly normal.
    Angular developers aren’t “breaking the OSS compact”, they are merely late and not ready to package their “bits and pieces” yet.
    Feeling entitled to get Angular 2.0, right now, because it has been announced, is an incomparably more toxic attitude than technical trouble and insufficient communication.

  • johnvpetersen

    Right..bits and pieces, strewn throughout in a not so usable fashion. How would it all work together? Where are the POC’s. I was careful to credit cases where there was, at least in the beginning, disclosure. That appeared to stop for the most part, in March, 2014. All of that said, I appreciate your clarification here. Thanks again!!

  • johnlindquist

    It’s on their github account as separate modules that will all eventually be bundled as “Angular 2″:

    https://github.com/angular/router
    https://github.com/angular/di.js
    https://github.com/angular/zone.js

    etc, etc.

    Much of the experimentation/ideas for Angular 2 were done in Dart which is all also on github.

    The Traceur compiler for annotations/types is on github.

    So all the work, pieces, etc are on github just not in a single repo.

  • bniemyjski

    I completely agree

  • Pingback: How Google broke the OSS compact with Angular 2.0Bill Lennox Aka Digital Bill | Bill Lennox Aka Digital Bill