james-server-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Eric Charles <e...@apache.org>
Subject Re: [GSOC2012] Hupa evolution
Date Thu, 19 Apr 2012 08:38:45 GMT
Hi Manolo,

Thx a lot for the detailed information.

- On the decoupling: I like gwt-dispatch, but was thinking to still 
further decouple stuff in separate module independent of any http/gwt/...

- Direct access to james mailbox will be killer, but efficient imap 
client service is still needed for non-james users (I have in my 
bookmarks 
https://github.com/dhanji/sitebricks/tree/master/sitebricks-mail which 
support oauth2...)

- mailbox-imap would be a cool module :)

- About the client side, I work since 5 months on a GWT project and I 
made stuff I couldn't have done with any other web technology, so you 
won't have to convince a prayer ;). We now use also separate module for 
client, shared and server, but important, we put our business logic in 
other modules agnostic from any presentation.

Thx again,

Eric

On 04/19/2012 09:48 AM, Manuel Carrasco Moñino wrote:
> Hi Eric,
>
> Actually hupa has everything decoupled, this is the reason why we use MVP
> and Command patterns.
> Let me explain how hupa is designed, and why the imap latency your realize.
>
> - Server side
> Everything in server-side is agnostic about the client-side (browser), we
> use handlers for each service and they are very well unit tested. We offer
> those services via ajax, rigth now with a gwt-dispatch servlet, although we
> could easily add other servlets to allow rpc via ajax (json) for non-gwt
> client applications.
> The main problem now in the server side is that we are not doing imap
> caching nor we access directly to the mailbox.
> So each time a user interacts with the ui, hupa have to ask the imap-server
> and download headers or messages just in case (this is very expensive in
> far-off imap servers like gmail, large inboxes or messages with
> attachments).
>
> I have in mind to use directly the james mailbox instead of imap, this
> should increase considerably the performance like gmail does with
> mailboxes.
> Even we could have a mailbox implementation in James which could be an
> imap/pop client  (something like fetchmail) and it should be feasible that
> a user in James could configure other mail sources (like gmail does)
>
> There are many things to do in the server side though, think that we just
> have coded a simple imap client so as we could develop faster the visual
> part.
>
> - Client side
> It is gwt, so everything is converted into javascript resulting a pure
> desktop-like app made with javascript which requests services via ajax to
> the server. Note that we don't have any jsp parser not html generator.
>
> The goal of using gwt is that instead of coding in javascript (jquery +
> plugins + widgets etc) we code in Java, so as we can take advantage of the
> full java ecosystem: first we have a featured IDE (refactoring, coverage,
> javadoc...), second a way to decouple code modules using libs and maven
> dependencies, and finally we can use real patterns and object oriented
> programing because of java.
>
> The main pattern we use in client side is MVP (model-view-presenter) with
> allows completely decouple the views from the client-application logic, so
> as we can mock the view and test every single method (including the ajax
> dialog with the server).
> With this pattern, testing does not need to start a servlet container so as
> we can run integration tests very fast.
>
> Instead of using ajax json or xml, and because the server side is java, we
> use a special ajax serialization which comes with gwt, so as we can use the
> same objects in both server and client sides (here we use the command
> pattern).
>
> We have a set of very simple views styled with css, but we could enrich
> them very easily either using css3 or replacing with more rich widgets like
> gxt, smartgwt, etc.
>
> Of course, like you say, we could replace gwt by any other approach to
> build a web application, in this case the only reusable part is the imap
> client in the server part. But this is a very small part of the all the
> Hupa code.
> What we pretended with hupa is to develop a very rich desktop-like app to
> run in the browser, the only way to do that is using profusely javascript
> (apart from java applets, flash, etc). There are many technologies to do
> that:
> 1.- codding javascript by hand (you have js libraries like jquery with
> makes the work easier.
> 2.- using java and converting it to js using gwt-compiler (there is also a
> scala to js compiler)
> 3.- using frameworks like jsf-2, rails, grails, lift, etc which injects
> javascript portions into html templates.
>
> Based in my experience,
> #1 You have full control over the generated js, but you need good skills in
> js (most people who uses js tend to copy pieces from here and there) and
> deep knowledge of obfuscation and compression js tools to produce  good
> performance apps.
> #2 There is a learning curve to understand well that your java code wont be
> run in a jvm but in a browser, but the IDE helps a lot and gwt-compiler
> will take care of generating good quality js (optimized, reduced, etc).
> #3 It's very good for traditional apps based on a page per view with some
> kind of ajax to update, edit, etc. But when you want a
> single-page-application, sooner than later you have to deal with
> javascript.
>
>
> I hope this clarifies a bit the architecture or Hupa.
>
> - Manolo
>
>
> On Thu, Apr 19, 2012 at 5:50 AM, Eric Charles<eric@apache.org>  wrote:
>
>> Hupa should also focus to decouple the 'services' from the 'ui'.
>>
>> If we have independent services for efficient IMAP mailbox read/write,
>> contact management, authentication/authorization..**. (name any), we can:
>>
>> 1.- Focus on those libraries without the ui concern - for example, my
>> current experience with hupa is that the mailboxes reading sometimes fails
>> due to (I think) latency,...
>>
>> 2.- Put any ui on top, GWT being the first developed, but any other one
>> could be further added.
>>
>> Thx,
>> Eric
>>
>>
>>
>> On 04/18/2012 05:20 PM, Manuel Carrasco Moñino wrote:
>>
>>> I've been taking a look to the demo, it looks pretty nice because of a
>>> good
>>> selection of css, I'll  deep into the code when I had a while.
>>>
>>> You can see Hupa in action in either servers:
>>> http://hupa.alcala.org (it's a shared server I use, it could be down
>>> sometimes)
>>> http://james.zones.apache.org  (it's a recent instance deployed in the
>>> James jail server).
>>>
>>> In order to use hupa you have to login with any gmail user (previously you
>>> have to enable imap in that user).
>>>
>>> - Manolo
>>>
>>> On Wed, Apr 18, 2012 at 3:44 PM, Ioan Eugen Stan<stan.ieugen@gmail.com>**
>>> wrote:
>>>
>>>   Hi Dhurbo, Manolo,
>>>>
>>>> I think the developer doing the work should choose whatever platform
>>>> he is most comfortable with. Good code has to come out of his hands
>>>> and comfort aids that. Having both with be great (but most likely hard
>>>> to maintain in the long run).
>>>>
>>>> As a user I would like to see something usable that looks nice. I
>>>> wouldn't care if it where implemented in a specific platform.
>>>>
>>>> MyFaces mailbox demo looks very nice. I haven't checked Hupa demo (I
>>>> know Manolo has one installed, but I don't have a gmail test account
>>>> and I didn't see any SSL), maybe we should have a mocked HUPA install
>>>> like MyFaces one available online. I wonder what it will take to do
>>>> that?
>>>>
>>>> My cents ;).
>>>> Cheers,
>>>>
>>>> 2012/4/18 Dhrubo<dhrubo.kayal@gmail.com>**:
>>>>
>>>>> Manolo -
>>>>> Primefaces Mailbox template ---
>>>>> http://www.primefaces.org/**showcase-labs/ui/**layoutMailbox.jsf<http://www.primefaces.org/showcase-labs/ui/layoutMailbox.jsf>
>>>>>
>>>>> Its basic but good starting point. They have very rich component suite
>>>>>
>>>> also
>>>>
>>>>> you can look into Primefaces extensions for more layouts and Rich editor
>>>>> support besides what is provided by Primefaces itself.
>>>>> The extensions project is hosted here -
>>>>> http://code.google.com/p/**primefaces-extensions/<http://code.google.com/p/primefaces-extensions/>
>>>>>
>>>>> They also have their entire showcase online.
>>>>>
>>>>> Slight deviation - following the principles of Zimbra we can easily
>>>>> (hopefully) we can turn this webmail app into a desktop app like MS
>>>>>
>>>> OUTLOOK
>>>>
>>>>> or Thunderbird by embeding Jetty with Mozilla Prism (is it a dead
>>>>>
>>>> project i
>>>>
>>>>> guess) or some kind of XULRunner.
>>>>>
>>>>> Also I am available for any consultancy or help on Primefaces, JSF 2,
>>>>> Spring. I can also do lot of  development as well provided I have a
>>>>>
>>>> commit
>>>>
>>>>> privilege on SVN :) . One big advantage I see using JSF 2 is modular
app
>>>>> development. Please check this link -
>>>>> https://community.jboss.org/**wiki/ModularWebAppsWithJSF2?_**sscc=t<https://community.jboss.org/wiki/ModularWebAppsWithJSF2?_sscc=t>
>>>>>
>>>>> This can be further extended with Spring and Ant style configuration.
>>>>>
>>>>>
>>>>> On Wed, Apr 18, 2012 at 3:37 PM, Manuel Carrasco Moñino
>>>>> <manolo@apache.org>wrote:
>>>>>
>>>>>   Dhrubo, Is there a site running the the webmail example of primefaces?,
>>>>>>
>>>>> or
>>>>
>>>>> is there a way to download the .war file?, I'd like to take a look.
>>>>>>
>>>>>> Thanks
>>>>>> - Manolo
>>>>>>
>>>>>> On Wed, Apr 18, 2012 at 9:41 AM, Dhrubo<dhrubo.kayal@gmail.com>
>>>>>>   wrote:
>>>>>>
>>>>>>   I do not intend to launch a debate on GWT v JSF 2. But JSF 2 is
the
>>>>>>>
>>>>>> JEE
>>>>
>>>>> standard for UI and Primefaces comes with sample layout for webmail
>>>>>>>
>>>>>> which
>>>>
>>>>> may help you get started very fast.
>>>>>>>
>>>>>>> On Wed, Apr 18, 2012 at 12:37 PM, Dhrubo<dhrubo.kayal@gmail.com>
>>>>>>>
>>>>>> wrote:
>>>>
>>>>>
>>>>>>>   These days with JSF 2 frameworks like Primefaces et all we
do not
>>>>>>>>
>>>>>>> really
>>>>>>
>>>>>>> need any js , ajax is out of the box and we need little html
know
>>>>>>>>
>>>>>>> how
>>>>
>>>>> too.
>>>>>>>
>>>>>>>> Also they come with more than standard layouts and theme
support.
>>>>>>>>
>>>>>>>> James being an Apache product and Apache also develops JSF
2 imp, we
>>>>>>>> should use JSF 2 with easiest and huge set of components
like in
>>>>>>>>
>>>>>>> Primefaces
>>>>>>>
>>>>>>>> which is excellent documented highly active community.
>>>>>>>>
>>>>>>>> So my two cents
>>>>>>>> +1 Primefaces
>>>>>>>> -1 GWT
>>>>>>>>
>>>>>>>> Please note I have no affiliation or neither work for Prime
>>>>>>>>
>>>>>>> Teknoloji
>>>>
>>>>> :)
>>>>>>
>>>>>>>
>>>>>>>>
>>>>>>>> On Wed, Apr 18, 2012 at 12:29 PM, Manuel Carrasco Moñino<
>>>>>>>> manolo@apache.org>   wrote:
>>>>>>>>
>>>>>>>>   -1  JSF2
>>>>>>>>> +1 GWT
>>>>>>>>>
>>>>>>>>> Like JSF2, GWT is a proved technology, open sourced,
and apache-2
>>>>>>>>> licensed.
>>>>>>>>>
>>>>>>>>> GWT adds a set of benefices to James, mainly we continue
being java
>>>>>>>>> centric
>>>>>>>>> and we dont need serious javascript, ajax nor html skills
to
>>>>>>>>>
>>>>>>>> understand
>>>>>>
>>>>>>> the
>>>>>>>>> project, secondly we can deliver a product which is unit
tested and
>>>>>>>>> javadoc-ed in all its components.
>>>>>>>>>
>>>>>>>>> I don't want to expose the benefices of developing large
rich apps
>>>>>>>>>
>>>>>>>> with
>>>>>>
>>>>>>> gwt
>>>>>>>>> vs hand-written js because there is a lot of literature
along the
>>>>>>>>>
>>>>>>>> web.
>>>>
>>>>>
>>>>>>>>> - Manolo
>>>>>>>>>
>>>>>>>>> On Fri, Apr 13, 2012 at 6:05 AM, Dhrubo<dhrubo.kayal@gmail.com>
>>>>>>>>>
>>>>>>>> wrote:
>>>>>>
>>>>>>>
>>>>>>>>>   I think we should move to JSF 2 than GWT which is mostly
>>>>>>>>>>
>>>>>>>>> controlled
>>>>
>>>>> by
>>>>>>
>>>>>>> one
>>>>>>>>>
>>>>>>>>>> company.
>>>>>>>>>> Apache with its vision and endeavor for OSS  we should
use - JSF
>>>>>>>>>>
>>>>>>>>> 2 -
>>>>
>>>>> Tomahawk (or Mojarra) + Primefaces
>>>>>>>>>>
>>>>>>>>>> On Thu, Apr 12, 2012 at 6:37 PM, Ioan Eugen Stan<
>>>>>>>>>>
>>>>>>>>> stan.ieugen@gmail.com
>>>>>>>
>>>>>>>> wrote:
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>   Pe 11.04.2012 18:48, echo a scris:
>>>>>>>>>>>
>>>>>>>>>>>   Hi Manolo
>>>>>>>>>>>> Very glad to see your reply. The reason why
I want to choose
>>>>>>>>>>>>
>>>>>>>>>>> the
>>>>
>>>>> gwt-platform
>>>>>>>>>>>> was that it is more smoothly to update from
current Hupa's
>>>>>>>>>>>> state(gwt-presenter).
>>>>>>>>>>>> However, I like the native one rather than
gwtp since it will
>>>>>>>>>>>>
>>>>>>>>>>> import
>>>>>>>
>>>>>>>> the
>>>>>>>>>
>>>>>>>>>> other
>>>>>>>>>>>> resources. What I really want to do is to
replace the MVP by
>>>>>>>>>>>>
>>>>>>>>>>> gwt
>>>>
>>>>> itself.
>>>>>>>>>
>>>>>>>>>> I was
>>>>>>>>>>>> just afraid whether I can complete the proposal
before the
>>>>>>>>>>>>
>>>>>>>>>>> deadline
>>>>>>
>>>>>>> of
>>>>>>>>>
>>>>>>>>>> GSoC, so
>>>>>>>>>>>> I asked for you advices. If possible, I want
to use the core
>>>>>>>>>>>>
>>>>>>>>>>> mvp
>>>>
>>>>> in
>>>>>>
>>>>>>> gwt
>>>>>>>>>
>>>>>>>>>> to
>>>>>>>>>>
>>>>>>>>>>> realize it. Over these days, I have been researching
the Hupa
>>>>>>>>>>>>
>>>>>>>>>>> project
>>>>>>>
>>>>>>>> and
>>>>>>>>>>
>>>>>>>>>>> GWT
>>>>>>>>>>>> technology and later on I want to show you
something I am
>>>>>>>>>>>>
>>>>>>>>>>> changing.
>>>>>>
>>>>>>> To the new features, I would like to implement as many
>>>>>>>>>>>>
>>>>>>>>>>> features,
>>>>
>>>>> that a
>>>>>>>>>
>>>>>>>>>> current
>>>>>>>>>>>> email client should have,  as possible not
only during the
>>>>>>>>>>>>
>>>>>>>>>>> GSoC
>>>>
>>>>> period,
>>>>>>>>>
>>>>>>>>>> but also
>>>>>>>>>>>> after that. And I am also keeping my eyes
open on the Hupa's
>>>>>>>>>>>>
>>>>>>>>>>> JIRA,
>>>>>>
>>>>>>> where
>>>>>>>>>
>>>>>>>>>> some
>>>>>>>>>>>> wonderful ideas come out gradually. Sure
I will give my deeper
>>>>>>>>>>>> discription after
>>>>>>>>>>>> my researching. I don't think it will be
late.
>>>>>>>>>>>> Thanks a lot :)
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> Wish you a happy
>>>>>>>>>>>>
>>>>>>>>>>>>    Hi Echo
>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>   I've been reading your application
and it looks right to me.
>>>>>>>>>>>>>   One thing I see is that you have selected
gwt-platform
>>>>>>>>>>>>>
>>>>>>>>>>>> instead
>>>>
>>>>> of
>>>>>>
>>>>>>> the
>>>>>>>>>
>>>>>>>>>>   core mvp in gwt but you don't say any reason about
why you
>>>>>>>>>>>>>
>>>>>>>>>>>> prefer
>>>>>>
>>>>>>> the
>>>>>>>>>
>>>>>>>>>>   first option.
>>>>>>>>>>>>>   Also I'd like a deeper description
of how you pretend to
>>>>>>>>>>>>>
>>>>>>>>>>>> face
>>>>
>>>>> new
>>>>>>
>>>>>>>   features, I mean components, persistence, customization etc.
>>>>>>>>>>>>>
>>>>>>>>>>>>>   Cheers
>>>>>>>>>>>>>   - Manolo
>>>>>>>>>>>>>
>>>>>>>>>>>>>   --
>>>>>>>>>>>>>
>>>>>>>>>>>> cheers,
>>>>>>>>>>>> echo
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>   Hello Echo,
>>>>>>>>>>>
>>>>>>>>>>> Sound good. I'm not familiar with GWT and I would
like to know
>>>>>>>>>>>
>>>>>>>>>> more.
>>>>>>
>>>>>>> Good
>>>>>>>>>
>>>>>>>>>> luck with your research and send us the findings.
>>>>>>>>>>>
>>>>>>>>>>> Cheers.
>>>>>>>>>>>
>>>>>>>>>>> --
>>>>>>>>>>> Ioan Eugen Stan
>>>>>>>>>>> http://ieugen.blogspot.com
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>
>>>>>>>   ------------------------------****----------------------------**
>>>> --**---------
>>>>
>>>>> To unsubscribe, e-mail: server-dev-unsubscribe@james.****
>>>>>>>>>>>
>>>>>>>>>> apache.org
>>>>
>>>>> <
>>>>>>
>>>>>>> server-dev-unsubscribe@james.**apache.org<server-dev-unsubscribe@james.apache.org>
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>> For additional commands, e-mail: server-dev-help@james.apache.
>>>>>>>>>>>
>>>>>>>>>> **org<
>>>>>>>
>>>>>>>> server-dev-help@james.apache.**org<server-dev-help@james.apache.org>
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>>>> Kind Regards... Dhrubo
>>>>>>>>>>
>>>>>>>>>> <http://www.linkedin.com/in/**dhrubo<http://www.linkedin.com/in/dhrubo>
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>> Kind Regards... Dhrubo
>>>>>>>>
>>>>>>>> <http://www.linkedin.com/in/**dhrubo<http://www.linkedin.com/in/dhrubo>
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> Kind Regards... Dhrubo
>>>>>>>
>>>>>>> <http://www.linkedin.com/in/**dhrubo<http://www.linkedin.com/in/dhrubo>
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Kind Regards... Dhrubo
>>>>>
>>>>> <http://www.linkedin.com/in/**dhrubo<http://www.linkedin.com/in/dhrubo>
>>>>>>
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> Ioan Eugen Stan
>>>> http://ieugen.blogspot.com/
>>>>
>>>> ------------------------------**------------------------------**
>>>> ---------
>>>> To unsubscribe, e-mail: server-dev-unsubscribe@james.**apache.org<server-dev-unsubscribe@james.apache.org>
>>>> For additional commands, e-mail: server-dev-help@james.apache.**org<server-dev-help@james.apache.org>
>>>>
>>>>
>>>>
>>>
>> --
>> eric | http://about.echarles.net | @echarles
>>
>>
>> ------------------------------**------------------------------**---------
>> To unsubscribe, e-mail: server-dev-unsubscribe@james.**apache.org<server-dev-unsubscribe@james.apache.org>
>> For additional commands, e-mail: server-dev-help@james.apache.**org<server-dev-help@james.apache.org>
>>
>>
>

-- 
eric | http://about.echarles.net | @echarles

---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org


Mime
View raw message