Hi, Manolo
My "[GSOC2012] Hupa evolution" proposal has been updated in
http://www.google-melange.com/gsoc/proposal/review/google/gsoc2012/echo/1.
Could you give me some advices about it? If it looks Ok, I am gonna to
cope with some beginning stuff. If not, however, I will have to change
something through your suggests.
Many thanks for your consideration.
-Echo
On 03/30/2012 06:08 PM, Manuel Carrasco Moñino wrote:
Hi Echo
I'm CCing the mailing list because other developers could be
interested in these questions.
Proly you can not login into gmail because of either cacerts issues or
you have not enabled imap in your gmail account.
Yesterday, I committed a fix to the default config.properties removing
the 'TrustStore' line so as hupa can use the default java cacerts
file.
If you are using openjdk, you should check that cacerts file is complete.
There are several MVP articles, the one you say is a good start point.
There are different approaches of how implement MVP, hupa is using
gwt-presenter which is similar to the stuff in gwt-2.4 so the idea is
to replace it with gwt-2.4 although we could consider other nice
libraries like mvp4g or gwtp. I recomend to you to read everything you
find in order to write a good proposal.
gwt-dispatcher is used in client and server sides because it is the
framework used to comunicate both sides (this is the reason why you
can see it in many modules). We used it instead of RPC in order to use
the command pattern and facilitate testing of remote procedures in the
jvm. This library is not very used nowadays because people uses the
new RequestFactory stuff. The evolution of gwt-dispatcher is in the
gwtp library.
Although RequestFactory is though to be used with ddbb entities, I
think we can consider our objects (emails, folders, etc) like entities
and take advantage of this pattern. Anyway, you could consider other
library like gwtp if it simplifies the code or the developing of new
features in hupa.
Gin is the only way to have injection in client side. Gin syntax is
the same than Guice and you have to use both to test client presenters
and code in the jvm. Note that one of the main goals in MVP is to test
in the jvm client code, so we need a way to decouple presenters, etc
and inject the necessary stuff to test them in the jvm.
We use gwt-dnd because it was the only available library those days.
It is necessary to move messages to folders. Now gwt has dnd support
although Cell widgets do not support it, may be we had to use
gwtquery-dnd etc. when we replace the message celltable.
gwtquery brings the simplicity of jquery to gwt, specially when
dealing with dom elements or html content, note that it doesn't need
jquery at all. I think gquery can help to display messages (clean
them, resize, etc). I maintain this library so feel free to ask me any
question you had about it.
All of these new features you suggest are welcome. Note that hupa does
not have any ddbb in server side, we are storing stuff in a hidden
message in the imap server, it is experimental, so maybe you could
consider to add a ddbb to handle this info (we use derby in james
server as the default one).
The project is big and it is difficult to estimate the effort for each
thing. But I think your schedule could be a good start point.
Cheers
- Manolo
On Thu, Mar 29, 2012 at 3:43 PM, echo<echo...@gmail.com> wrote:
Hi, Manuel Carrasco
Hupa is an Rich IMAP-based Webmail application written in GWT, but there is
no release delivered yet
We propose that gsoc student/s take the actual Hupa code and make it fully
functional adding many features which are missing and removing out-of-dated
dependencies in favor of the new stuff in the latest GWT version.
** Hupa Status
- Hupa has been entirely written in java to be coherent with the
language used in the James project.
The Hupa has been checked out and deployed successfully on my
ArchLinux+openjdk6+eclipse,even though I could not login with my gmail
account and password which can access http://hupa.alcala.org. Maybe it need
config the .hupa/config.properties, I think.
- Time ago, Hupa was a reference of a GWT MVP pattern application.
- Hupa MVP design is based of a set of libraries available for gwt a
couple of years ago when Gwt-core didn't have support for MVP
Gwt-presenter: for the MVP and EventBus patterns.
Gwt-dispatch: for the Command pattern
Gin + Guice: for dependency injection.
- Hupa was developed before GWT-2.0 was released, when LayoutPanels,
uibinders, Cells, RF, etc. were not available.
- Although Hupa is using the last GWT release, it still depends on some
unmaintained libraries because they have an equivalent feature in modern
GWT.
- In summary, Hupa is a functional and well designed email client, ready
to read, send and manage messages, but it lacks many of the nice features
any email client nowadays has.
I also found some examples or instructions on GWT's own MVP architectrue at
here, it can be as a reference in my opinion, can it?
It is found that gwt-dispatch is used in more places than the others, since
almost every maven module(sever, client, share, etc.) needs it. So I believe
it will take more time to change it by Command Pattern(RequestFactory as
below) than the others.
Acutally I have no idea about "Gin + Guice: for dependency injection." which
needs to deeply discuss with you.
** Hupa roadmap
- Replace out-of-date dependencies with GWT-2.4.0 stuff
Replace gwt-dispatch by RequestFactory
Replace gwt-presenter with the available stuff in GWT-2.4
Remove gwt-incubator dependency in favor of CellTable and CellTree
Use LayoutPanels and DecoratorPanels of css workarounds
Use Gwt DnD
It is necessary for the theme to be improved by nearly all the recent apis
and I think it also need some time to be familiar with those new features.
Another thing I found in the code base is gwt-dnd-3.1.1 has been imported in
the maven dependencies, while I am not sure whether it is using or not.
- Performance
Use gQuery in client side to enhance message view, specially to
parse html messages and remove dangerous tags, instead of expensive parsing
in server side
Implement Server cache and client storage
I played with gQuery roughly yesterday and am familiar with its concept of
JQuery in GWT.
- New features
Contact management.
Authentication: Oauth
Message filtering, grouping, sorting and labeling.
User settings: name, emails, signature.
Theming.
And some other small but user-friendly stuffs such as "archive", "draft
save", user cookies(maybe HTML5 local storage) and so forth.
All right, this is very first draft of the my plan on Hupa:
[From now to the announcement of GSoC] get started to be familiar with both
of the Hupa and GWT.
[Week 1~4] replace gwt-dispatch by RequestFactory, after which I will get
more familiar with Hupa.
Deliverable #1: the improved Hupa after replacing something.
[Week 5] Remove gwt-incubator dependency in favor of CellTable and CellTree.
[Week 6~7] Replace gwt-presenter with the available stuff in GWT-2.4
Deliverable #2: the improved Hupa with almost all GWT-2.4 owning
[Week 8~9] make several prototypes of new features(Contact management,
Message filtering, grouping, sorting and labeling, etc.). And then try to
commit to the mail list for quickly feedback.
[Week 10~11] develop Oauth and User settings, meanwhile update the feedback
from Week8~9.
Deliverable #3: the improved Hupa with some new features.
[Week 12] suggested "pencils down" date: write documentation, test
everything...
To be honest, I am not really sure about it(probably two few things to do or
priorities to change and not very well specified). So could you tell me how
do you think? Any advices will be welcome.
--
cheers,
echo
--
cheers,
echo