Perhaps we can settle on JS + any standard MVC framework in the backend if deemed necessary.
Regards Srikanth Sundarrajan ---------------------------------------- > Date: Tue, 15 Jul 2014 17:25:30 +0530 > Subject: Re: Admin Dashboard > From: venkat...@innerzeal.com > To: dev@falcon.incubator.apache.org > > Hi Ajay, > > Thanks for taking the initiative and sorry for my delayed response. I think > I largely concur with Haohui that keeping the stack lean and using JS for > the front end and Java for the backend is desirable. > > Let me know what you need from serverside perspective and one of us can > jump in and help. Since the requirements are fairly trivial and reflect the > state in falcon, we should be able to achieve a lean implementation. > > Today Falcon does not need to run python and embeds a jetty container. We > may need to change the deployment architecture to accommodate python. > > Lets take a stab at using any front end tech that you are aware of and > proceed. I'm not hung up on dust nor bootstrap. > > Thanks! > > > On Tue, Jul 15, 2014 at 3:32 AM, Haohui Mai <h...@hortonworks.com> wrote: > >> bq. Try implementing a >> very basic requirement: user sessions( a logged in user doesn't need to >> login again on every page) with existing stack and you will understand what >> I am trying to say. >> >> Note that even simple features like user sessions in Falcon will be coupled >> with other components in the Hadoop ecosystems. In secure set ups, Falcon >> will need to get delegation tokens from the HDFS NameNode and perform >> UGI-related operations. I don't see how Django will help in this case. >> >> bq. P.S. On a side note, you can use python to interact with Hadoop, Hive, >> Pig, >> Oozie. Again, I am not suggesting to use python instead of java in existing >> components. >> >> If this is the case, can you elaborate on how Python+Django can benefit >> Falcon, and what exact requirements need to be solved? >> >> >> >> >> On Sun, Jul 13, 2014 at 9:26 PM, Ajay Yadav <ajayn...@gmail.com> wrote: >> >>> Hi Haohui, >>> >>> Thanks for the reply. I am not suggesting to change existing java code to >>> python or saying that we can live without javascript. All I am suggesting >>> is that we do need to use a server side web framework. Try implementing a >>> very basic requirement: user sessions( a logged in user doesn't need to >>> login again on every page) with existing stack and you will understand >> what >>> I am trying to say. >>> >>> >>> P.S. On a side note, you can use python to interact with Hadoop, Hive, >> Pig, >>> Oozie. Again, I am not suggesting to use python instead of java in >> existing >>> components. >>> >>> >>> On Sun, Jul 13, 2014 at 11:40 PM, Haohui Mai <h...@hortonworks.com> >> wrote: >>> >>>> Thanks for your interests in contributing in Falcon. I am one of the >>>> early contributors in Falcon UI, here are my two cents: >>>> >>>> Falcon has a browser-server architecture which needs to address two >>>> requirements: >>>> >>>> 1. Provide a feature-rich UI (e.g. FALCON-290) to the browser. >>>> >>>> 2. The server-side logics have to integrate with existing Hadoop >>>> ecosystems (e.g., MapReduce, Hive, Pig, and Oozie) which are heavily >>>> based on Java. >>>> >>>> While personally I'm pretty open to any other technologies, but I am >>>> yet to be convinced that how Python+Django will add any values to >>>> address the above requirements. More concretely: >>>> >>>> i. JavaScript is (and will continue to be) an essential part of the UI >>>> to meet requirement (1). The python stack cannot replace the >>>> JavaScript part on the client side. >>>> >>>> ii. Falcon has to rely on Java to interact with other projects in the >>>> Hadoop ecosystems, as there are few bindings in other languages for >>>> these projects. >>>> >>>> >>>> Using Python+Django might help attract attentions from the python >>>> community, but I think that from the Falcon points of view, it is much >>>> more important to keep align with the whole Hadoop ecosystems (which >> are >>>> the main audiences of the Falcon project). Moreover, I don't think that >>> the >>>> merits that you mentioned for server-side technologies have to be >> coupled >>>> with Python+Django -- in fact, there are many more implementation of >>>> enterprise >>>> features like exporting to Excel in Java. >>>> >>>> In short, I think that the current choice of Java+REST+JavaScript is >>> quite >>>> reasonable. Though I'm pretty open to any other technologies, I'm yet >> to >>> be >>>> convinced that Python+Django can be a superior choice. >>>> >>>> >>>> Thanks, >>>> Haohui >>>> >>>> >>>> On Sat, Jul 12, 2014 at 7:06 PM, Ajay Yadav <ajayn...@gmail.com> >> wrote: >>>> >>>>> Any comments? I am awaiting your decision to start working on this. >>>>> >>>>> >>>>> On Fri, Jul 11, 2014 at 11:10 AM, Ajay Yadav <ajayn...@gmail.com> >>> wrote: >>>>> >>>>>> Hi Venkatesh, >>>>>> >>>>>> Valid question and I am glad that you gave an opportunity to >> discuss >>>> it. >>>>> I >>>>>> have no particular bias towards using django. I have worked with >>> client >>>>>> side templates(not dust.js but more popular alternatives like >>> mustache, >>>>>> handlebars etc.) and client side MV* frameworks like backbone.js, >>>>> angularjs >>>>>> etc. It is completely possible to use both together, most common >>> case. >>>>>> >>>>>> *Note: *I looked at the existing code and saw that the current work >>> in >>>>>> dust.js is very less - around15-25 lines(only dust templates part >> not >>>>>> html/css). So may I take the liberty of rephrasing your question >>>> slightly >>>>>> as below >>>>>> >>>>>> *Question*: Assuming we can choose only one to keep stack mix to >>>> minimum >>>>>> - shall we use pure client side framework(like dust.js) or pure >>> server >>>>>> side framework(like django)? >>>>>> >>>>>> *Answer*: >>>>>> *TLDR Version:* >>>>>> Server side components offer more flexibility and extensibility >> than >>> a >>>>>> pure client side framework. Using only client side stack will rule >>> out >>>>> use >>>>>> of database for dashboards, talking to other services,plugins etc. >> by >>>>> using >>>>>> just dust.js. Things like hardcoding of rest server end points, >>>> graceful >>>>>> degradation, number of parallel connections available in browser >> will >>>>> limit >>>>>> pure client side stacks. In other cases it will put a stress on >>> falcon >>>>> REST >>>>>> API to be modified just for the dashboard. Using python stack >> instead >>>> of >>>>>> javascript, will help in getting more support from community. >>>>>> >>>>>> *Long Version* >>>>>> >>>>>> - *Convenience vs. Possibility* - Server side components give us >>>>>> flexibility and extensibility to build for any use case in >> future >>> as >>>>> well. >>>>>> Any future feature is possible to be built without dust.js and >>>>> bootstrap >>>>>> but not other way around. Dust.js and bootstrap just make it >>> easier >>>>> to do >>>>>> lot of things to enhance user experience. >>>>>> - *Features* - Consider the login page of the dashboard. We will >>>> need >>>>>> a database to store users/ integrate with ldap. We will need to >>>>> generate >>>>>> new random passwords when users forget passwords. Same for >>> features >>>>> like >>>>>> bookmarks, custom dashboards etc. A lot of features like this >>> can't >>>>> be done >>>>>> if we are not using any server side component. >>>>>> - *Sanity of REST API* - REST services of falcon are not only >> for >>>> web >>>>>> browser consumption. They can be used by command line clients >> etc. >>>> as >>>>> well. >>>>>> As the use cases for dashboard will evolve, it will become more >>>>> involved to >>>>>> do things using js alone on client side and it will put lot of >>>> stress >>>>> on >>>>>> modifying REST API to suit just the client. For example consider >>> the >>>>> use >>>>>> case of allowing an administrator to edit a process from an HTML >>>>> form. REST >>>>>> API will return plain text/xml and it will be tedious and slow >> to >>>>> parse >>>>>> everything in javascript side and then recreate it. Sending a >> json >>>> and >>>>>> accepting json just to cater to web client will be problem for >>>>>> - Another use case can be to be able to export the reports like >>> SLAs >>>>>> missed in last quarter, metrics in pdf/excel format and it will >>> not >>>> be >>>>>> possible to do it on client side and in lack of a server side >>>>> component it >>>>>> will again put stress on REST API to be modified just for >>> dashboard >>>>> UI. >>>>>> - *Best Practices* - With just dust.js and simple htmls being >>> served >>>>>> through a webserver, we will have to deal with naming urls with >>>> .html >>>>>> extensions, hardcoding the REST end points in each HTML etc. >>>>>> - *Browser constraints* - We will have to deal with browser >>>>>> constraints like number of parallel connections, cross site >>>> requests, >>>>>> javascript not being enabled etc. This will also restrict the >>>>> development. >>>>>> >>>>>> >>>>>> - *Community Support* - This is purely my impression and I might >>> be >>>>>> completely wrong here. I see that more python developers are >>>> involved >>>>> with >>>>>> big data/data science/machine learning eco system than more >>>> javascript >>>>>> developers. Hence it will be easier to find more support for >>>>> maintaining >>>>>> and extending these components in community if we develop them >> in >>>>> django >>>>>> instead of dust.js. >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> On Fri, Jul 11, 2014 at 2:28 AM, Seetharam Venkatesh < >>>>>> venkat...@innerzeal.com> wrote: >>>>>> >>>>>>> I think we are using bootstrap and dust templates. I'd want to see >>> if >>>> we >>>>>>> need to introduce more technologies into the mix. Do we need >> Python >>>> and >>>>>>> Django? >>>>>>> >>>>>>> >>>>>>> On Thu, Jul 10, 2014 at 6:08 PM, Ajay Yadav <ajayn...@gmail.com> >>>> wrote: >>>>>>> >>>>>>>> Thanks Srikanth and Venkatesh. >>>>>>>> >>>>>>>> I had looked at the UI and the graph database related code and I >>>> will >>>>>>> reuse >>>>>>>> existing code where ever available. I checked for compatibility >> of >>>>> each >>>>>>> of >>>>>>>> the software being used and they are all compatible with APL 2.0 >>>>>>> (Python, >>>>>>>> Django & Bootstrap). >>>>>>>> >>>>>>>> If you can assign the task to me on JIRA also, it will be >>>>>>>> great(user:ajayyadava) Also, I got the balsamiq account for >>>>>>> falcon(thanks >>>>>>>> Srikant) and I will be asking all my questions on mocks there. >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> On Thu, Jul 10, 2014 at 2:45 PM, Seetharam Venkatesh < >>>>>>>> venkat...@innerzeal.com> wrote: >>>>>>>> >>>>>>>>> Welcome aboard Ajay. Please let us know how we can help you to >>> get >>>>> up >>>>>>> and >>>>>>>>> running on this. The REST APIs are documented at: >>>>>>>>> >>> http://falcon.incubator.apache.org/docs/restapi/ResourceList.html >>>>>>>>> >>>>>>>>> Thanks! >>>>>>>>> >>>>>>>>> >>>>>>>>> On Thu, Jul 10, 2014 at 7:12 AM, Ajay Yadav < >> ajayn...@gmail.com >>>> >>>>>>> wrote: >>>>>>>>> >>>>>>>>>> Hi, >>>>>>>>>> >>>>>>>>>> I would like to volunteer for >>>>>>>>>> https://issues.apache.org/jira/browse/FALCON-37 >>>>>>>>>> >>>>>>>>>> I have more than 7 years of experience in building >> websites. I >>>>> have >>>>>>>>>> experience in both client side >>>>>>> technologies(javascript/HTML5/Bootstrap >>>>>>>>>> etc.) and server side technologies(Python/Django). >>>>>>>>>> >>>>>>>>>> I will need some help with iterating on the mocks as they >>> don't >>>>>>> seem to >>>>>>>>> be >>>>>>>>>> complete. I spent couple of hours on building a couple of >>> pages >>>>>>> using >>>>>>>>>> "dummy" data to get an idea of what all APIs are required. >>>> Please >>>>>>> find >>>>>>>>> them >>>>>>>>>> attached. They are just a quick and dirty prototype and UI >> is >>>>> pretty >>>>>>>> raw >>>>>>>>> as >>>>>>>>>> of now, to get quick feedback. I used Django,HTML5 & >>> Bootstrap. >>>>>>>>>> >>>>>>>>>> Please let me know if I can own this task. >>>>>>>>>> >>>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> -- >>>>>>>>> Regards, >>>>>>>>> Venkatesh >>>>>>>>> >>>>>>>>> “Perfection (in design) is achieved not when there is nothing >>> more >>>>> to >>>>>>>> add, >>>>>>>>> but rather when there is nothing more to take away.” >>>>>>>>> - Antoine de Saint-Exupéry >>>>>>>>> >>>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> -- >>>>>>> Regards, >>>>>>> Venkatesh >>>>>>> >>>>>>> “Perfection (in design) is achieved not when there is nothing more >>> to >>>>> add, >>>>>>> but rather when there is nothing more to take away.” >>>>>>> - Antoine de Saint-Exupéry >>>>>>> >>>>>> >>>>>> >>>>> >>>> >>>> -- >>>> CONFIDENTIALITY NOTICE >>>> NOTICE: This message is intended for the use of the individual or >> entity >>> to >>>> which it is addressed and may contain information that is confidential, >>>> privileged and exempt from disclosure under applicable law. If the >> reader >>>> of this message is not the intended recipient, you are hereby notified >>> that >>>> any printing, copying, dissemination, distribution, disclosure or >>>> forwarding of this communication is strictly prohibited. If you have >>>> received this communication in error, please contact the sender >>> immediately >>>> and delete it from your system. Thank You. >>>> >>> >> >> -- >> CONFIDENTIALITY NOTICE >> NOTICE: This message is intended for the use of the individual or entity to >> which it is addressed and may contain information that is confidential, >> privileged and exempt from disclosure under applicable law. If the reader >> of this message is not the intended recipient, you are hereby notified that >> any printing, copying, dissemination, distribution, disclosure or >> forwarding of this communication is strictly prohibited. If you have >> received this communication in error, please contact the sender immediately >> and delete it from your system. Thank You. >> > > > > -- > Regards, > Venkatesh > > “Perfection (in design) is achieved not when there is nothing more to add, > but rather when there is nothing more to take away.” > - Antoine de Saint-Exupéry