[openstack-dev] [Horizon] the future of angularjs development in Horizon

Richard Jones r1chardj0n3s at gmail.com
Fri Nov 14 00:03:21 UTC 2014


On 14 November 2014 02:04, Thomas Goirand <zigo at debian.org> wrote:

> On 11/13/2014 12:13 PM, Richard Jones wrote:
> > the npm stuff is all tool chain; tools
> > that I believe should be packaged as such by packagers.
>
> npm is already in Debian:
> https://packages.debian.org/sid/npm
>
> However, just like we can't use CPAN, "pear install", "pip install" and
> such when building or installing package, we wont be able to use NPM.
> This means every single dependency that isn't in Debian will need to be
> packaged.
>

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.


> Horizon is an incredibly complex application. Just so we're all on the
> > same page, the components installed by bower for angboard are:
> >
> > angular
> >   Because writing an application the size of Horizon without it would be
> > madness :)
> > angular-route
> >   Provides structure to the application through URL routing.
> > angular-cookies
> >   Provides management of browser cookies in a way that integrates well
> > with angular.
> > angular-sanitize
> >   Allows direct embedding of HTML into angular templates, with
> sanitization.
> > json3
> >   Compatibility for older browsers so JSON works.
> > es5-shim
> >   Compatibility for older browsers so Javascript (ECMAScript 5) works.
> > angular-smart-table
> >   Table management (population, sorting, filtering, pagination, etc)
> > angular-local-storage
> >    Browser local storage with cookie fallback, integrated with angular
> > mechanisms.
> > angular-bootstrap
> >    Extensions to angular that leverage bootstrap (modal popups, tabbed
> > displays, ...)
> > font-awesome
> >    Additional glyphs to use in the user interface (warning symbol, info
> > symbol, ...)
> > boot
> >    Bootstrap for CSS styling (this is the dependency that brings in
> > jquery and requirejs)
> > underscore
> >    Javascript utility library providing a ton of features Javascript
> > lacks but Python programmers expect.
> > ng-websocket
> >    Angular-friendly interface to using websockets
> > angular-translate
> >    Support for localization in angular using message catalogs generated
> > by gettext/transifex.
> > angular-mocks
> >    Mocking support for unit testing angular code
> > angular-scenario
> >    More support for angular unit tests
> >
> > Additionally, angboard vendors term.js because it was very poorly
> > packaged in the bower ecosystem. +1 for xstatic there I guess :)
> >
> > 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.
>
> I have no problem with adding dependencies. That's how things work, for
> sure, I just want to make sure it doesn't become hell, with so many
> components inter-depending on 100s of them, which would become not
> manageable. If we define clear boundaries, then fine! The above seems
> reasonable anyway.
>
> Though did you list the dependencies of the above?
>

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).

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.


     Richard
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openstack.org/pipermail/openstack-dev/attachments/20141114/7ad3eea2/attachment.html>


More information about the OpenStack-dev mailing list