aMSN Forums
February 11, 2012, 01:04:47 pm *
Welcome, Guest. Please login or register.
Did you miss your activation email?

Login with username, password and session length
News: New forum for aMSN !!
 
   Home   Help Search Login Register  
Pages: [1] 2
  Print  
Author Topic: aMSN rewrite  (Read 13226 times)
v0n0
Newbie

Offline Offline

Posts: 15


View Profile
« on: February 11, 2007, 12:40:29 am »

For those interested:

http://densou.wordpress.com/
Logged
PJ
Power user
*
Offline Offline

Posts: 99



View Profile
« Reply #1 on: February 11, 2007, 12:57:24 am »

I do really like your idea, TCL is a nightmare, i do really hate all interpreted/VM languages, The only interpreted language that is fast and works well must be Python. However i just love to see you choosing a (Native langauge) as C++.

However i did read that you wanted to choose QT, and ask yourself if QT is really the best solution.
GTK is also free and crossplatform, and it runs much faster than QT (from what ive seen) GTK do also have a much cleaner interface. I do beleve more *nix people would be more intressted in your project if you choose GTK over QT.

I do hope that things will work out nicley for ya, and that you get many people helping you develop a C/C++ port of aMSN.
If my C/C++ programming experience would be better i would love to help. But iam too new into the programming world.
However Best of Luck. Iam looking forward seeing how the development process is going.
Logged

WM-666
Super Power User
**
Offline Offline

Posts: 292



View Profile WWW
« Reply #2 on: February 11, 2007, 01:18:38 am »

why don't you take a look at Gaim and "update" that one?
Logged

Win7 x64, currently no Ubuntu (will install 10.04)
Auria
Power user
*
Offline Offline

Posts: 121


View Profile
« Reply #3 on: February 11, 2007, 01:20:21 am »

rewriting aMSN in C as a telepathy lib is already planned AFAIK. Why don't you contact the official team?

Doing it as a library is a very good idea IMO because people can make various interfaces in all toolkits they want
Logged
kakaroto
Administrator
Super Power User
*****
Offline Offline

Posts: 9424


View Profile WWW
« Reply #4 on: February 11, 2007, 01:25:53 am »

Hi there!,
It's nice to see someone willing to work on a rewrite of amsn! but I can tell you two things :
1 - your project won't get the same fame as amsn unless it's named "amsn", it will just become "yet another msn clone"
2 - you could join our team and we could work on a rewrite all together!

You can take a look at the wiki page on the amsn2 project, we started some design and we are willing to reengineer the whole thing... we already have a possible design, and we have a C (partial) implementation (with glib) of the protocol connectionmanager, and I'm currently working on a total rewrite of the protocol in Tcl, but with in an object oriented design.

Tcl is not slow, what makes amsn slow is the interface and how we handle it, wrong/bad/non-existing design makes it so slow/ugly.
Did you try the latest SVN version? if you go get it and see the new contact list, you'll see how a new/good design of the contact list makes it SO much better, sexy interface, with a lot more visual eye candies but ALSO makes it ALOT faster, try it, you'll see.
We're willing to do a rewrite, but I think we'll stay with the Tcl solution for the core and protocol. Concerning the GUI, we'll think of what's best, but currently, the idea is to go with a tkhtml solution, very fast and efficient and very powerful!
using tile for other windows can also be a good solution, since tile (the base of chameleon plugin) has a theme tile-qt which makes amsn use QT completely integrated with your system.

if you're interested, contact us at the amsn-devel AT lists.sourceforge.net mailing list and you could join the project and help on the rewrite.

links :
http://amsn.sourceforge.net/devwiki/tiki-index.php?page=GUI+Team+Sandbox
http://amsn.sourceforge.net/devwiki/tiki-index.php?page=aMSN+2+details
Logged

KaKaRoTo
Auria
Power user
*
Offline Offline

Posts: 121


View Profile
« Reply #5 on: February 11, 2007, 01:34:47 am »

Personnaly i'm not any good at internet protocols but if ever the GUI and network lib can be seperated i would be happy to build native interfaces to it
Logged
kakaroto
Administrator
Super Power User
*****
Offline Offline

Posts: 9424


View Profile WWW
« Reply #6 on: February 11, 2007, 01:44:01 am »

yes, the design makes them completely separated...
4 layers :
- protocol manager
- account manager
- data manager
- gui manager

