Anunciado AMSN2

Pues eso, que se han hecho "publicos" (bueno, yo los he visto en la lista de desarrolladores de amsn) los planes para AMSN2. La cosa pinta bastante bien.

Las novedades son que lo van a rescribir de 0, en Python (que parece que se está poniendo de moda), los desarrolladores de emesene se ve que tambien van a colaborar (emesene es un cliente del messenger hecho en python+GTK), y para el protocolo usaran pymsn.

La cosa esta en que parece ser que piensan hacer una especie de backend y despues que se puedan usar varios frontends, en GTK, QT, Cocoa, etc, rollo mplayer.
No estan seguros de si hacer uno de esos backends el "oficial", pero el que mas numeros tiene es uno hecho con EFL (Enlightenement Foundation Libraries), GTK lo han descartado por que no pueden poner imagenes en cajas de texto, QT por el rendimiento, y al final se han quedado con EFL por que dicen que aunque no pueden usar tampoco imagenes en campos de texto, piensan usar Webkit en su lugar. La pega es que EFL no cuenta con una version estable aun, y puede cambiar la api, y hay que compilarlas del CVS, no hay paquetes disponibles.

El hecho que abandonen tcl/tk a cambio de python puede dar un impulso grande al proyecto, por que hay mas gente que domina de python, y la verdad, se esta poniendo de moda (a mi me encanta). Ademas contar con algo mas bonito que las tk, es de agradecer, y mas si llegamos a poder tener un frontend que se integre perfectamente con nuestro escritorio. El hecho de centralizar esfuerzos en pymsn en cuanto a la ingenieria inversa del protocolo, supongo que tambien ira mas rapida la adopcion de nuevas funcionalidades.

Ah, no todo son buenas intenciones, ya tienen algo implementado con python y EFL (login y lista de contactos, creo).

Os pongo el mail original para el que le interese:

Hi All and welcome to a whole new world!

In this email, I will be announcing our current plans for aMSN2, finally, the veil is coming off and you will all get to look at the new path we're taking!
I know some of you already know of all this, and some of you were eagerly waiting for it for a long time. No more rumors.. no more maybes... here's the deal!

aMSN2 is a total rewrite of aMSN 0.x. It will not be in tcl/tk. For the greatest pleasure of many of you, we decided that the best suited programming language for such a project is python!!
So, all python lovers rejoice, and all python haters, sorry, too bad, live with it!
We didn't want to say anything publicly about aMSN2 to avoid any kind of flame war or anything like that, we're used to all those flame wars happening whenever the choice of the language is being discussed, now, the choice is made, the code is written (partially) so it is useless to start debating this, so please, refrain from any useless debate.
Another big issue was the choice of the toolkit.. some people might prefer gtk, others would like qt... mac users will want a native cocoa application, and the same goes for windows or whatever toolkit you can think of... We researched that a lot and trying to choose wisely which toolkit to use...
We had a list of requirements and were trying to find which toolkit would answer those requirements the best...
- GTK did not fit the requirement of being able to have a background image on a text widget (unless doing a lot of hacking and reimplementing the text widget)...
- QT did not fit the requirement about the performance....
Which one to choose... well, we decided to go with something completely different : EFL
For those who do not know what it is, the EFL is the Enlightenement Foundation Libraries. It's a set of libraries that makes building UIs such a beauty! It only has one.. euhh.. two... humm.. a few problems :
1 - there are still no releases of the EFL.. so anyone willing to test this needs to compile the huge set of libraries from CVS
2 - the APIs might change until the libraries are released...
3 - we cannot embed an image inside a text widget.. so no smileys support...

The first two issues are easily dealt with : we don't care.. anyways, it should be released by the time amsn2 gets finished... the last one (embeded images/smileys) is resolved with another solution : use webkit (html engine) for drawing the contact list and chat window text widgets....

