Thanks for the answer, at least I know I can begin without being  
interupted with a huge "it's the total opposite you should do"...
I won't create the svn module or do the commits in new dirs, but I can  
start working on the files locally at least.

KaKaRoTo

On Mon, 29 May 2006 17:43:36 -0400, Harry Vennik <[EMAIL PROTECTED]>  
wrote:

> Op maandag 29 mei 2006 23:16, schreef Youness Alaoui:
>> no answers on this subject ? I'm still waiting for everyone's feedback  
>> on
>> this so I can start a bit of code... I have some code done, but I don't
>> want to commit it...
>> Harry, u there ?
>>
> Yes, but too tired for a complete reply now...
> So, just a short reply now...
>
> I also think that amsn2 should be a module rather than a branch. Also I  
> like
> the directory layout you propose.
>
> The idea about the Capabilities seems very nice too.
>
> About the data part, I already took care of that in earlier e-mails (at  
> least,
> I thought about in making the designs), but indeed, did not make that
> explicit. Also you are extending it to other things than we discussed (we
> talked about contacts/groups mainly, now you also mention things like  
> nudges
> and winks), and you are right, those should have a data layer too,  
> between
> the protocol and the UI.
>
> Okay, I'll reply more in-depth later.
>
> Harry
>
>
>> KKRT
>>
>> On Sat, 27 May 2006 04:25:06 -0400, Youness Alaoui
>>
>> <[EMAIL PROTECTED]> wrote:
>> > Hi,
>> > I wanted a separate mail to explain some more the design I have in  
>> mind,
>> > don't worry it will be fast since I'm tired :p
>> > I'm thinking about having a new amsn2 module, in which this whole new  
>> cl
>> > thing would go, it should be compatible with amsn1 code, so we could  
>> plug
>> > it in and out as much as we want. first my idea is to have some  
>> structure
>> > like this :
>> >
>> > amsn2
>> >
>> > +---- GUI
>> >
>> > |     +---- clgroup.tcl
>> > |     +---- clcontact.tcl
>> > |     +---- clwidget.tcl
>> >
>> > +---- Data
>> >
>> > |     +---- account.tcl
>> > |     +---- group.tcl
>> > |     +---- contact.tcl
>> > |     +---- groupmanager.tcl
>> > |     +---- eventsystem.tcl
>> >
>> > +---- Protocol
>> >
>> > |     +---- telepathy2amsn.tcl
>> > |     +---- telepathy
>> > |
>> > |           +------- ??????
>> >
>> > +---- Core
>> >
>> >        +---- ????
>> >
>> >
>> > We could divide into more subdirs.. the protocol dir could have the
>> > msnp13.tcl file, the msncam.tcl, msnp2p.tcl, etc... the GUI could  
>> have a
>> > Dialogs subdir with all our dialogs (add new smiley, add group, add
>> > contact, check for newer version, etc...), and a Preferences subdir  
>> for
>> > our preferences window for example... or it could go into Dialogs
>> > The Data is only to store data
>> > the Protocol dir could be used in order to hook the new data and gui  
>> to
>> > the current amsn, until the MSN connection manager for telepathy is
>> > created, in the meantime, if our design is good enough, I think we  
>> should
>> > be able to use the jabber connection manager instead of MSN without  
>> even
>> > noticing the difference...
>> > This reminds me!!!! I thought about an intermediate class that we'd  
>> call
>> > Capabilities.. damn, wait, I first need to say something else...
>> > ok, so far, we've always been talking about "separate the protocol and
>> > the
>> > GUI, separate the protocol and the GUI", but we never talked about the
>> > data in itself... if the protocol sends us "hey, you have a new  
>> contact
>> > named [EMAIL PROTECTED]" what do you want to do with it ? you want the  
>> GUI
>> > to catch that then what ? show it ? then how you update it ? you have  
>> to
>> > keep stored somewhere who is who, if he's blocked etc... that's what
>> > we've
>> > been talking in the other thread, kind of...
>> > now, if we abstract the data from the GUI, it means we could have ANY
>> > GUI,
>> > it would query our common interface/API for the Data, so it will  
>> always
>> > know what your account is, etc...
>> > it abstracts the protocol into an API (to quote Harry), and the  
>> protocol
>> > underlying there ? who knows what it is, could be msn, could be  
>> jabber,
>> > as
>> > long as a 'contact' is a 'contact' and a groupmanager is a
>> > groupmanager...
>> > Now, here's when we enter the big game, does jabber have winks ? I  
>> don't
>> > know (I never used/tried/seen jabber, so no idea, but let's assume
>> > everything I say is true), assuming it doesn't have winks, cool, so  
>> our
>> > Data/winks.tcl file will not be used (don't get it wrong, it's not the
>> > implementation of the winks in that file, NOT AT ALL.. it's only
>> > abstracting the protocol into an API, so you actually receive an event
>> > WinkReceived, and you get a 'wink' object in argument to which you do
>> > [$wink getDestination] or [$wink getWinkAsFlashMovie] or [$wink
>> > getWinkAsMpeg] (or Gif), or [$wink doYouSupportGifs] or [$wink
>> > getWinkPreview], etc...), ok you understand ? our poor winks.tcl  
>> won't be
>> > used in jabber, but oh well, assuming jabber has winks, but it's mpeg
>> > movies, not flash movies.. so we should call getWinkAsMpeg not
>> > getWinkAsFlashMovie... oh, so confusing... ok, assume we have no  
>> winks in
>> > jabber but we have something else that is nudges, and MSN doesn't  
>> support
>> > nudges (I know, it does, but assume I'm all mighty), so your
>> > Data/nudge.tcl (again, only abstracted info about the nudge, like the
>> > destination, the received time, whatever... it's  not the protocol nor
>> > the
>> > GUI implementation of it)...
>> > so your GUI, it doesn't know what to do.. you're chatting with a user,
>> > you
>> > send a wink, you get an error, you nudge, no prob, with another user,  
>> the
>> > winks work, the nudges don't... (assuming you have one big contact  
>> list
>> > managing multiple $account objects from different protocols)... so  
>> what
>> > do
>> > you do in that case ?
>> > oh, that's where my Capabilities class comes in place. you open the
>> > chatwinow object, it has a reference to a contact, then it does
>> > set account [$contact cget -parent]
>> > set protocol [$account cget -protocol]
>> > set caps [$protocol getCapabiltiies]
>> > set enableNudgeButton [$caps supportsNudge]
>> >
>> > this is a very explicit example, but the Capabilities object should be
>> > used for almost everything, to know if you have the right to block a  
>> user
>> > or not for example (assuming jabber doesn't support blocking a  
>> contact),
>> > if you have the right to leave an offline message, etc...
>> > it's Capabilities, but can be considered, in a java perspective, as a
>> > SecurityManager (although I know very little in that domain), it tells
>> > you
>> > what you can do or not, it's specific to the protocol, not an account,
>> > nor
>> > a contact.
>> >
>> > What do you think ? I know this design is very poor so far, which is  
>> why
>> > I'm sending it... hoping you'll send meaningfull comments!
>> >
>> > Thanks all,
>> > Youness.
>> >
>> >
>> >
>> > _______________________________________________
>> > Amsn-devel mailing list
>> > Amsn-devel@lists.sourceforge.net
>> > https://lists.sourceforge.net/lists/listinfo/amsn-devel
>
>
> _______________________________________________
> Amsn-devel mailing list
> Amsn-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/amsn-devel



-- 
KaKaRoTo


_______________________________________________
Amsn-devel mailing list
Amsn-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/amsn-devel

Reply via email to