protocol and gui send events to the account manager, the account manager is the only one to write/update data in the data manager, and the gui and protocol managers never directly access the account manager, but they do access the data manager, but only in real only mode.
example, you want to add a user, you click on add contact, it sends from the gui an event AddUser
account manager catches it and sends an event to the protocol to tell it to add a user
the protocol asks the server if the user can be added, and gets a response, assuming it was successful, an event is raised by the protocol which would be UserAdded
the account manager gets that event, and adds the user to the contact list data, and stores all the data needed about that user (nickname, phone number, display picture, etc...) and sends an event to the gui saying the contact was added, then an event to the gui saying the contactlist was modified, etc.. and the gui catches those events, shows a "contact added successfully" and then updated the contactlist graphically.

kind of explains it all..
Logged

KaKaRoTo
Auria
Power user
*
Offline Offline

Posts: 121


View Profile
« Reply #7 on: February 11, 2007, 01:53:09 am »

Quote from: "kakaroto"
yes, the design makes them completely separated...
4 layers :
- protocol manager
- account manager
- data manager
- gui manager

protocol and gui send events to the account manager, the account manager is the only one to write/update data in the data manager, and the gui and protocol managers never directly access the account manager, but they do access the data manager, but only in real only mode.
example, you want to add a user, you click on add contact, it sends from the gui an event AddUser
account manager catches it and sends an event to the protocol to tell it to add a user
the protocol asks the server if the user can be added, and gets a response, assuming it was successful, an event is raised by the protocol which would be UserAdded
the account manager gets that event, and adds the user to the contact list data, and stores all the data needed about that user (nickname, phone number, display picture, etc...) and sends an event to the gui saying the contact was added, then an event to the gui saying the contactlist was modified, etc.. and the gui catches those events, shows a "contact added successfully" and then updated the contactlist graphically.

kind of explains it all..


great desing! programming with that will be a pleasure i guess - along my projects i always found modular ones where so much easier to maintain and expand
Logged
v0n0
Newbie

Offline Offline

Posts: 15


View Profile
« Reply #8 on: February 11, 2007, 01:59:00 pm »

Quote from: "kakaroto"

1 - your project won't get the same fame as amsn unless it's named "amsn", it will just become "yet another msn clone"

Yes, you're right

Quote from: "kakaroto"

2 - you could join our team and we could work on a rewrite all together!

Yes, we could!

Quote from: "kakaroto"

You can take a look at the wiki page on the amsn2 project, we started some design and we are willing to reengineer the whole thing... we already have a possible design, and we have a C (partial) implementation (with glib) of the protocol connectionmanager, and I'm currently working on a total rewrite of the protocol in Tcl, but with in an object oriented design.

Ok, I read those, some comments (but better talk in your list):
Quote

it will thus need TCL bindings for D-BUS. These do not exist yet, so we will need to implement those.
For this to work, we may need to implement TCL bindings for Farsight
The pro for wxWidgets is that is will save us a lot of work, the con is that it is written in C++

Maybe it's time to learn C++? Wink I mean, maybe you are too fixed on TCL, that's my opinion in case! However, did you see this? http://cpptcl.sourceforge.net
I have already worked with wxWidgets, but why not QT?
However I'd want to use C++ over C because it is object-oriented and lets you define more cleanly your program!

Quote
we also had the idea to have the GUI be described in XML

Nice idea...but have you ever thought to use UML with Umbrello or something similar?

Quote from: "kakaroto"

if you're interested, contact us at the amsn-devel AT lists.sourceforge.net mailing list and you could join the project and help on the rewrite.

I'll do it.
Logged
Phil
Administrator
Super Power User
*****
Offline Offline

Posts: 653


View Profile
« Reply #9 on: February 11, 2007, 03:13:17 pm »

First, KaKaRoTo forgot to say that you must subscribe to amsn-devel list before posting in it... https://lists.sourceforge.net/lists/listinfo/amsn-devel

Second, we prefer to use Tcl as it doesn't need to be compiled : and the less you need to compile, the less you will need to port to other platforms... In addition, Tcl doesn't suffer from null pointer exceptions Wink
About QT... I would say that many people don't like QT (why ? ask them, not me :p ) and aMSN shouldn't take part in this debate...
But, and here you can help, aMSN2 will be modular so if you want to create your own GUI it will be possible : the only thing that need to be done is creating a library to bind Tcl procs to C/C++...
AN only unknown remains : why whould we use UML ? That's not a GUI description language...
Logged