But most importantly, we wanted to create a 3 level design that would help us have a 'pluggable' front end... allowing the user to choose which toolkit he wants...
So I am pleased to announce that aMSN2 will be a multi-front-end application!!!

We currently have an EFL front end, a native cocoa front end for Mac users, a ncurses front end, and.... a gtk front end!
There might also be someone working on a QT and/or a XUL front end soon...

We obviously do not want to be maintaining all of those front ends, so there will be development teams who take care of their own front ends.. for now, whether the aMSN team will give support for only one officially chosen front end or to none is still unclear... but I am proud to announce that :
The GTK front end will be maintained by the emesene developers team!
We had a few discussions with the emesene developers and they were interested in joining forces with aMSN. We now have 4 new members who will be joining us in the development of aMSN2 :
Mariano : developer of emesene who wants to work on aMSN2 in general.
Dx : also developer of emesene who wants to work on the gtk front end and maybe the core/protocol of aMSN2
Jandem : another developer of emsene who is working on the gtk front end.
Alen : former emesene developer and currently lead developer of the elloquence messenger client. He wants to work on the gtk front end, the protocol layer and maybe the EFL front end too.

So this is great news, as you know, emesene is really a beautiful client that is emerging so fast in the scene, and has become a growing "competitor" to aMSN in the last months, and having the emesene team on board is a great honor!

I am also pleased to announce our collaboration with the pymsn developers (Ali Sabil, Johann Prieur and Ole Andre Vadla Ravnas). aMSN2 will be using the pymsn library for all the protocol related work. Pymsn is a greatly designed library that was the first to implement the MSNP15 protocol and already has the necessary changes (in a branch) for an MSNP16 implementation. I will join them into improving the pymsn library so we can have a growing protocol library that follows aMSN2's features.

Finally, here is a link to a screencast showcasing both the GTK and the EFL front ends of aMSN2.. Note that for now only the login screen and contact list are implemented (partially) :
http://www.amsn-project.net/~kakaroto/e ... n2-v4.mpeg
I hope you enjoy this video!

You can also have a look at this screencast of Elloquence, the client being built by Alen, as well as a screenshot of its login window in the following links :
http://alencool.googlepages.com/elloquenceTest2.avi
http://alencool.googlepages.com/elloquencelogin.png
Or you can run emesene/elloquence to see what aMSN2 might look like when you choose the gtk front end, once the work is completed.

The source code will soon be added to our public SVN so others can enjoy it, read the code, and global collaboration can begin!

Thank you! :)
KaKaRoTo
Me alegro, yo uso amsn y me parece el más completo. Cualquier nueva versión será bien recibida.
Lo mismo por aquí, siempre he usado aMSN, me gusta bastante, aunque tiene algunas cosas (pocas, en comparación con el resto de clientes) que no me terminan de convencer.
Este nuevo proyecto tiene buena pinta.
Yo pienso lo mismo que vosotros, yo uso también aMSN y me parece un buen cliente de mensajería, yo tengo puesto el "skin" Real Human de la página oficial y se integra muy bien con la apariencia de Ubuntu y Tango.
Notición!!

Y además en Python... Buff pinta muy bien. Desde hace tiempo uso emesene sin embargo.
Si alcanza la velocidad de emesene, con soporte para webcam etc... me pasaré a aMSN.

Por cierto, el hecho de que algunos desarrolladores de emesene colaboren con aMSN2, significa que dejarán de banda emesene para unir sus esfuerzos en un único cliente? (aMSN2)
Pues yo uso jabber siempre q puedo y pocos contactos de msn mediante gaim, la verdad, esq prefiero seguir usando gaim, aunq abrá q ver q sale de todo esto, q sin duda tiene muy buena pinta.
K. Ichigo escribió:Notición!!

Y además en Python... Buff pinta muy bien. Desde hace tiempo uso emesene sin embargo.
Si alcanza la velocidad de emesene, con soporte para webcam etc... me pasaré a aMSN.

