Rewriting Avira's SPA from Backbone Marionette to Angular
medium.com"We’ve just rolled out a major rewrite of the Online Essentials (Avira’s flagship product) in AngularJS." "The whole idea of this web app ..."
No more antivirus solutions from Avira? It's flagship product is a web app?
The rest of the article is just a useless commercial for AngularJS, filled with buzzwords and fallacies.
It's a tech post, not an avira commercial. Maybe it will help someone make a good decision when choosing a js framework, based on real experience and facts.
You can read more about the product here http://www.avira.com/en/avira-online-essentials
Please tell me more about the fallacies you see in the article.
I said it's an AngularJS commercial, not an Avira commercial. But let me get the Avira part out of the way first: the article is at most an anti-commercial for Avira. You're saying that this web app is the flagship product for Avira. Do you know what a "flagship product" means? Do I really have to explain to you why a web app as a flagship product is not a good commercial for a security oriented company? But thank you for the link, go with the anti-commercial even further.
And now for the useless AngularJS commercial part. Here are the fallacies:
- You argue for choosing AngularJS using statistics from github, now that's an "Argumentum ad populum". You chose AngularJS just to jump on the hype-train, because you don't give any other reasons beside "look, so many others are using it, it must be good".
- You don't explain how to achieve the results. You're just saying: "here are the results, you must believe me because I work at a company and write on blogs". This is called "Argument from authority". You could have crafted some toy examples to explain how is the debugging easier, or how does it help with the testability, but no such things from you.
[there are more, but these will suffice]
And another thing about your article: you should explain some of the buzzwords you use, not everyone knows them. For example: what does "velocity score" means and/or implies? I can't get anything about it from google, and that says a lot about it.
In the end, you have a nice skeleton for an article, but is not fleshed at all. Nice color, pretty, yet absolutely worthless, graphs and no content whatsoever. I hope you don't code as you write.
[edit: formating]
If you're really interested in Avira and its products, it's up to you to take a look into this project from time to time and you may change your impression.
I added certain links in the article (e.g. http://www.funnyant.com/), where the features of all frameworks are discussed and compared. Read it and you may understand the advantages. I'm sorry that you don't consider that a community driven project, managed by top talent from Google is not a good enough reason to invest some time into a framework.
I explained how we achieved the results: we rewrote it. The facts are pretty relevant and they may help other teams.
I will craft toy examples in next articles, so it's best to follow me if you really are that interested and would like to see more examples.
You can find more about velocity here: http://en.wikipedia.org/wiki/Velocity_(software_development) .
I'm sorry that you brought it to a personal level in the end, this explains a lot. Instead, I hope you have a good day and don't forget to follow me to see how well I code :).
You end your comment in a condescending and yet you have the nerve to tell me that I should follow you, when you have only one article posted, ever. Are you for real? And why do you keep telling me to look up Avira? Tell me at least that you are getting paid to promote Avira in every comment you make, because I don't see any other logic to speak about it when it wasn't the freaking subject of my rant.
Anyway, going to back to my issues, maybe you'll understand this time. Your article has not a single useful thing in it, it just regurgitates random facts. AngularJS might be the best thing since sliced bread, but you do a poor job at explaining why. Does it matter that it has more commits, forks and stars on github than alternative frameworks? No. Does it matter that is backed up by Google? No. But please explain why are these things relevant in any shape or form. It seems to me that you just went with the winner of a beauty pageant.
You didn't added certain links, you added just one link, and it was buried in a mountain of crap. It would have been nice if you expanded on the content from that link. You say that this is a tech post, but I don't see no tech in it (buzzwords =/= tech).
"We rewrote it". Yes, well argued, I see no flaw with that statement (/sarcasm). You could have said that you used X feature in Y manner to improve Z and thus replace the god old W way of doing things. But why bother? You were too busy counting github commits and whatnot.
Do you understand where I'm going with this? Or are you gonna reply with yet another "look up Avira" and "here's another argument from authority to prove me right" comment?
In the end, I think I'm just talking to a wall here, so I'll just leave you with a Pauli inspired statement: "you're article is not even wrong" (you'll get bonus points from me if you understand this one).
It's hard for me to make more comments here. I don't know your tech background and also how much experience you have with frontend or any kind of frameworks.
Unfortunately, you rush to make conclusions. It's my first post on medium (others will come for sure), but why this have to be the first article posted, ever?
About the rewrite: you have x features in backbone. Then you rewrite all the x features in angular and you compare the results.
e.g. https://tech.dropbox.com/2012/09/dropbox-dives-into-coffeesc...
Dropbox rewrote its javascript in coffeescript and saw a LOC improvement. They had a code in js and rewrote it in coffee. We had it in backbone and rewrote it in angular. I'll probably provide more details (with code and so on) in next blog posts, but I wanted to keep this one shorter, because it's not about how we implemented it, but more about the conclusions we reached.
In the end, it doesn't matter how many LOC you have in a certain language, framework, etc. It's more about the productivity and the quality. It worked for us very well in both cases, and I think this is the final idea.
I'm sorry that you bring the discussion to a personal level, again. I'm open for suggestions and would like to make further articles "more relevant" and share better content. If you think you can help me with this and with one suggestion or two, please get in touch.
Have a nice day!
I've also added a Later Edit (LE) in the article and I hope some things are clear now.
What do you think are the best use cases for Backbone Marionette?
I think that it may be simpler to learn than both angular and ember.
Unfortunately, given the fact that it's missing 2 way data binding and it's not declarative, you end up with lots of boilerplate code and in the end you invest more time in writing your backbone application than in learning angular and writing the application in it.
To be honest, I'd only start a new project in angular or ember because they are extremely productive frameworks. Backbone was great more than 2 years ago.
I politely disagree with ending up with more boilerplate code with marionette... you're ending up with _less_ boilerplate code when using marionette with backbone, and even when including marionette, your "boilerplate" code is necessary configuration... binding dom elements, events, template handling, rendering, data serialization... even more so if you're doing it in CoffeeScript.
behold... a view in 3 lines of code.
class Views.AlbumTracks extends Marionette.CompositeView className: 'album-tracks' template: 'album-tracks'In angular you'd never need the line with className, so you'd end up with even less code, because of its declarative style.
A good reading when thinking that's necessary to bind dom elements, events, etc is here: http://stackoverflow.com/questions/14994391/how-do-i-think-i...
Can the improvements in loading time be attributed to angular alone?
We rethought the backend API calls and made all of them in parallel. Also, the websocket - server connection is initialized sooner.
So, I'd say that this part could have also be done in backbone. It was also fast before, but we gained more than 1 second loading time with this refactoring.