This sounds great and seems like the right step forward to gain engagement
for Aurora from both operator as well as their user's perspective. I am
really excited to see how people start customizing the UI to their
particular situation.

On Wed, Jul 19, 2017 at 2:10 PM, David McLaughlin <dmclaugh...@apache.org>
wrote:

> Thanks for the feedback!
>
> Joshua - I haven't tried to drop in Preact yet, but I was also planning to
> throw away the prototype and starting again when it came to upstreaming it,
> so as part of that we can just address incompatibilities as we go. If I was
> to guess, then the only significant impact on my prototype would probably
> be the reactable plugin I was using (replacement for Angular's
> smart-table). But longer term I do have concerns about moving away from
> what is a constantly improving and healthy ecosystem around React. So most
> likely I'll hold off until a decision is made there one way or the other
> (which should be within a week).
>
>
> Kai - I'd be happy to coordinate and collaborate on this with others. Let
> me try and finish up the CSS/UX of the pages in my prototype and from there
> we can sync on who does what. Does that sound good?
>
>
>
>
> On Wed, Jul 19, 2017 at 1:56 PM, Kai Huang <texasred2...@hotmail.com>
> wrote:
>
> > Just a few thoughts as an aurora developer and operator:
> >
> >
> > From my experiences with Aurora users, some persisting complaints are:
> >
> >   1.  The current UI is not very intuitive for the users to understand
> the
> > task lifecycle, resource utilization of their job.
> >   2.  Often times users are unaware of the new features/changes in Aurora
> > Scheduler/Executor, which leads to a lot of misuse of the system.
> >   3.  Users have preferences on the appearance of the scheduler/thermos
> UI
> > due to special use cases, and ask us to customize for them(or start to
> > write their own UI, which is often not recommended).
> >
> >
> > The other major issue I see in the current UI is that it's built on an
> > obsolete tech stack(AngularJS) that has all the binaries and dependencies
> > in the repo. From a developer's perspective, it's a big burden to
> > maintain/test the code, and make fast iterations on it.
> >
> >
> > Currently the scheduler UI is readonly, and mainly designed for debugging
> > purposes. We could have done much better to make the UI more friendly to
> > the end user, empower them to discover, understand and use all the Aurora
> > features, and give them more insights into the their jobs, or even the
> > entire cluster. I love the idea that redesign the UI with a modern stack,
> > and more importantly, every single part of the application is a module
> that
> > you could take your own customization.
> >
> >
> > As for the development strategy, I'm in favor of the incremental approach
> > that posts one page at a time. The main benefit is that we are educating
> > the developers while iterating on it, and this will improve the adoption
> > rate in the long term.
> >
> >
> > Overall I'm very interested in this work, and would like to collaborate
> > with David to redesign and improve the UI.
> >
> >
> > ________________________________
> > From: Joshua Cohen <jco...@apache.org>
> > Sent: Wednesday, July 19, 2017 11:39
> > To: dev@aurora.apache.org
> > Subject: Re: Redesign of the Aurora UI
> >
> > I think this looks great overall! I'm super excited to see the UI get
> some
> > love (and to set us up for better iteration on the UI going forward). My
> > biggest concern, of course, is the current hubbub vis-a-vis Apache and
> the
> > BSD-3+Patents license[1]. Have you tried running this against Preact to
> > confirm compatibility/performance? Also note that other Facebook
> libraries
> > have the same license problem (e.g. Immutable, Jest), so unless FB
> changes
> > their patent grant clause, I imagine we'd have to find alternatives to
> > those as well. If only we had landed this a week ago, we could've been
> > grandfathered in on the license front :(.
> >
> > As far as the options for landing this, I'll leave that up to more active
> > reviewers, but my gut says that smaller reviews will make this easier to
> > parse, especially for those unfamiliar with React. That said, perhaps we
> > could go with an alternate method for reviewing here, where people review
> > against your fork directly and only when they're comfortable do you post
> > the whole patch to reviewboard for what should, by that point, be a
> rubber
> > stamp review?
> >
> > In general, fantastic work, David!
> >
> > [1] https://issues.apache.org/jira/browse/LEGAL-319
> >
> > On Wed, Jul 19, 2017 at 12:55 AM, David McLaughlin <
> dmclaugh...@apache.org
> > >
> > wrote:
> >
> > > Hey all,
> > >
> > > At Twitter we have had a long-standing desire to be able to put custom
> > > widgets and other UX enhancements into the Aurora UI. Recent prototype
> > work
> > > to do this in a clean way has proved fruitful and I'd like to present
> > this
> > > approach to the community and get feedback on the overall approach.
> > >
> > > The basic approach is simple:
> > >
> > > 1) Use the node plugin for gradle to bootstrap a modern web development
> > > build system using webpack and npm.
> > > 2) Use a modern JS view library like ReactJS (or Preact depending on
> the
> > > Facebook+Patents license issues for Apache projects) to have all UI
> > > components defined as ES6 modules.
> > > 3) Use webpack to set up a custom plugin directory that modules should
> be
> > > loaded from first. This would allow anyone with custom Scheduler builds
> > to
> > > also drop in custom JS files to replace selected OSS UI components.
> > > Example, you could drop a "Navigation.js" into the plugin directory,
> and
> > > the build system will use that module instead whenever it sees a
> > > <Navigation /> used by parent components. Basically: it's a hybrid
> > > plugin/dependency injection (similar to Guice) approach to
> customization
> > of
> > > the UI.
> > >
> > > The nice thing here is that since every single part of the application
> > is a
> > > module you could take your customizations to any level of precision
> that
> > > you need. You could replace (or add) key pages or components, or just
> > keep
> > > it as simple as adding some helper text to one of the pages.
> > >
> > > Some use cases this could enable:
> > >
> > > * A <ConfigurationViewer /> widget that you can replace with
> > configuration
> > > parsing that understands special processes and/or custom executors.
> > > * Integration with your telemetry stacks to add resource utilization
> > > feedback or other performance indicators into the job page.
> > > * Adding custom stats tracking widgets for internal analytics.
> > >
> > >
> > > Some points from my prototype work:
> > >
> > > 1) Switching to npm for JS asset management allows us to delete the
> vast
> > > majority of our 3rdparty assets that we had to copy into the repo. We
> can
> > > most likely extend this to remove all of them, including our CSS
> > frameworks
> > > like Bootstrap.
> > > 2) ReactJS was proposed before (by Joshua Cohen) and ironically I was
> one
> > > of the main voices against. The argument I used at the time was lack of
> > > familiarity with the stack within the community, as well as concerns
> > about
> > > the complexity. So what changed? Almost the entire Aurora team at
> Twitter
> > > has ReactJS experience now - from working on our internal Continuous
> > > Delivery system. I also believe that as a view layer, ReactJS is
> > > conceptually very simple and that most of the complexity in these
> modern
> > JS
> > > applications is in a state layer like Redux. The Aurora UI is currently
> > > read-only and relatively simple, and we can avoid much of the
> complexity
> > by
> > > just using component state instead.
> > > 3) Unit tests are trivial to add as part of this work.
> > > 4) I'd like to move to modern, maintainable CSS tooling - SASS - as
> part
> > of
> > > this.
> > >
> > >
> > > My prototype is (hastily) published here:
> > >
> > > https://github.com/DavidMcLaughlin/aurora/tree/js-build
> > [https://avatars0.githubusercontent.com/u/56563?v=4&s=400]<
> > https://github.com/DavidMcLaughlin/aurora/tree/js-build>
> >
> > DavidMcLaughlin/aurora<https://github.com/DavidMcLaughlin/
> > aurora/tree/js-build>
> > github.com
> > aurora - Mirror of Apache Aurora
> >
> >
> >
> > >
> > >
> > > Some highlighted changes:
> > >
> > > 1) Bootstrapping the modern UI toolchain from gradle:
> > > https://github.com/DavidMcLaughlin/aurora/blob/
> > js-build/build.gradle#L452-
> > [https://avatars0.githubusercontent.com/u/56563?v=4&s=400]<
> > https://github.com/DavidMcLaughlin/aurora/blob/
> js-build/build.gradle#L452-
> > >
> >
> > DavidMcLaughlin/aurora<https://github.com/DavidMcLaughlin/
> > aurora/blob/js-build/build.gradle#L452->
> > github.com
> > aurora - Mirror of Apache Aurora
> >
> >
> >
> > > L459
> > >
> > > 2) The webpack configuration to enable loading from a plugin directory
> > (and
> > > SASS):
> > > https://github.com/DavidMcLaughlin/aurora/blob/
> > js-build/webpack.config.js
> > [https://avatars0.githubusercontent.com/u/56563?v=4&s=400]<
> > https://github.com/DavidMcLaughlin/aurora/blob/
> js-build/webpack.config.js>
> >
> > DavidMcLaughlin/aurora<https://github.com/DavidMcLaughlin/
> > aurora/blob/js-build/webpack.config.js>
> > github.com
> > aurora - Mirror of Apache Aurora
> >
> >
> >
> > >
> > > 3) The Hello, World of the plugin mechanism:
> > >
> > > https://github.com/DavidMcLaughlin/aurora/blob/js-build/src/main/js/
> > [https://avatars0.githubusercontent.com/u/56563?v=4&s=400]<
> > https://github.com/DavidMcLaughlin/aurora/blob/js-build/src/main/js/>
> >
> > DavidMcLaughlin/aurora<https://github.com/DavidMcLaughlin/
> > aurora/blob/js-build/src/main/js/>
> > github.com
> > aurora - Mirror of Apache Aurora
> >
> >
> >
> > > components/Hello.js
> > >
> > > Is replaced by:
> > >
> > > https://github.com/DavidMcLaughlin/aurora/blob/
> > > js-build/plugin/js/components/Hello.js
> > >
> > > 4) Unit test example:
> > > https://github.com/DavidMcLaughlin/aurora/blob/js-build/src/main/js/
> > [https://avatars0.githubusercontent.com/u/56563?v=4&s=400]<
> > https://github.com/DavidMcLaughlin/aurora/blob/js-build/src/main/js/>
> >
> > DavidMcLaughlin/aurora<https://github.com/DavidMcLaughlin/
> > aurora/blob/js-build/src/main/js/>
> > github.com
> > aurora - Mirror of Apache Aurora
> >
> >
> >
> > > components/pages/__tests__/HomePage-test.js
> > >
> > >
> > > My goal now is to take the prototype to completion and upstream to
> Aurora
> > > OSS. If the community is in favor, we should also discuss how to handle
> > the
> > > rollout.
> > >
> > > I would propose two options:
> > >
> > > * a massive code-dump with the entire UI rewritten in ReactJS.
> > > * an incremental approach where I (for example) post one page at a
> time,
> > > allowing those unfamiliar with JS to see the step by step process that
> > can
> > > demystify the tooling. The new UI would not be enabled incrementally
> due
> > to
> > > the issues with "greedy" one-page frameworks.. instead we'd just enable
> > it
> > > at the very end. The major downside here is just maintaining all the
> > weight
> > > of two UI frameworks, etc. in that period of development.
> > >
> > > Please let me know any questions, concerns or feedback.
> > >
> > >
> > > Cheers,
> > > David
> > >
> >
>

Reply via email to