Por cierto, el hecho de que algunos desarrolladores de emesene colaboren con aMSN2, significa que dejarán de banda emesene para unir sus esfuerzos en un único cliente? (aMSN2)


aMsn soporta webcam.
NaNdO escribió:
aMsn soporta webcam.


Lo sé, me he explicado mal. De hecho sólo uso el aMSN cuando necesito ponerle la cam a alguien XD
Lo que me refería es que si consiguen un nuevo aMSN que alcance la velocidad de emesene me pasaré a este programa. Pero si sigue siendo tan pesado (aunque tenga cam) seguiría con emesene aunque no tenga soporte para webcam.
Notición...yo es el que uso, aunque me gusta la "frescura" y limpieza de emesene. Si hacen un aMSN limpio, ordenado, depurado como emesene y con todo el soporte que tiene aMSN (cam, transferencias, conferencia de voz, guiños...) sería una pasada.

aMSN es muy pesado comparado con emesene o pidgin, pero comparado con Windows Live Messenger es super rápido y ligero xD.

P.D.: Ojalá no quiten lo de la webcam en otra ventana. Me encanta.
Yo tiro de Kopete porque del aMSN odio la interfaz tan arcaica que tiene. Ya sería hora de que se curraran una manera de integrarlo en todas partes. Pero sí estaría muy bien que se curraran una buena biblioteca, porque el aMSN soporta la mayoría de cosas del protocolo MSNP, cosa que otros no hacen.

Y por supuesto, el abandono de TCL/TK... Ya iba tocando, son infumables.
Pues yo creo que sigo tirando de kopete y gaim, el amsn nunca me convencio, ahora lo mismo lo dejan mucho mejor. Esperemos que salga algo bastante funcional y que destaque sobre todos los otros. Un saludo
Feo de cojones, es lo unico que no me gusta del aMSN, eso si, en funcionalidad es de lo mejor. Sigo quedándome con pidgin.
Me alegro que por fin se hayan decidido abandonar TCL/TK. Era pesado y tosco.

emesene se lo estaba llevando por delante, lo único que tiene aMSN es el soporte de wecbam, aunque el equipo de desarrollo de emesene tienen casi listo ese tema.

Es una '"lastima"' que ya no use el protocolo de microsoft (no quiero violar su licencia de uso [sati]), pero sera una buena alternativa a lo que no quieran usar WLM en windows por ejemplo y para los usuarios de GNU/Linux y OS X.

¿Tendran al final los usuarios de OS X un cliente decente? [jaja]
Yo uso emesene pero cuando salga habrá que probarlo.
A mí la verdad es que me habéis convencido, hasta ahora usaba aMSN pero me he pasado a emesene, la verdad es que también está muy bien y además es más ligero y rápido como decís vosotros. No me importa que no tenga soporte para webcam porque yo no tengo y paso de webcam. Con respecto a la interfaz de aMSN si es verdad que es cutre por defecto, pero yo no le doy mucha importancia, además, ya dije en otro post anterior que hay skin en la página oficial de aMSN que mejoran bastante la apariencia:
http://www.amsn-project.net/skins.php
Lo que me preocupa es que pasará con emesene y parece que ya lo están hablando http://emesene.org/smf/index.php?PHPSES ... pic=1248.0
emesene no morirá
Ufff... grandisima noticia el abandono de tcl/tk, lo cierto esque eran pesadas, inestables y feas... Python es mucho mejor, espero que no nos decepcione...

Un saludo!
No tengo por donde cogerlo, están describiendo amsn2 como el emesene actual, ¿no es mejor que todos se centren en el emesene?
hombre, en el mail dice que va a colaborar un tipo que era desarrollador del emesene y que se piro y ha sacado otro cliente... supongo que sera como todo, que cada uno prefiere hacer las cosas a su manera... ya ha pasado con gaim/pidgin/el fork ese que han sacado por que los de pidgin pasaban de lo que pedian los usuarios, y paso con compiz/beryl Xfree/X.org etc etc .
Hay otro mail que explica un poco mas el tema tecnico:


