<div dir="ltr">Gabriel has responded saying very much what I would have said, so I won't repeat that. I would like to note though that bower and npm are two separate beasts entirely. The dependency trees in bower are very limited indeed (only two additional components are installed beyond the list below) which is in stark contrast to npm. The xstatic question only applies to the bower components - the npm stuff is all tool chain; tools that I believe should be packaged as such by packagers.<div><div><br></div><div>I would like to address one specific point Thomas raised though:<br><div class="gmail_extra"><br><div class="gmail_quote">On 13 November 2014 12:29, Thomas Goirand <span dir="ltr"><<a href="mailto:zigo@debian.org" target="_blank">zigo@debian.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">I just don't understand why all of this is needed. I did some JS<br>
programming myself back in the days (10 years ago, using PHP...). I<br>
could do Ajax by hand, without using a single library. What is it that<br>
you're doing in Horizon that needs so many libs? When I see Horizon in<br>
Juno, I don't even get it. Or is it because you just want to have fancy<br>
animation? Frankly, I don't care these. I care a lot more that we're not<br>
adding new potential security problems.<br></blockquote><div><br></div><div>Horizon is an incredibly complex application. Just so we're all on the same page, the components installed by bower for angboard are:</div><div><br></div><div>angular</div><div>  Because writing an application the size of Horizon without it would be madness :)</div><div>angular-route</div><div>  Provides structure to the application through URL routing.</div><div>angular-cookies</div><div>  Provides management of browser cookies in a way that integrates well with angular.</div><div>angular-sanitize<br></div><div>  Allows direct embedding of HTML into angular templates, with sanitization.</div><div>json3</div><div>  Compatibility for older browsers so JSON works.</div><div>es5-shim</div><div>  Compatibility for older browsers so Javascript (ECMAScript 5) works.</div><div>angular-smart-table</div><div>  Table management (population, sorting, filtering, pagination, etc)</div><div>angular-local-storage</div><div>   Browser local storage with cookie fallback, integrated with angular mechanisms.</div><div>angular-bootstrap</div><div>   Extensions to angular that leverage bootstrap (modal popups, tabbed displays, ...)</div><div>font-awesome</div><div>   Additional glyphs to use in the user interface (warning symbol, info symbol, ...)</div><div>boot</div><div>   Bootstrap for CSS styling (this is the dependency that brings in jquery and requirejs)</div><div>underscore</div><div>   Javascript utility library providing a ton of features Javascript lacks but Python programmers expect.</div><div>ng-websocket</div><div>   Angular-friendly interface to using websockets</div><div>angular-translate</div><div>   Support for localization in angular using message catalogs generated by gettext/transifex.</div><div>angular-mocks</div><div>   Mocking support for unit testing angular code</div><div>angular-scenario</div><div>   More support for angular unit tests</div><div><br></div><div>Additionally, angboard vendors term.js because it was very poorly packaged in the bower ecosystem. +1 for xstatic there I guess :)</div><div><br></div><div>So those are the components we needed to create the prototype in a few weeks. Not using them would have added months (or possibly years) to the development time. Creating an application of the scale of Horizon without leveraging all that existing work would be like developing OpenStack while barring all use of Python 3rd-party packages.</div><div><br></div><div><br></div><div>     Richard</div><div><br></div></div></div></div></div></div>