[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