Hi All,

This email is to explain a bit the design and structure of aMSN2.. so it's leaning more towards developers than towards users...
As I explained in my previous mail, the design is simle :
1 - three layers : protocol, core, gui
2 - the protocol is taken care of by pymsn
3 - the gui is abstracted and any front end can be used (multi-front end client)
4 - the programming language is python...

So for the technical details, first, download the source code. I've now imported it into our public SVN, and you can get it from the SVN URL : https://amsn.svn.sourceforge.net/svnroo ... runk/amsn2
You will see the three layers in the amsn2 subdir, we have :
gui/
core/
protocol/

The idea is that the protocol layer will be the glue between pymsn and the core, it will receive events from the core and notify pymsn, and it will receive events from pymsn and notify the core.
This allows for one thing : modularity! I do not want to have code mixed everywhere again like we had with aMSN 0.x... This would also 'in theory' allow for switching to a different protocol or to a different library, BUT we do NOT want to do this. It was decided that aMSN is an MSN clone and if you want a multi protocol client, there are many good ones out there.. we want to concentrate on the MSN protocol so users can have a fully featured client, we want all our efforts to go into MSN compatibility. End of the discussion!

The GUI layer takes care of all our GUI needs, we have a 'manager' that basically stores which front ends we have installed and allows us to access their classes... a front end can register itself from anywhere by calling the guiManager.registerFrontEnd, and giving it its module (sys.modules[__name__] ).
Alen has maybe a different idea about this and we'll see what he comes up with, so this design can change a little...
NOTE that everything so far is in proof of concept mode and anything can change at any time!
The way I see the front ends is a bit like a set of mega widgets... or an 'abstracted toolkit API' but higher level...
I will talk again about front ends once I explain the core a bit...

The core.. the most important thing out there.. that's the heart of aMSN2, we want every front end to act the same, to have the same features, and this will be accomplished thanks to the core! The core is the glue between the protocol and the UI, it will take care of profiles, configuration, options, non-protocol/ui features, etc...
The most important part of the Core in terms of the other layers is the 'views' concept. This design will allow us to have a really nice client, easy to build new front ends, and a consistent feature set amongst all the front ends...
What is a View? Well it's simple, it's how we want the user to 'view' our UI. For example, the GUI doesn't need to know if a contact is online, away or busy.. the UI doesn't need to know a contact's nickname or psm, or a group's "count/total".... the UI only needs to know *what* to show the user... If we tell the UI to show a specific icon (depending on the state) for a contact, as well as what 'name' to give the contact (including the PSM.. or not, depending on the user's options)... and if we tell the UI that the group's name is "X (count/total)".. that's all it really needs to know...right ?
well, that's what the views are all about, they tell the UI how to display an object...

So there's this magical thing that I called 'StringView'... it's a 'view' on a 'string'... basically, it's a list of elements specifying how the string should be displayed... A StringView can be something like this :
list : color red text "my nickname" image <img> text "<-- that was a smiley" color grey text "(away)" color red text "\n" italic true text "psm" italic false
(the stringview can also contains tags...)

With a StringView we can represent anything we want.. the nickname of a user, including smileys, including status, including the psm, etc..
The reason why we do it like this is because :
1 - we don't want every front end to have code for parsing the smileys (what about custom smileys)
2 - we don't want every front to need to access the user's preferences like "show psm beside the nickname"/"show psm under nickname"/"don't show the psm"
3 - the UI doesn't need to know the status/whatever of a user, it just needs to know *how* to display it.. because that's what the user will see in the end...


So.. now that you know about the StingView, let's talk about ContactView.. as you can see every ContactView has a unique identifier representing the contact.. an 'icon', which will be an Image that gets built by the core (using the front end Image class API).. it can be a buddy icon depending on the status or the display picture (depends on the user's options), it can also contain 'emblems' like 'blocked', or 'away' emblem on top of the display picture, or a 'alarm' emblem if the user has one...
We do not want the front end to need to look through the options, or to query the core for whether a contact has an alarm or not, or query the protocol to see if the contact is blocked or not....
The ContactView also has a 'name'.. that's a StringView to represent the contact.. it will contain the nickname (or custom nickname), parsed smileys, the psm (depends on option)... the color of the nickname will depend on the status of the contact, or depends if the user sets a 'custom color' on the user.. etc... You now understand that we don't want every UI to start checking if the user has set a custom nickname for the user, or if there's a global custom nickname (or psm), or if he has a custom color for the user, etc...
The ContactView also contains a 'dp' attribute which is an Image with the display picture of the user... the reason why this is different from the 'icon' attribute is because we might want to show them both.. for example :
[icon] nickname [ display ]
psm [ picture ]

