Hi guys I've been away for a while so my input maybe a bit behind the curve. Having said that, I have some useful Bootstrap-with-Ofbiz experience under the belt which may be relevant to this discussion: 1. Bootstrap is mainly CSS. It's pretty, but with limited JavaScript functionality. In-fact JS in Bootstrap is entirely optional because it doesn't pretend to be a JS Framework. 2. You will be required to mine 3rd party plugins/widgets to cover functionalities absent from Bootstrap - and those may not be well-maintained. Risky! 3. Autocomplete and Date Picking functions specifically - frequently used in Ofbiz, but not "native" in Bootstrap. This sometimes leads to all manner of conflicts and complicates manageability.
If your only criteria for Bootstrap is grid-layout capabilities, consider that grid is quite easily attainable with pure CSS through the @media selector used with break points. Secondly, "Grid" will become a standard in CSS (see https://www.w3.org/TR/css-grid-2/). The investment in a "framework" for "Grid" only - that's an overkill. My 2 Cents: 1. How about jQuery Mobile(JQM)? It's part of the jQuery family. We already use jQuery as JavaScript framework, to use JQM would be a logical extension. 2. JQM covers SPA - an important functionality identified by some in this thread. 3. JQM fits in nicely with jQuery UI - something which we are already using in Ofbiz with autocomplete/suggest, date picking and modals. Final thoughts - Cleaner separation between JS and Freemarker using HTML elements: 1. We are not using new outlining and sectioning elements like <section>, <article>, <nav>, <header>, <footer>, or <aside> in our templates. They hold obvious advantages. 2. Global data-* attributes. We're not using this at all. It can help us to reduce JS in Freemarker templates. Regards Gavin On Mon, May 21, 2018 at 5:17 AM, Shi Jinghai <huaru...@hotmail.com> wrote: > +1. > > Excellent. > > -----邮件原件----- > 发件人: Taher Alkhateeb [mailto:slidingfilame...@gmail.com] > 发送时间: 2018年5月20日 2:31 > 收件人: OFBIZ Development Mailing List > 主题: Re: [Discussion] Introduction of Bootstrap and Vue.js > > This was a thought provoking and interesting discussion and I learned > new stuff from it, so thank you all for your valuable input. > > On further reflection and after thinking about your comments, I think > Vue.js would be influenced in its design if we have a REST API in > place, however, something like Bootstrap is not relevant because it is > just a pure CSS / Javascript library to offer a grid system and some > user interface widgets. It has no model to bind to nor does it require > any back-end traffic (SPA stuff). > > So I recommend proceeding with Bootstrap, and we can delay something > like Vue.js while we proceed in implementing the Web Services API. > I'll start or find another thread for that discussion. > > WDYT? > > On Fri, May 18, 2018 at 10:43 AM, innate Genius > <innate.pass...@gmail.com> wrote: > > Hi, > > > > +1 For Jacques, Scot & Rajesh’s View Point. > > > >> "I feel most of the modern UI frameworks consume JSON and > >> if we have yet another adapter to the rich catalog of WebServices > >> ( in addition to XML/RPC and SOAP) it shall benefit both UI developers > >> and > >> system integrators / framework users." > > > > This is been discussed in few other threads but this is a issue that is > long due. And would love to see the community to finally address this. > > > > @Taher: Webservice to consume JSON would be the most beneficial and > desired enhancement to the framework. > > > > Thx & Rgds, > > > > Pratiek > > > >> On 17-May-2018, at 9:27 PM, Rajesh Mallah <mallah.raj...@gmail.com> > wrote: > >> > >> Hi List , > >> > >> The default UI of OFBiz does look aged but I feel it does a great job > >> of being productive. As discussed before also ERP being a serious > >> backroom software and mostly operated by staff to whom all the bells > >> and whistles of modern frameworks may not make any difference. > >> > >> But since adoption of OFBiz to enterprises is dependent on decision > makers/ > >> influencer who may not even know the nuances of UI and its relation to > >> productivity it is important to look modern and shiny and which is the > >> reason of > >> this thread by Mr. Taher. > >> > >> > >> Hence IMHO its good and required for OFBiz. > >> > >> At the same time we need to increase the comfort level of system > integrators > >> and people who use ofbiz as a framework. > >> > >> I feel most of the modern UI frameworks consume JSON and > >> if we have yet another adapter to the rich catalog of WebServices > >> ( in addition to XML/RPC and SOAP) it shall benefit both UI developers > >> and > >> system integrators / framework users. > >> > >> I also humbly feel while this modernization is done, the existing > interface > >> should > >> not be done away with as people develop very strange and innovative > comfort > >> zones with software UIs which are difficult to anticipate by developers. > >> > >> my 2cents. > >> > >> > >> regds > >> mallah. > >> > >> > >> On Wed, May 16, 2018 at 5:30 PM, Jacques Le Roux < > >> jacques.le.r...@les7arts.com> wrote: > >> > >>> Hi Scott, Taher, > >>> > >>> I think you are both right, and maybe because you are mostly working > for 2 > >>> different markets or have different types of clients. > >>> > >>> Anyway, what I mean is: > >>> > >>> 1. Form widgets are not of much use when you have to deploy a new UI > for > >>> an ecommerce or alike project (frontend). > >>> 2. They are very useful when you are working on a backend project (ie > ERP > >>> part) where people don't care much about bells and whistle (even if > that's > >>> less and less happening) but want a fast ROI ("time-to-market > reasons" > >>> as said Taher) > >>> > >>> I don't know if Mathieu will get enough time to succeed on his project. > >>> But obviously if we had the possibility to generate RESTful web > services > >>> from OFBiz services, with the export attribute like for SOAP and RMI, > then > >>> Scott's idea would be fulfilled and that would help much, not only in > the > >>> UI area of course. > >>> > >>> Now for widgets, the form part could maybe slowly replaced by using > tools > >>> like Bootstrap and Vue.js. Or the new flavor in some years and that > must be > >>> very seriously taken into account to not have to redo it again, in few > >>> years... > >>> > >>> Jacques > >>> > >>> > >>> > >>> Le 15/05/2018 à 12:18, Taher Alkhateeb a écrit : > >>> > >>>> Ahhh, I understand clearly now. Thank you! > >>>> > >>>> So more or less, the heart of your message as I understand it is that > >>>> we should decouple the rendering of the user interface from data > >>>> fetching and manipulation. This makes perfect sense and is a good > >>>> strategy. > >>>> > >>>> A bit contrary to your experience though, most of our work relies > >>>> heavily on the widget system for time-to-market reasons. It has been > >>>> immensely beneficial to get something out the door quickly. However, > >>>> of course the system falls short when it comes to heavy customizations > >>>> or the need to integrate with other systems. > >>>> > >>>> So I would suggest that perhaps your comment in this thread that > >>>> "having prebuilt APIs would have reduced the workload" is applicable > >>>> in case of custom work. Otherwise, perhaps the faster route is through > >>>> the widget system. Therefore I think it is reasonable to apply both > >>>> strategies: 1) use good modern UI tools 2) build powerful flexible web > >>>> APIs. But for standard screens, I see no reason to use web service > >>>> calls instead of <action>...</action> tags to do quick and obvious > >>>> things unless perhaps you make the web API call part of the widget > >>>> system itself (also a good idea!) > >>>> > >>>> Anyway, you're making me think more seriously of pushing forward the > >>>> implementation of web services, but I think introducing these > >>>> frameworks is going to be beneficial either way. > >>>> > >>>> On Tue, May 15, 2018 at 12:44 PM, Scott Gray > >>>> <scott.g...@hotwaxsystems.com> wrote: > >>>> > >>>>> Hi Taher, > >>>>> > >>>>> I'm simply saying that if we were to provide a complete suite web > APIs to > >>>>> access the full functionality of ofbiz, then the project's choice of > UI > >>>>> technology no longer matters so much in the grand scheme of things. > No > >>>>> one > >>>>> would be forced to live by our choice of UI frameworks because they > could > >>>>> build anything they liked using the APIs without ever touching the > >>>>> server-side code. > >>>>> > >>>>> Right now our data gathering logic is tightly coupled to our UI, > >>>>> inaccessible to other servers and apps, the vast majority of our > services > >>>>> are built to be run internally by ofbiz. Without heavy modification > of > >>>>> the > >>>>> server side code, I can't build a custom SPA, I can't send orders to > >>>>> ofbiz > >>>>> from another application, I can't really do anything without > interacting > >>>>> with the OFBiz UI. > >>>>> > >>>>> The majority of the client projects I've worked on always involve a > >>>>> completely custom UI and with web APIs I could pick up any flavor of > the > >>>>> month UI framework to build it with. > >>>>> > >>>>> All I'm trying to add to this conversation is that it would be nice > if > >>>>> any > >>>>> UI overhaul started with making APIs available that could be used > both by > >>>>> our framework of choice and be externally accessible to anyone else's > >>>>> framework of choice. > >>>>> > >>>>> Regards > >>>>> Scott > >>>>> > >>>>> > >>>>> On Tue, 15 May 2018, 20:27 Taher Alkhateeb, < > slidingfilame...@gmail.com> > >>>>> wrote: > >>>>> > >>>>> Hi Scott, > >>>>>> > >>>>>> Again thank you for the input, intriguing. I'm not sure if I fully > >>>>>> understand though. Are you saying we can introduce web services > that can > >>>>>> sort of do away with the widget system to code directly in html and > >>>>>> weaving > >>>>>> in web service calls? How does that make coding faster? What is > >>>>>> inefficient > >>>>>> in the widget system? What kind of architecture should we have in > place? > >>>>>> What is the routing workflow that you're suggesting? > >>>>>> > >>>>>> I would appreciate a bit more elaboration to get a better > understanding > >>>>>> of > >>>>>> your point of view since this seems to be a critical architectural > >>>>>> decision. > >>>>>> > >>>>>> > >>>>>> On Mon, May 14, 2018, 9:39 PM Scott Gray < > scott.g...@hotwaxsystems.com> > >>>>>> wrote: > >>>>>> > >>>>>> On Mon, 14 May 2018, 20:38 Taher Alkhateeb, < > slidingfilame...@gmail.com > >>>>>>>> > >>>>>>> wrote: > >>>>>>> > >>>>>>> Hello Scott, thank you for your thoughts, inline ... > >>>>>>>> > >>>>>>>> On Mon, May 14, 2018 at 10:45 AM, Scott Gray > >>>>>>>> <scott.g...@hotwaxsystems.com> wrote: > >>>>>>>> > >>>>>>>>> I think no matter what we use someone will always want something > >>>>>>>>> > >>>>>>>> different. > >>>>>>>> > >>>>>>>>> I'm beginning to lose count of the number of custom APIs I've > written > >>>>>>>>> > >>>>>>>> over > >>>>>>>> > >>>>>>>>> the years to support custom UIs. > >>>>>>>>> > >>>>>>>>> I think the bigger win would be to start providing APIs and > rewriting > >>>>>>>>> > >>>>>>>> our > >>>>>>> > >>>>>>>> existing screens to use them. From there we could start looking at > >>>>>>>>> > >>>>>>>> new > >>>>>> > >>>>>>> UI > >>>>>>> > >>>>>>>> frameworks. > >>>>>>>>> > >>>>>>>> Do you mean by APIs rewriting our XSD files and model objects? Why > >>>>>>>> rewrite? Why not just enhance them for new / missing > functionality? > >>>>>>>> What are the flaws you'd like to redesign? > >>>>>>>> > >>>>>>>> No, I'm talking about web services. With well designed web > services > >>>>>>> > >>>>>> custom > >>>>>> > >>>>>>> projects would be able to build out new user interfaces in a lot > less > >>>>>>> > >>>>>> time > >>>>>> > >>>>>>> and we'd be able to poc new interfaces for the community project > >>>>>>> without > >>>>>>> even touching the existing codebase. > >>>>>>> > >>>>>>> > >>>>>>> Most of the projects I've worked on have needed huge amounts of UI > >>>>>>>>> customization and having prebuilt APIs would have reduced the > >>>>>>>>> > >>>>>>>> workload > >>>>>> > >>>>>>> much > >>>>>>>> > >>>>>>>>> more than having a shinier UI that still needs to be completely > >>>>>>>>> > >>>>>>>> rewritten, > >>>>>>>> > >>>>>>>>> although I'll admit the latter would probably help the sales > process. > >>>>>>>>> > >>>>>>>> The "shiny" part is a plus, but not the core of my suggestion. The > >>>>>>>> reasons I suggested these libraries are: > >>>>>>>> - bootstrap: the grid system, this is the cake for me. You have a > >>>>>>>> powerful responsive grid system for better layouts. The buttons, > >>>>>>>> tables and other bling bling are icing on the cake. > >>>>>>>> - Vue: The core of this technology is to allow binding of your > context > >>>>>>>> model to the DOM so that you don't write oodles of JavaScript and > >>>>>>>> Jquery to create dynamic behavior. It's really old school in 2018 > to > >>>>>>>> keep jumping between many pages to get something done. > >>>>>>>> > >>>>>>>> Does it not worry anyone else that our service engine still only > >>>>>>>>> > >>>>>>>> defines > >>>>>>> > >>>>>>>> a > >>>>>>>> > >>>>>>>>> basic map for in/out parameters when the rest of the world is > using > >>>>>>>>> > >>>>>>>> the > >>>>>> > >>>>>>> likes of swagger and restful APIs? > >>>>>>>>> > >>>>>>>> Of course it worries me, and if you start an initiative I will be > the > >>>>>>>> first to jump in and volunteer. In fact it's on my todo list, and > I > >>>>>>>> was looking at multiple options lately and I'm very attracted to > >>>>>>>> GraphQL for example because of the reduced visits to the backend. > >>>>>>>> However, I don't see this as being related to my proposal here, > I'm > >>>>>>>> just setting my own priorities of what to work on next. What's > wrong > >>>>>>>> with starting _both_ initiatives for that matter? > >>>>>>>> > >>>>>>>> Nothing is wrong with both, but as you pointed out many > discussions > >>>>>>> and > >>>>>>> efforts have begun and then floundered. I'm simply offering some > >>>>>>> thoughts > >>>>>>> on where I see the most potential benefit from a large scale > effort. > >>>>>>> > >>>>>>> > >>>>>>> Regards > >>>>>>>>> Scott > >>>>>>>>> > >>>>>>>>> On Sun, 13 May 2018, 06:03 Taher Alkhateeb, < > >>>>>>>>> > >>>>>>>> slidingfilame...@gmail.com> > >>>>>>> > >>>>>>>> wrote: > >>>>>>>>> > >>>>>>>>> Hello Everyone, > >>>>>>>>>> > >>>>>>>>>> Recently, we at Pythys had some interactions with clients, and > the > >>>>>>>>>> user interface proved to be a sour point. It is functioning > well, > >>>>>>>>>> > >>>>>>>>> but > >>>>>> > >>>>>>> looks too classic, too rigid, too 2000s really :) We had many > >>>>>>>>>> discussion and attempts in the past like [1] [2] [3] [4] [5] > [6] [7] > >>>>>>>>>> [8] [9] [10] just to name a few all of which seemed not to > follow > >>>>>>>>>> through. > >>>>>>>>>> > >>>>>>>>>> So what is the problem? Why is this hard to get right? I'm not > sure > >>>>>>>>>> > >>>>>>>>> I > >>>>>> > >>>>>>> have the magic answer, but it seems to me like part of the problem > >>>>>>>>>> > >>>>>>>>> is > >>>>>> > >>>>>>> simply .. TOO BIG > >>>>>>>>>> > >>>>>>>>>> So I was thinking about a possible solution, and after some > initial > >>>>>>>>>> research, I think maybe the solution (like everything else) > needs to > >>>>>>>>>> be slow, incremental and evolutionary rather than > revolutionary. So > >>>>>>>>>> > >>>>>>>>> I > >>>>>> > >>>>>>> am suggesting the following ideas to try and move forward: > >>>>>>>>>> > >>>>>>>>>> - We include the assets for Bootstrap in the common theme. > Bootstrap > >>>>>>>>>> will give us the Grid system which allows for a responsive > website > >>>>>>>>>> that works on all devices, it will also give us beautiful > widgets to > >>>>>>>>>> work with. > >>>>>>>>>> - We include Vue.js assets in the common theme. Vue.js is an > >>>>>>>>>> > >>>>>>>>> excellent > >>>>>> > >>>>>>> framework for creating Single Page Applications (SPAs) to give > >>>>>>>>>> > >>>>>>>>> dynamic > >>>>>> > >>>>>>> behavior to our pages and create ajax-heavy pages > >>>>>>>>>> - We slowly migrate our old CSS to bootstrap constructs. We can > >>>>>>>>>> > >>>>>>>>> begin > >>>>>> > >>>>>>> for example by replacing our menus, then tables, then headers, then > >>>>>>>>>> buttons etc .. > >>>>>>>>>> - We slowly introduce dynamic screens using controller logic in > >>>>>>>>>> > >>>>>>>>> Vue.js > >>>>>> > >>>>>>> - We slowly update our macro library to migrate to the above > >>>>>>>>>> > >>>>>>>>> mentioned > >>>>>> > >>>>>>> libraries and widgets > >>>>>>>>>> - We do all of this live in Trunk, without branching. This means > >>>>>>>>>> > >>>>>>>>> that > >>>>>> > >>>>>>> for some period of time, there will be transitional code (a little > >>>>>>>>>> > >>>>>>>>> bit > >>>>>> > >>>>>>> of bootstrap and a little bit of our current code) > >>>>>>>>>> > >>>>>>>>>> We can start with an initial proof of concept skeleton, and if > that > >>>>>>>>>> gets consensus, then we can move forward with a full > implementation > >>>>>>>>>> > >>>>>>>>> in > >>>>>> > >>>>>>> trunk. I think this issue is many years over due. Our interface > >>>>>>>>>> > >>>>>>>>> looks > >>>>>> > >>>>>>> oooooooooooooold and really needs a face lift. > >>>>>>>>>> > >>>>>>>>>> What do you think? Ideas? Suggestions? > >>>>>>>>>> > >>>>>>>>>> [1] https://s.apache.org/rf94 > >>>>>>>>>> [2] https://s.apache.org/g5zr > >>>>>>>>>> [3] https://s.apache.org/XpBO > >>>>>>>>>> [4] https://s.apache.org/YIL1 > >>>>>>>>>> [5] https://s.apache.org/836D > >>>>>>>>>> [6] https://s.apache.org/DhyB > >>>>>>>>>> [7] https://s.apache.org/Lv9E > >>>>>>>>>> [8] https://s.apache.org/zKIo > >>>>>>>>>> [9] https://s.apache.org/D6jx > >>>>>>>>>> [10] https://issues.apache.org/jira/browse/OFBIZ-5840 > >>>>>>>>>> > >>>>>>>>>> > >>> > > >