Dave,

I think Vue is a great suggestion.  I’m not that familiar with it but from what 
I’ve seen it does seem to have a lot of the benefits of React while also being 
easier to use.

Things I see in favor of React:
* older, more mature. I have to admit I’ve seen a lot of “flavor of the month” 
JS frameworks come and go, so I tend to be biased toward older, more 
established frameworks.
* backed by Facebook whereas Vue is primarily developed by one guy
* the ecosystem around React, for example, things like React Native which could 
be used to create native app clients to Airavata while reusing PGA code

Things I see in favor of Vue:
* simpler to get into
* no transpilation required, so the tooling requirements could be much simpler, 
again making it easier to get into
* “batteries included”: there is an official vue state management library 
(vuex), official router, official cli

I think it would be interesting to try them both, since I don’t have much 
experience with React and none with Vue.  Maybe use one for one view and the 
other for a different view, just to get a feel for them.  Then it should be 
easier to make a decision. I also advocate for separating the JS models and 
business logic from any framework code so that whatever UI framework we use is 
decoupled and just a view layer on top. So switching from one UI framework to 
another should be relatively simple.

Thanks,

Marcus

> On Feb 6, 2017, at 1:08 PM, Reagan, David Michael <[email protected]> wrote:
> 
> Hi Marcus, devs,
> 
> I'd also suggest taking a look at Vue[1] for the front end. See [2] and [3] 
> for a couple of comparisons between Vue and React. I haven't used either yet, 
> but from what I understand they are quite similar. The primary differences 
> seem to be that the React community is larger, but that Vue is easier to get 
> into. In particular, if a goal for the PGA is for developers to be able to 
> jump in and quickly customize it to their needs, Vue's HTML templates might 
> be easier to learn than React's JSX-based component system. It also seems to 
> be easier to slowly add bits of Vue to a site over time, while React really 
> requires full buy-in from the beginning. 
> 
> Dave
> 
> 
> [1] https://vuejs.org/
> [2] https://vuejs.org/v2/guide/comparison.html
> [3] 
> https://medium.com/js-dojo/react-or-vue-which-javascript-ui-library-should-you-be-using-543a383608d
> --
> David Reagan
> Advanced Visualization Lab
> Indiana University
> avl.iu.edu
> 
> The Advanced Visualization Lab is part of the Research Technologies division 
> of UITS; Research Technologies is a PTI Cyberinfrastructure & Service Center.
> 
> ________________________________________
> From: Christie, Marcus Aaron <[email protected]>
> Sent: Friday, February 3, 2017 4:31 PM
> To: [email protected]
> Subject: Requirements for an updated portal architecture
> 
> Dev,
> 
> I’ve been taking feedback from other Airavata developers and working on 
> requirements for a next generation architecture for the PGA.  First I’ll list 
> out the requirements as I see them. Then I will propose what I feel is a best 
> fit for these requirements. Feedback on all of this is much appreciated.
> 
> 
> Requirements
> 
> The following is a list of problems we would like to solve by adopting a new 
> web framework.  A new web framework here means both the backend framework for 
> server side code as well as the frontend framework for client side code.
> 
> 1. Have the ability to independently add new views to the portal. Framework 
> should have some concept of modularity so new functionality can be added 
> without having to make changes to other parts of the portal. This would 
> facilitate new features moving into production faster.
> 
> 2. Have the ability to make calls to Identity Server (SOAP) and Airavata 
> (Thrift).  Would be good if there is support for interacting with other 
> remote computing protocols and HPC resources.
> 
> 3. Be themable/skinnable and modular. Gateways should be able to customize 
> the look and feel and make the portal their own. Gateways should be able to 
> customize the functionality available in the portal, removing and adding just 
> the functionality tailored for that specific gateway.
> 
> 4. The backend framework should support different modes of web development: 
> server-side rendered views as well as REST API for client side views.
> 
> 5. The backend framework should be able to easily integrate with existing 
> scientific codes for visualization and analysis. This would allow developing 
> lightweight domain specific functionality within the portal itself.
> 
> 6. The backend and frontend frameworks should have active communities and 
> some longevity, helping to ensure continued support in the future.
> 
> 7. The backend and frontend frameworks should have a gentle learning curve to 
> promote onboarding new contributors. Setting up a local development 
> environment should be relatively easy.
> 
> 8. The frontend framework should allow the development of more sophisticated 
> client side views:
>        • Domain specific and interactive views for configuring applications 
> and viewing results
>        • Domain specific and interactive views for browsing, filtering and 
> managing remote and personal data collections
>        • More up front validation of application configurations
> 
> 
> 
> Proposed solution
> 
> With these requirements I feel like Django as a backend framework and React 
> as a frontend framework are the best fit. Here are the benefits I see of 
> adopting Django:
> * Django has a builtin concept of modularity, the application [1].  This 
> would allow the independent development of new views for new funtionality 
> (req 1) as well as making it possible to tailor a portal to a gateway’s needs 
> (req 3).
> * Django has a very active community and lots of off the shelf applications 
> [2] that can be used to either quickly develop common portal functionality or 
> to add gateway specific features
> * Being written in Python means that the backend can easily integrate with 
> Python scientific codes for quick data analysis and visualization tasks
> * A side benefit of a Python based portal is the opportunity to develop a 
> first class Airavata client in Python. This could enable scripts to take 
> advantage of the Airavata API or Juptyer like interactions with the API.
> * Django is well-documented and relatively straightforward to work with, 
> easing on-boarding of new developers
> 
> Regarding React, I see these benefits:
> * React is a much more powerful and scalable approach to web UI development 
> than just using jQuery, which is what the current PGA uses. With React we can 
> build UIs with a higher degree of interactivity. And we can build richer, 
> more domain-specific interfaces.
> * Unlike other JS frameworks that have a very large API to learn, the 
> concepts and API surface of React is fairly small. The main challenge is 
> learning to “think in React” [3]
> 
> Again, feedback on this is much appreciated.
> 
> 
> Thanks,
> 
> Marcus
> 
> [1] https://docs.djangoproject.com/en/1.10/ref/applications/
> [2] https://djangopackages.org/
> [3] https://facebook.github.io/react/docs/thinking-in-react.html

Reply via email to