Like pidgin does for example... whether that attribute contains the DP or nothing will depend on the user's options again...
Finally, we have a 'menu' which is the contextual menu when you right click on the user (it's a MenuView item describing what the menu contains) and a 'tooltip' which is a TooltipView on what to show in the tooltip...

Now, I'll expain what the GroupView class is... it's a view on a group.. hehe.. it's the same thing again, the unique id, the icon (will change from collapsed to expanded icon), the name (StringView containing the name of the group + the count/total), menu and tooltip.. but we have one more item : 'contacts'.. it's an ordered list of the contacts contained inside that group...

The other view classes are pretty much self explanatory...
Now, we move the front end.. the front end is given to the core as a module object, the module contains all the classes we want/need and the core creates them as he needs...
Any front end should implement the amsn2.gui.base.* classes, we have a few classes in there, it's not that complicated :
mainloop : this is just an abstraction over the main loop.... pymsn needs the glib mainloop (hopefully removed soon), but you might want to run the qt/gtk/efl main loop, depending on what toolkit you use.. you implement this here...
main : the main window, this window will contain the login screen or contact list... the login window and contact list windows will need to use this window to show themselves inside of it.. why.. because we don't want to have a window appear/disappear when you start logging in...
image : simple class to abstract an image.. use whatever library you want to represent an image.. (QImage? gdkpixbug... etc...)
login : this is the login window... the base classe has documentation on each function.. it should be straight forward... this implementation is not yet finished, as we need a way to feed the login window the list of profiles as well as the list of "sign in as " statuses for each profile (if a profile has a saved custom state)....
contact_list : this is the interesting one... the base classes functions are documented so it should be simple but I still want to explain this a bit :
When you look at the api, you will notice something, there are only 4 functions :
contactUpdated, groupAdded, groupRemoved, groupUpdated...
You might be asking "humm.. why isn't there a contactAdded, contactRemoved, etc...", well, it's simple... here's how it would work, on initial connect, you get a bunch of calls to groupAdded with the groups of your contact list, in each of those groups, you have the contacts (remember, GroupView.contacts), so the front end gets this, and displays the group with its contacts...
in every possible scenario of the contact list getting modified, the 4 functions are enough to make the UI sync with the protocol...
nickname changed : groupUpdated + contactUpdated ( the groupUpdated is called if the sorting is done by nickname, so the front end gets the new ordered list of contacts and it reorders the contacts in the UI)
psm changed : contactUpdated
status changed : groupUpdated + contactUpdated (the groupUpdated because the sorting can be done on status, or if the user goes offline (if we group offline contacts together, then we get groupUpdated for both groups) the 'name' (count/total) of the group might also change, and contactUpdated because the '(status)' or color might change)
new user : groupUpdated (the list of contacts has one more, the UI adds it when it synchronizes the UI list with the groupview.contacts list)
deleted user : groupUpdated (same as above)
contact blocked, unblocked, etc... whatever : contactUpdated
sorting changed (ascending/descending/alphabetically, etc..) : groupUpdated

etc...
What this means is that the sorting is of course left to the Core.. the core decides on how to sort the contacts, etc.. it's not the UI's job.. but it also means that the UI must keep on each group widget, the ordered list of contacts that are shown with their unique id, so it can resynchronize itself when it gets a groupUpdated... of course, you can just delete all contacts from the UI and rebuild them.. but try to be optimal in terms of performance please... thanks...
This also means that.. I know, you won't like it.. but! it is necessary... when a user clicks on a group, you must NOT collapse/expand it.. you must tell the core about that event and let the core decide... sending you a groupUpdated() with an empty list of contacts in the GroupView...
The reason is simple :
1 - the GroupView gives you the 'icon' for the group.. and that's what's deciding if the icon is expanded/collapsed...
2 - imagine an option 'never collapse groups'... we don't want a UI that ignores that option...
3 - imagine the option on a contact "always show this contact"... so we would want a 'collapsed' group.. but still showing a contact...
4 - what about 'collapse/expand' on double-click only...

to be able to do all that, we need the UI to work this way! I know that for some toolkits it will be easy/intuitive but for others (like gtk with its treeview) it will actually involve more work... sorry about that!

Also please note that *for now*, we don't have all that working... humm.. yeah.. there's not much done with the icons.. the protocol doesn't do much.. there is no "group_clicked" or anything like that yet.. so be patient and we'll try to make the core evolve as fast as possible...

any comments are appreciated!

Thanks for reading!
KaKaRoTo
keo01 escribió:hombre, en el mail dice que va a colaborar un tipo que era desarrollador del emesene y que se piro y ha sacado otro cliente...


En el mail ponen que van a colaborar Mariano y Dx, que son los dos desarrolladores principales de emesene...

Según Dx en el foro de emesene, aMSN2 va a usar como interfaz GTK la interfaz de emesene, y que emesene va a seguir su desarrollo. Y supongo que ellos también van a aprovecharse del desarrollo de aMSN2 en python, y veremos implementados en ambos clientes más o menos las mismas funcionalidades. Vamos, que yo os dejo mi frontend, y os pillo la integración de la webcam y los guiños, por ejemplo.

Yo creo que ganan todos.

PD: La gente de emesene lleva varios días sin actualizar el svn, tendrá algo que ver?
yo utilizo pidgin,de todas maneras probare esta nueva version aver ke tal
Genial, yo uso Amsn ^_^
Pidgin y emesene les dan una patada en los mismisimos... al amsn, que ultomamente se volvio demasiado cargado, complejo, lento y pesado
Habeis visto esto: Galaxium Messenger, una mezcla de emesene y Adium...
Maxtorete escribió:
keo01 escribió:hombre, en el mail dice que va a colaborar un tipo que era desarrollador del emesene y que se piro y ha sacado otro cliente...


En el mail ponen que van a colaborar Mariano y Dx

No me quejo de lo que hacen (encima que es gratis, lo peor que puedo hacer es quejarme), pero ambos en el foro de emesene están cada 2 por 3 quejándose de que no tienen tiempo, el desarrollo de emesene de por si va lento ¿y encima se van a dedicar a otra cosa mas...?
Mientras esperamos impacientes aMSN2, se ha publicado una nueva versión: 0.97.1
Según la web oficial, sólo corrige bugs pero es importante actualizar:

Hi,

In order to continually give a great experience to our users, we have decided to release our first ever bugfix release!
The aMSN version 0.97.1 is a release which contains only bug fixes from our last stable version 0.97, so this is, as of today, the most stable version we have ever done.

It is important for you to update, because this version also fixes a critical bug that prevents a lot of our users from connecting to the MSN network. This is caused by a recent change in the protocol from the MSN server which made aMSN unable to connect to the network... so if you are having such problems, please update!

You can read the full detailed changelog as well as release notes here.

For those who feel adventurous and want to stay up to date with the latest development version, please refer to our SVN Installation manual.

Enjoy!


Descarga: http://www.amsn-project.net/linux-downloads.php
25 respuestas