robert burrell donkin wrote:
I think this is a step back from the current design or it simply regards
something we already trying to solve differently with the handlerapi.

the current API design is flawed: this is just one way to fix it.

Let me better approach this discussion: what is your knowledge of the whole james code (in particular the smtpserver/handler), how it changed in 2.3.0, how it changed in trunk, then in the 2 experimental branches and now in the handlerapi-experiment?

I think that a command pattern having an ImapCommand as the command
cannot be the api to the backend (the MailboxManager). The
MailboxManager shoudl be able to provide results for Imap, for POP3, and
for other protocols we may want to provide.

then it's already a failure :-)

mailbox is coupled to IMAP and the more you optimize, the tighter than
coupling will become

What you propose have IMAP all the way: I don't understand how you can say it is more generic and less coupled. Am I missing the whole point?

from an outsider's perspective, given you've already opted for that
approach, the question is simple how best to organize that coupling.
the way you've chosen prevents anyone maintaining independent
implementations.

No, we didn't opted. But we are working on a specific direction in the last months. Of course if you jump in and propose something in the opposite direction we want to understand the benefits before stopping ;-)

About the command pattern applied to our services we are already working
on a common infrastructure to reuse part of our network layer between
services and prepare for asynchronous handling: you can look at the
smtphandler in james 2.3 for the first implementation, you can look at
the handlerapi-experiment for a more advanced solution we're working on
as an experiment.

the best plan would be to use SEDA

this requires use of messaging APIs

The architecture now in handlerapi-experiment supports SEDA (specifically it has been wrote with MINA in mind).
And there is a command pattern.

from what i can tell from looking at the newer code, you seem to be
moving towards a messaging API but the interfaces suffer from the
usual faults (too complex, probably unmaintainable going forward).
maybe you'll get there in an iteration or two.

I still don't understand if you talk about a storage api or a protocol api. The 2 issue are completely different and should not be mixed, IMHO. When you started talking with Joachim I thought you wanted to discuss the storage layer, but most of the last messages bring me to the protocol layer: I'm confused.

I will reply to remaining of this message once I'll know what is your knowledge of the rest of James code.

i'm not interested in heading again down a road that's bound to end in
tears. if i decide that james is too slow for me to live with any
longer, i'll probably just hack my local fork.

Of course this is an option: my preference is to see your local fork in a sandbox in the james project. This way we can see real code and bettwe understand what you are trying to explain and show us the performance gain of your solution. Personally I value a good set of working code much more than any discussion about messaging api vs method/interface oriented (OOP) api.

I bet I will support you much more as soon as I will be able to understand you better.

i'm interested in having a IMAP implementation that i don't have to go
and make a cup of tea when i'm opening my mailbox. i'd also like an
implementation that could handle my full mailbox not just the 5-10%
that i'm forced to load into it ATM.

+1, but I simply don't *currently* get how
http://svn.apache.org/viewvc/james/server/sandbox/design-doodles/imap/messaging-api/imap-mailbox-class.png?view=markup
can increase our performance by 5x.

i am disappointed that you let me waste time (that i could have spent
more valuable elsewhere at apache) outlining designs that you were
never going to accept. next time please be clear up front. that way, i
wouldn't have to pull jochen's implementation apart ;-)

I never told that we would never going to accept your code:
1st: it is not up to me to decide this, but of the whole PMC. So my vote count as 1/10 of the final decision. 2nd: I still don't understand the real content of your proposal: we just met, we need to understand each other, first. 3rd: just provide new code that works better and you will receive a lot of +1 by pmc members, don't worry ;-) 4th: I don't use IMAP, I'm just interested that we keep the imap module consistent with the remaining of james. IMAP is already very different from the rest of James in many aspect and the goal is to add more synergy between the modules. Joachim did the great work, but it is only a first step: current imap support is still experimental and basic. 5th: the fact that I'm trying to understand (wasting my time? ;-) ) what you propose and I'm replying to you means that I'm interested in what you propose: I could simply ignore your message otherwise and work on my own things ;-)

but thanks for taking the time now to let me know that you have your
new design and you're not interested in alternatives

- robert

I think you misunderstood me ;-)

I thought you were the "last arrived" between james committers and I want to make sure you know what we currently have and where we are spending our hours. You may discover that we already did what you are proposing or that we already evaluated it, or maybe you already know everything about James and you have the keys to the power: I don't know but I'm here to understand. Just look in the mailing list archives and see how often I rejected code proposed to be included in trunk and you'll see that it didn't happen so often.

I try to restart from scratch and summarize.

I think our main layers are
1) Protocol handling
2) Message processing
3) Message storage

Most of the Joachim work is about the message storage.
Most of the protocol handling code, imho, can be made common between our line based protocols (using the command pattern and maybe the memento for the session, like you propose).

Initially I thought this thread was about 3, while your diagrams seems to me about 1: this is why I'm confused.

Stefano


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to