<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On 14 November 2014 02:04, 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:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">On 11/13/2014 12:13 PM, Richard Jones wrote:<br>
> the npm stuff is all tool chain; tools<br>
> that I believe should be packaged as such by packagers.<br>
<br>
</span>npm is already in Debian:<br>
<a href="https://packages.debian.org/sid/npm" target="_blank">https://packages.debian.org/sid/npm</a><br>
<br>
However, just like we can't use CPAN, "pear install", "pip install" and<br>
such when building or installing package, we wont be able to use NPM.<br>
This means every single dependency that isn't in Debian will need to be<br>
packaged.<br></blockquote><div><br></div><div>Just to be clearer, when I wrote "the npm stuff" I meant "npm and the tools installed by it", so grunt, bower, karma, phantomjs, etc. Not the stuff managed by bower, just the stuff installed by npm. Those npm-based things should be packaged by the distros as tools, just like other programs the distros package.</div><div><br></div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div><div class="h5">> Horizon is an incredibly complex application. Just so we're all on the<br>
> same page, the components installed by bower for angboard are:<br>
><br>
> angular<br>
>   Because writing an application the size of Horizon without it would be<br>
> madness :)<br>
> angular-route<br>
>   Provides structure to the application through URL routing.<br>
> angular-cookies<br>
>   Provides management of browser cookies in a way that integrates well<br>
> with angular.<br>
> angular-sanitize<br>
>   Allows direct embedding of HTML into angular templates, with sanitization.<br>
> json3<br>
>   Compatibility for older browsers so JSON works.<br>
> es5-shim<br>
>   Compatibility for older browsers so Javascript (ECMAScript 5) works.<br>
> angular-smart-table<br>
>   Table management (population, sorting, filtering, pagination, etc)<br>
> angular-local-storage<br>
>    Browser local storage with cookie fallback, integrated with angular<br>
> mechanisms.<br>
> angular-bootstrap<br>
>    Extensions to angular that leverage bootstrap (modal popups, tabbed<br>
> displays, ...)<br>
> font-awesome<br>
>    Additional glyphs to use in the user interface (warning symbol, info<br>
> symbol, ...)<br>
> boot<br>
>    Bootstrap for CSS styling (this is the dependency that brings in<br>
> jquery and requirejs)<br>
> underscore<br>
>    Javascript utility library providing a ton of features Javascript<br>
> lacks but Python programmers expect.<br>
> ng-websocket<br>
>    Angular-friendly interface to using websockets<br>
> angular-translate<br>
>    Support for localization in angular using message catalogs generated<br>
> by gettext/transifex.<br>
> angular-mocks<br>
>    Mocking support for unit testing angular code<br>
> angular-scenario<br>
>    More support for angular unit tests<br>
><br>
> Additionally, angboard vendors term.js because it was very poorly<br>
> packaged in the bower ecosystem. +1 for xstatic there I guess :)<br>
><br>
> So those are the components we needed to create the prototype in a few<br>
> weeks. Not using them would have added months (or possibly years) to the<br>
> development time. Creating an application of the scale of Horizon<br>
> without leveraging all that existing work would be like developing<br>
> OpenStack while barring all use of Python 3rd-party packages.<br>
<br>
</div></div>I have no problem with adding dependencies. That's how things work, for<br>
sure, I just want to make sure it doesn't become hell, with so many<br>
components inter-depending on 100s of them, which would become not<br>
manageable. If we define clear boundaries, then fine! The above seems<br>
reasonable anyway.<br>
<br>
Though did you list the dependencies of the above?<br></blockquote><div><br></div><div>Again, just so we're clear, yes, the above is *all* the components installed by bower, including dependencies (jquery and requirejs being the *only* dependencies not directly installed).</div><div><br></div><div>As I mentioned, the dependency trees in bower are significantly simpler than npm packages tend to be (most bower packages have zero or one dependency). The "100s" of dependencies are in npm packages - but as Martin Gleiser has pointed out, npm solves that problem with its local install and node_modules directory structures. </div><div><br></div><div> </div><div>     Richard<br><div class="HOEnZb"><div class="h5"><br></div></div></div></div></div></div>