Phil

AMsn is great, and it will be greater :wink:
v0n0
Newbie

Offline Offline

Posts: 15


View Profile
« Reply #10 on: February 11, 2007, 04:24:42 pm »

Quote from: "Phil"
First, KaKaRoTo forgot to say that you must subscribe to amsn-devel list before posting in it... https://lists.sourceforge.net/lists/listinfo/amsn-devel

I knew it! Wink
Quote from: "Phil"

Second, we prefer to use Tcl as it doesn't need to be compiled : and the less you need to compile, the less you will need to port to other platforms... In addition, Tcl doesn't suffer from null pointer exceptions Wink

Oh no, NullPointerException is Java, Segmentation Fault is your pal with C++! Very very funny!!! :lol: Well portability is an interesting goal, another question:
Why instead of writing a new libmsn in C, don't you contribute to Telepathy project and use only that library in version 2 of aMSN? (maybe you're already doing this, but I'm not sure!)
Quote from: "Phil"

About QT... I would say that many people don't like QT (why ? ask them, not me :p ) and aMSN shouldn't take part in this debate...
But, and here you can help, aMSN2 will be modular so if you want to create your own GUI it will be possible : the only thing that need to be done is creating a library to bind Tcl procs to C/C++...

Like this? (point 4) http://cpptcl.sourceforge.net/
Quote from: "Phil"

AN only unknown remains : why whould we use UML ? That's not a GUI description language...

Yes, it's a general purpose language, it was only a suggestion.

Ah, for those who don't like QT, better read this:
http://doc.trolltech.com/4.2/qt4-2-intro.html
 :wink:
Logged
Auria
Power user
*
Offline Offline

Posts: 121


View Profile
« Reply #11 on: February 11, 2007, 05:34:00 pm »

The language is not that important - this is a chat app after all no need for killer performances.

As for the GUI i think the debate must end, they said it will be modular anyway so there can be GUIs to please everyone.
Personnally i would be pleased to write a wxWidgets interface - so native on Mac, Windows and GTK. ANd someone else could write one in Qt - evryone would be happy Wink
Logged
Phil
Administrator
Super Power User
*****
Offline Offline

Posts: 653


View Profile
« Reply #12 on: February 11, 2007, 08:27:11 pm »

Maybe you can start another topic for language flammig....
The title of the topic is : "aMSN rewrite"
aMSN2 is an aMSN rewrite so totally in-topic...
Languages war is totally off-topic...
Just start a new topic named "Language trolls" and you can say what you want in it.... (I don't forget that this section is free Wink )
Logged

Phil

AMsn is great, and it will be greater :wink:
NoWhereMan
Contributor
Super Power User
**
Offline Offline

Posts: 502



View Profile
« Reply #13 on: February 11, 2007, 08:53:43 pm »

actually the OP started with talking about his own rewrite, not really aMSN2, and the language he himself would use.
Btw I'm not gonna keep getting this on.

bye
Logged

NoWhereMan
-- Windows mom: «Finish your veggies! There are processes in Ubuntu that are starving to death!»
-- NoWhereBlog (ita)
-- http://flatpress.sf.net
kakaroto
Administrator
Super Power User
*****
Offline Offline

Posts: 9424


View Profile WWW
« Reply #14 on: February 12, 2007, 01:25:12 am »

hi,
as phil said, we were going to talk about the rewrite, design, modularity, etc.. and it ended up with.. let me see... ALL posts talking about the language to use!!!!!!  we DO NOT want this, and I will split this thread to keep it clean.
As phil also said, it will be modular and you can put the GUI you want, if you want a C++/QT GUI then write it the way you want and integrate it with tcl because the core will stay Tcl! if you want a ml/xml/javascript/whatever GUI, then do it, and integrate it with the core.. all you'll need is :
1 - catch/send events from/to Tcl
2 - access the data storage object from Tcl

I think Auria words are wise, so listen up!

Quote
Maybe it's time to learn C++?

don't worry v0n0, I'm a C/C++/Java expert, Phil is a C/C++ expert, don't know about Java but I think he uses it too, we have ObjCalm experts, we all have many talents, and C/C++ is the language that we also know, but not everyone...
For aMSN, did you know that EVERYONE in the team started without knowing shit about the language? nothing, just copy pasting and adapting old code, or fixing bugs until you learn the language.. it takes a few hours to manage to learn the language, only by looking at the code.. but for C/C++ you won't learn every bit of the language just like that... many of us don't want to learn the language... but that's stilll not the reason we don't want to use it...
the ABI!!!  it keeps changing.. we have one module in amsn (utils/TkCximage) which is written in C++ and we're hoping to get rid of it, because although it's nice on windows and mac, it's hell for linux users! the ABI changes every couple of months, everyone needs to have the same libraries or else it won't work, we stopped doing all those distro releases partly because of that, it never worked, everyone has a different system, etc... C++ is hell for deployment!
and amsn is meant for n00bs mainly, I mean, the majority of our users only know how to single-click and install, so we can't force them on compiling, I know that by experience, I spent countless hours giving support for the users and those are the facts!

now, let's considere another aspect of C++, C++ is not object oriented.. it does have support for pseudo-object-oriented programming, but it's not good enough, Java and C# are object oriented (many others I'm sure, I just don't know them) but C++ has that huge flaw where it tries to stay backward compatible to the C syntax, which makes it very bad. It only gives the illusion for OO... and most people (who know better) hate C++ because of that. We don't want to start working on such a language. Java is good, but graphically, it's the worse, + dependance on a JVM is very bad (Tcl also depends on the interpreter, but it's a 2MB directory and we're done, as opposed to java where the JVM is 18MB and it needs to be installed + reboot...)

Now, like Phil said, we don't have null pointer exceptions, and don't try to play him smart, he knows what he's talking about :p segmentation faults are the same as NPE you try to access memory on a null pointer, you get the segfault, and it's really annoying.. you need to recompile everytime, it's annoying...
if you used amsn svn, you'll easily realize this, every morning you 'svn update' and you're done! no compilation needed, no risk for a segmentation fault, it's just easy!
tcl doesn't have strong type checking and no memory management needed. Developping in Tcl will take you at least 30 or 50 times less time than in C++ because of its whole simplicity. And the performance? unnoticeable!
for example, we paid a guy for 4 months to develop a library in C (object oriented with Glib... I know, I also hate that) and he didn't finish the job after 4 months, we couldn't even connect and authentify...
I just did the whole design, and I wrote in Tcl object oriented (with Snit) a library for msnp11, msnp12, msnp13, msnp14 and msnp15 (not completed) in 3 days, along with the account manager, a data manager, and I even was able to partially integrate it with the current GUI of amsn... 3 days... that's the difference of ease of use/power between Tcl and C++... the reason : you don't need to worry about memory, you don't need to worry about the libraries, about  the pointers, about compiling 100 times before it works... with tcl, you modify something, you type a command in a shell and it reloads the latest source, no need to even restart the application! you don't need to write code to test your new code, you launch amsn, open the console and call your new functions directly from the console (Tcl is actually a shell scripting language, so it has a shell where you can write any code you want, on the fly..)
And finally, I work on windows right now, I try, test, it works, I commit.. no need to go on linux and try it out, no need to wait for the mac maintainer to be online to ask him if he can apply my patch, see if it compiles on mac, and test it...
if Tcl code works on one machine then it will work on all other platforms!
so.... the idea is to have a Tcl protocol, a Tcl core, a Tcl data storage (contact list, users, groups, your settings, etc...), and the GUI can be anything! it can be Tk (look at the new contact list, isn't it nice ? so why use gtk if we can do a great contact list like that with Tk) alongside with Tile, and Tkhtml! it can be some other GUI module in some other language, GTK/QT/wxwidget/whatever it can be anything, we don't care...
right now, we don't have any real plans on the GUI part, so it will be decided later, but it would be best if it was only ONE module because otherwise it would be difficult to maintain multiple interfaces everytime there's a little change...

Quote
Why instead of writing a new libmsn in C, don't you contribute to Telepathy project and use only that library in version 2 of aMSN?

the lib in C was supposed to be the new connection manager for telepathy, so yes it was to contribute to Telepathy....
but right now, we decided to stop the telepathy solution and go with a smoother tcl solution, internal events, no dbus, etc... makes it a lot easier and will help motivate others who don't like the telepathy solution either.
Logged

KaKaRoTo
Pages: [1] 2
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.11 | SMF © 2006-2009, Simple Machines LLC Valid XHTML 1.0! Valid CSS!