Tuesday, December 29, 2009

good news


emoticons on the contact list :)


lolwut

I just tried emesene 2 on a windows machine and it worked :D

I never tested it until today and seems to run fine except for a bug with some code loading emoticons on the conversation window.

some screenshots






for the people that want to try, I installed

python 2.5.4

and

http://www.bonifazi.eu/appunti/2008/04/pygtk-all-in-one-installer.html

then downloaded a zip of the git repo and it worked :D

Saturday, December 26, 2009

Bugs/Requests here for emesene 2.0

Since I need some hints on where to work on emesene 2.0 I want you to post feature requests and bug reports here:

http://github.com/marianoguerra/emesene/issues

we had troubles with trac and redmine lately so I want something easy and not on our servers. We will see how it works.

please check if the bug/request is already there to avoid duplication (I have to work when someone makes a duplicate request, so less time coding :D)

the time has come

to start coding for emesene 2 again.

now with less responsibilities and some free time I will start to code again. Today I started adding support for storing and retrieving nick and personal message from/to the server so those are retrieved no matter where you are.
I fixed the bug that didn't changed the status on login, a bug that didn't remembered the nick/pm when the main windows was redrawn and some other small bugs, I also merged with c10ud's repo.
Finally I made the code work on python 2.5 since that is the default on debian squeeze.

I you find some annoying bugs let me know, I will try to fix them ASAP.

Thursday, November 12, 2009

adium styles FTW

today I finished hacking a first working version of adium styles. I started this as a separated project so other projects (like AMSN2) can use it, it's located here: http://github.com/marianoguerra/pyadium-themes

any contribution is more than welcome.

to show you the status a nice screenshot (but you can try it for yourself).

Tuesday, November 10, 2009

I'm alive

so, lot of time since my last post, pretty busy right now, but I will have more time in the next weeks/months.

today I fixed some annoyances on emesene 2 related to webkit errors, the contact list not having ellipsize support and a lot of notifications when using the jabber backend.

but this post isn't to talk about those fixes (despite the fact that they are useful :D)

I created a new project separated from emesene 2 (that will be used by it) to handle the famous and now defacto standard to define conversation themes: adium themes.

this project is separated since it could be useful for other projects like amsn2 or someone who would like to create something like gwibber.

the project was created a moment ago and it doesn't have code, but if you want to help us then it will :D.

the first thing to do is to read the adium documentation on themes:

http://trac.adium.im/wiki/CreatingMessageStyles

and then download some themes and see how they are structured.

the idea is to make a module to load/download/validate adium themes and another to allow using them on webkit.

if you want to help, start reading and join the emesene mailing list so we can define the structure and other stuff.

Friday, October 16, 2009

Emesene 2.0 alpha :)

this week I gave emesene some coding love, to sum up:

  • don't fail if papyon is not available
  • fixed some small bugs
  • enhanced the Plus parser to handle weird utf-8 nicks
  • refactoring made to remove all reference to gui on e3 code
  • added a button to show/hide the calendar on the chat history window
  • finally removed the e3common folder
  • enhanced the look of the plugin window
  • fixed a bug that made X crash because of an infinite loop displaying error messages

and now I want you to start testing it, reporting bugs (in this post by posting comments), and asking for small features or fixes (no p2p, webcam, audio, background sharing and the like yet).

happy testing & commenting

Friday, October 09, 2009

I want to get the code of emesene 2

Some people is asking where is emesene 2 code available.

well, it's not on svn like emesene 1.x, since the start of emesene 2 we are using git and the code is located at github.

what is git?

simply explained it's a distributed version control system, that means that it allows people having their own repositories.

why would you want that?

anyone that want's to start coding something new can "clone" (copy) a repository and start working on it doing local commits and pushes, people can watch the repository, get the code, test it play with it and even clone it. When it's done this user can ask other programmers to "pull" (get) his code into their repositories. That makes the main repository stable and allow people to try new things and show them.

imagine also that I go crazy and start to port emesene 2 to whitespace, people can clone the latest sane version of emesene and keep coding from there.

also, you can follow experimental branches if you want, or clone the code to play with it.

why git?

I made a poll some time ago and git won :)

so where is the code?

the main repositories are mine and the on from boyska and dxdx they are here:

http://github.com/marianoguerra/emesene
http://github.com/boyska/emesene
http://github.com/dequis/emesene

nice, how do I *really* get the code?

you can click the download button or you can clone the repository using git

firts install it:

sudo aptitude install git-core

or similar for other distros..

then clone the repo

git clone git://github.com/marianoguerra/emesene.git

you can update periodically doing

git pull

edit:

I fixed the problem appearing when papyon wasn't installed, if it's not available the papyon extension will be disabled, try cloning again my repo or updating it.

if you want the papyon extension (to see display pictures) you will have to install it from here:

http://launchpadlibrarian.net/31746931/python-papyon_0.4.2-1%7Eppa9.04%2B1_all.deb

Saturday, September 26, 2009

[OT] announcing a new project that might interest you

hi, this is a little off topic, but I want to announce my new project here because there are some of you who like to code in python.

my new project is a small python library (or framework if you like it more buzzword compliant) to make it easy to build REST APIs and websites based on REST (what some people call web 2.0 or ajax...)

the page is self hosted here:

http://a-series-of-tubes.appspot.com/


I hope you like it :)

Thursday, September 24, 2009

avatar support

thanks to the papyon backed implemented by otacon and c10ud I had to add support for display pictures on mesinyer (and e3).

I added cache support for avatars and custom emoticons and display of avatars on contact list and conversation window. All this code will work out of the box for e3.msn when p2p is implemented (dx...)

also a combo and loading gif were added to the login window by c10ud.

a screecast is worth a 1000 screenshots and 1000^2 words....


Saturday, September 19, 2009

Refactoring and Avatar support on the gui (still no p2p!)

I'm back!

this days I made a huge refactoring moving code around to make it easier to manage and navigate, yo can check the changes on github.

since refactoring aren't cool to end users since they don't change anything on the surface (I hope), I implemented cache support for avatars and custom emoticons, and also the support for avatars on the gui, this means that once we have p2p support on e3 (dx I'm looking at you) the gui will be there to use it since day one. it also mean that other protocol back-ends can start using it right now (some people are working on a papyon back-end, isn't e3 cool? :P).

I also added two extensions, avatar chooser (to manage and change your avatar), and image chooser (to choose an image from the file system), both where forward ported from emesene 1 with some code cleanup.

I also added the code needed to update the gui in case of a avatar change.

less words and more screencasts!


Sunday, August 30, 2009

Plugins and extensions

Yesterday I worked to put an example together on how to use plugins and extensions together to make useful things.

Since I was going to code, I decided to make something useful, so I took the advice of my friend peyisar who said to me that he liked the main window of emesene 1.x over the current one. I made a plugin that register an extension to add the old status combo at the bottom of the main window.

It's really easy to make, you can look at the code here:


here is a screencast showing how to enable the new plugin and extension:






you may ask what's the difference between a plugin and an extension, well:

  • plugins add functionality that wan't there before
  • extensions replace functionality that was there but you may not like as it is
in emesene 2, all parts are extensions that are registered in a category, you can check which categories exist going to the extension tab on preferences, almost all of them right now come with only one implementation, except conversation output that has the webkit and the gtk output options and the session category that has msn, jabber and dummy implementations.

but since you may want to write a new extension for a given category the most common place to transport your extension and register it is a plugin.
you code a plugin that only registers an extension when it's activated, and since on emesene 2 we can code plugins in folders we can have a lot of files to implement one or multiple functionalities.

This is just one example of what can be achieved, just think on extensions as a way to change the behavior of emesene 2 without needing to understand all the code or the need to have svn access.


Thursday, August 20, 2009

emesene 1.5 - "awesome" has been released!

Oficial release notes:

And here it comes, after a lot of work, the new super one-point-five release, codename "awesome". Yes, it is real awesome, just take a look at some of the new features, in random order (screenshots here):

  • Compatible with the latest Window Live Messenger(tm)
  • New plugin set (Plus! colors, Notifications, Mail check, etc.)
  • HTTP connection and proxy support
  • @msn accounts support
  • Better contact list management with Privacy Tab and ability to reject users
  • Improved Offline Messaging experience
  • Support for msn groups
  • No more gui locks
  • Experimental webcam support with a configurator
  • New layout options and improved usability along with customization
  • Tons of new languages supported

The fun doesn't stop here, you can check the Community for further informations or cooperate with the emesene team in any way you can:

  • New features
  • Translations
  • Plugins
  • Bug reports/fixes
  • Themes
  • Support to other users
  • Spreading the word





Personal notes:

This release has been a pure community driven release as I've been working on emesene 2 (slowly due to personal responsibilities).

I want to thank all the community that made this possible

dequis 'dx' (emesene and emesenelib)
Horacio Duran (emesene and emesenelib)
Alberto Talavera (emesene)
Linan Wang (MsnOIM)
Roberto Salas & Jakub Steiner (tango theme)
Vinicius Depizzol (default theme)
Yguaratã C. Cavalcanti (emesene)
Roger 'roger' Duran (emesene)
Alen 'alencool' (emesene and cairo wizzard Tongue)
Mattia 'MaTz' Pini (emesene)
'mg' (emesene)
Jan 'jandem' de Mooij (emesene and emesenelib)
j0hn 'juan' (emesene)
Luis 'JoinTheHell' Nell (emesene)
nopersona (in the margins theme)
Stéphane 'kjir' Bisinger (webcam)
Kevin Campbell (pyisf)
Riccardo 'C10uD' (emesene)
Giuseppe Bagnato (proxy)
Orfeo 'Otacon' (emesene)
Davide 'Boyska' (plugins)
'x1sc0' (emesene)
Nicolas 'nicolaide' Espina Tacchetti (emesene)
Emilio 'pochu' Pozuelo Monfort (debian)
Bartłomiej Jerzy 'bjfs' Stobiecki (ppa)
Pablo 'pablo' Mazzini (emesene and emesenelib)
scyx (emesene)
arielj (emesene)
All the fantastic emesene community (all)

as you can see small collaborations can make a difference, so you are encouraged to help with anything you can.

enjoy this release and help us spread the word! (blog it, tweet it, facebook it, identi.ca it ;)

Wednesday, August 05, 2009

Initial msn+ support!

Thanks to our oficial hacker of the week a.k.a boyska we have msn plus support on the contact list!

here is a screencast of the implementation:



as you can see if you are a CPU maniatic you can select an extension to ignore the msn+ markup and print it as is or an extension to remove it and leave clean nicks (did I told you that extensions rules? :P)

show some appreciation to boyska for the work done :)

Sunday, July 26, 2009

emesene 2 development snapshot .deb!

Juan Carlos Ojeda sent me a .deb of the Jul 15th snapshot of emesene 2 for all te people that want to test it without even waiting for the first alpha :D

emesene 2 packages, dependencies Python, Python-GTK
915,3 KiB (937306 bytes)

* Can be installed in parallel with emesene 1.x
* Can be installed on debian, ubuntu and debian based
* It installs on /usr/share/emesene2/ and created a launcher on /usr/bin/emesene2.sh

can be found here:

http://tecnicoslinux.com.ar/livecd/emesene2_0.0.1a_all.deb

thanks to Juan Carlos Ojeda!

PS: it's a development status, it's not even an alpha release but it may be useful if you want to test it without installing strange stuff like git-core :D

if you find some bugs report it here but expect some delay since this week is final exam week (that's why the development of emesene 2 was so quiet last 2 weeks)

Thursday, July 09, 2009

A commit explained

Ok, first the good news, I implemented selecting date range to view the conversation history and moved the export code to an extension, that means that anyone can implement and extension, register and select it and emesene 2 will use that extension to save the conversation history. Thanks Orfeo C for the idea.
The posibilities are endless, the most simple ones are export to different formats, more complex ones are extensions to migrate to other databases, publish the history to blogs or things like that :)

Now the experimental part of this blog.

Since I'm using git on github to code since a week I started checking some features, this time I decided to comment the changes on the commit I made today so people can read the commit diff an read comments about why I made those changes.

To read the commit explanation go to http://github.com/marianoguerra/emesene/commit/fdd8bbd35d3f8ba46eb4ebb0b9393b6e4fd4b75f and scroll down a little.
You will find labels with a "1" or a number on them if you click them you will see a comment explaining why I made that change.

I hope this is useful for some of you that want to read the code and don't know where to start.

and as on any post, something graphical to show the commit advance:

Tuesday, July 07, 2009

Enhanced Contact Information window and save chat implemented

Today I had some free time so I continued working on the Contact Information window that was left behind some time ago to code some features.
I enhanced the layout, the output of the chat history and added a new feature that a lot of people requested: saving the logs to plain text.

Still needs some work to do but the basics are there, on the feature I would like to add support to save to HTML and to export logs between two dates.

here is a screencast of the features:

Monday, July 06, 2009

Some requests implemented

* new features implemented
- save/restore windows position/size between sessions
- save/restore windows position/size when minified on tray icon
- select side for avatar
- select between tabs with ctrl+pgup ctrl+pgdown
- select between tabs with alt+"number"
- close tab with ctrl+w
- customizable avatar size on contact list
- customizable text format on contact list

As an important notice, the dev team of emesene 1 and 2 decided to start testing new tools, we started using git at github (here is my fork of the master branch: http://github.com/marianoguerra/emesene/) we are also looking for some tool to replace trac.

in some time I will post how to get the code, fork it and request to integrate the changes (I have to learn first! :P)

That's all for now, I will continue to implement the requested features when I have more time.

now a screencast to show the new features:

Tuesday, June 30, 2009

Results from feature requests

Things that will be implemented:

  • Save/restore windows position/size (6 july)
  • Personal message/current song separation on User Panel
  • Export logs (7 July)
  • Hide deleted/blocked contacts
  • Select side for avatars (6 july)
  • Block group
  • Start chat with group
  • Switch between tabs with ctrl page up/down (6 july)
  • Small icons in contact list (6 july)
  • Autologin
Long term implementations:

  • MSN+ support
  • Roaming profiles
  • Global settings
  • Drag'n drop contacts to invite chat
  • Adium themes
  • DBUS API
  • Windows/Mac support (I don't have those)
Already solved

  • Focus on conversation entry
  • Don't show notifications on login
  • Compact window (still needs a shortcut)
  • Hour in conversation (through conversation themes)
  • Forget this account (just deselect the remember checkboxes)
  • Order groups (there is no GUI for that yet but already implemented)

Things that won't be implemented now:

  • Resize webcam window (we don't have p2p yet)
  • Share backgrounds (no p2p)
Things that won't be implemented:

  • Multiple session support (that is what pidgin is for...)
  • See friends IP address (protocol doesn't show IP addresses, only on direct connect when doing P2P)

Don't understand:

  • Focus on windows/flap with unread message when click on Tray Icon? Like pidgin..
  • Frames for display in conversation
  • Multiple login as in WLM9
Things that should be plugins:

  • Different notifications for different users
  • Change tray on typing
  • Last.fm/facebook/twitter song or personal message update (would be nice to make it into a single plugin)
  • Caned responses
  • Auto message

Things that are related to emesene 1.x:
  • Lot of exception windows (limit the exception windows)

Monday, June 22, 2009

small feature requests here

if you tested emesene 2 and you have some small requests to make (no p2p and big stuff like that)

post a comment, I will try to implement them.

EDIT: I'm talking about emesene 2 features, not emesene 1. Also things that could be implemented as plugins are outside the scope by now since I have to finish the core first :).

Monday, June 15, 2009

emesene ported to brainf*ck

http://en.wikipedia.org/wiki/Brainfuck

well, as usual this post is to give an update about the development status.

This sunday I coded the extension handling on preferences and added the ability to redraw the main screen to see change the theme (also it's needed if you change an extension that is on the main screen).

This changes will allow to code extensions that change the default widgets that are used on emesene 2 by a widget that works the way you like. On a higher level extensions will allow to replace the gui with another toolkit (some work is being done on qt right now).

to show the status I recorded a screencast.





the next time I will try to work on an example that uses a plugin to register an extension that changes some widget on emesene.

to sumarize, the things left for the first alpha are (taken from the Release Schedule post):

  • display emoticons on userlist/labels
  • plugin preference dialog
  • finish emoticon handling on conversation input
  • theme handling on preferences
  • finish the information view for logs

Sunday, June 07, 2009

emesene 2 ported to lolcode

can I haz emesene2?

no really, we didn't ported the code to lolcode

I didn't knew what to put on the title :D

So, here is my sunday update.

This time I coded 4 things that were needed

  • Theme handling (sound, emotes, images)
  • Theme selection on preferences
  • Disconnect support
  • Contact added you dialog (with support to reject an invite and not see it anymore)
Not too much explanation needed there, now you can create themes for emesene2 and select them on the preference dialog. You can disconnect and login again with a different account. Finally the most important to me is the dialog to add/reject invites from other contacts, now with the option to reject an invite and not see it anymore.

all of this needs some testing/polishing but it's almost complete.

Finally, I added a retro theme, for the fanatics of the icons from emesene 1 :)

Sunday, May 24, 2009

coding again

This weekend I had some time to code, so I implemented the invite dialog and finished the display of emoticons on the input field. Some modifications were made on the code to allow extensions on other toolkits too.
Dx made some small gui tweaks and worked on p2p, so we may have p2p working on some time.

With the invite dialog the conversation window is almost done, the only thing left is custom emoticon and display picture that depends on p2p.

a screenshot of the gui with the invite window:

Friday, May 15, 2009

about webcam

some comments suggest that webcam is the only feature that matters, that it's not that hard to get it working, some suggest to use other implementations that doesn't support the MSN protocol.

First of all, if I implement webcam I will use farsight/farsight 2, I won't reinvent the wheel.
About using other libraries/techniques that doesn't support MSN protocol, that makes no sense, the number of emesene users is *really* small, and I think that you want to use the webcam with your WLM contacts, if your friend uses emesene, then easily you could use another protocol/client to communicate, I wont make a emesene only implementation.
Another thing that people don't seem to see is that webcam is really platform specific, linux has troubles detecting and making webcams work, there are a lot of ways to get/display video and sound, so it's not easy, also it works differently for each operating system and even between different versions. The protocol for webcam is closed, the codecs are closed and the specification changes whenerver micrsoft wants to change them, so "it works for me" is not enough here, it must be a good implementation otherwise the users will make a DDOS against the bug traking system to notify the developers that with X, Y and Z webcam doesn't works.
Last (for now) is that I don't have webcam/mic on any of my computers :)

and just to show an example on how easy is to make webcam work, talk to the pidgin team ;)

Sunday, May 10, 2009

Release schedule (sort of)

some people are asking when the first alpha/beta/something will be, to answer those questions I made this post.

The idea of the first "something" officially for emesene 2 will be when I get to the following milestone:

"emesene 2 is everything I want except P2P"

what that means?

that the first public bundle to test will be made when I have emesene feature complete excluding P2P (custom emoticons, file send/receive, webcam and inks). When that release is made I will receive bug reports on some place (trac is really not used right now, at least by me), I will work to fix all the problems that appear on that release, then I will make a new release when I think that all major bugs are removed, I will make a new cycle fixing bugs.
When those two cycles are finished we should have something like:

"emesene 2 is everything people want except P2P and it's stable"

then if dx is still not working on P2P (*looks at dx*) I will start to work on that, the features will be added in this order:
  • display pictures
  • custom emoticons
  • file send/receive
then I will make a release to test those implementations and fix bugs. After fixing the bugs the first release of emesene 2 will be made, a next cycle of bugfixing will be made and after that we will start to work on webcam.

why webcam at the end?

because webcam is unstable, it breaks, different distributions/operative systems handle webcam in a different ways, it breaks, it needs to compile/have a shared library, it breaks... did I said it breaks? ;)

dates for that milestones?

No idea, pretty busy right now trying to finish my engineer career and working, but I really want to get to the first milestone fast. Right now the things missing are

  • display emoticons on userlist/labels
  • plugin preference dialog
  • finish emoticon handling on conversation input
  • theme handling on preferences
  • finish the information view for logs
if you want to test earlier, you can checkout from tne subversion repository :)

Friday, May 01, 2009

Worker's day update

Today I had time to code emesene 2, this are the results:

  • fixed the problem getting notifications on login
  • now all the contacts are displayed on the contact list (you don't need to refresh to make some change the status)
  • the emoticon window is closed when the mouse leaves the window for more than a half second
  • the tabs now have widgets that look better (check the code quiz below to help me fix the close button!)
  • the input box on the conversation window is smaller now
  • implemented a dummy e3 protocol to be able to test emesene 2 without the need to login and wait.


The most interesting of all the new features is the last one, using the e3 architecture that allows to add support to new protocols easily I implemented a dummy protocol that basically returns succeed events on all the requests, it contains a userlist with dummy contacts and groups and when you chat with someone some random contact replies you with the same message.
This dummy protocol is nice because of two things:
1) it let me test the gui without login in in msn or gtalk (that means no waiting for login), I can also code when I have no internet connection or I'm behind a closed network (like the one from my university).
2) it shows how easy is to start implementing a new protocol and can help people to understand e3 and make it easy to start hacking the msn or jabber implementations.

if you want to test the dummy protocol, on the login window open the preference dialog (on the bottom right corner) and select the dummy session, then login with some random user and password and start pressing all the buttons to make the bugs appear.

Code quiz

run this code:

see that the close icon has a padding on the left and the bottom?


import gtk

class TinyButton(gtk.Button):
'''a simple and tiny button'''

def __init__(self, stock):
'''constructor'''
gtk.Button.__init__(self)

self.image = gtk.image_new_from_stock(stock, gtk.ICON_SIZE_MENU)
self.set_image(self.image)
width, height = gtk.icon_size_lookup(gtk.ICON_SIZE_MENU)
self.set_size_request(width + 2, height + 2)
self.image.show()

self.set_focus_on_click(False)
self.set_relief(gtk.RELIEF_NONE)

if __name__ == '__main__':
w = gtk.Window()
w.add(TinyButton(gtk.STOCK_CLOSE))
w.show_all()
gtk.main()


ok, if you can remove that extra padding your name will be on this post :D

EDIT: what I need is a really small button with no margins or paddings, that's why it's called TinyButton ;)

HINT: I borrowed the code from here: http://git.gnome.org./cgit/gnome-terminal/tree/src/terminal-tab-label.c?h=gnome-2-26 but something is missing and I can't see what.

An the winner is:

Faith_Nahn

he posted the code to solve the problem that involved setting a gtk style for the button. Thanks to him and all the ones that submited code!

If you find it fun I can make more code quizes in the future.

as an extra bonus you where added to the dummy user list of the dummy protocol, now you can make girls fall inlove with you by showing them that you are on emesene code (?)*

btw, you are on the commit log too: http://emesene.svn.sourceforge.net/viewvc/emesene?view=rev&revision=1610

* to make this, login with any user and password selecting the dummy session on login preferences.

Monday, April 27, 2009

small (really small) weekend update

Tomorrow I have a final exam so this weekend I was pretty busy, I made some small changes on emesene.

  • I added back the "View information" entry to the contact menu, that allows to see log information about the contact that was selected like status, nick, message and chat history. Still needs some work but it's a start
  • now the output of the Contact Information window is obtained from the extension module, so you can change the widget to show the chat history
  • moved the status button at the side of the password field to make it easy to move from the user to the password field pressing only one tab
  • now the emotes are added as text to the input on the conversation when they are selected from the emote window on the toolbar, also the input widget gains the focus back after the emote is added
just some small fixes that were needed, I hope next week I can resume my work on mesinyer.

some small quirk that you would like to report? leave a comment.

Friday, April 24, 2009

Everybody love screenshots (?)

this post is to show some things with screenshots.

the first thing is that thanks to j0hn we know that emesene 2 works on windows, I've never tested it but thanks to him and a small patch emesene 2 is working there.

on the other side, yesterday I installed ubuntu jaunty and I can tell you that the notifications work fine on jaunty :)

so here are some screenshots









Sunday, April 19, 2009

preference dialog implemented

Well, this weekend I've worked on notifications, sounds and preference dialog, I almost finished the implementation of all of them, still some polishing to do but the 3 work only with some glitches. I also wrote some code to handle blocked and removed contacts on the contact list, but I've not tested it too much.

NOTE: on ubuntu 8.10 I have a gui lock when the account has too many contacts, but not on debian lenny, if you test emesene 2 (after doing svn up :D) please comment saying OS version, gtk version and if the gui locks or not (I think it's a gtk bug but I'm not shure)

this time I made a screencast to show quickly the state of emesene 2:

Monday, April 13, 2009

Choosing distributed version control system

I'm thinking on choosing a Distributed version control system for emesene 2. To see what you think I've made a poll. Please try to answer all the questions if you want to be taken into account.

http://spreadsheets.google.com/embeddedform?key=ppqFrnGHLxeD_GAhNuzAEKg

Sunday, April 12, 2009

Weekend update

I've been a little lazzy this weekend but I've added some code/features to emesene.

the high level stuff: trayicon! :D

the low level stuff:

* now the signals are independent of gobject, they use the gui.Signal implementation (simple but enough for now). That means that some implementation that doens't use gobject won't need to use it
* added imports for dgb on all the modules that use it so I can profile the application
* removed gstreamer on the sound extension because it ate all the cpu
* fixed a bug when someone sent messages using \r\n insted of \n
* removed the sound when you opened a conversation

the low level stuff needed a lot of refactoring, that is why you don't see a lot of changes, but a lot of code was moved/removed/written.

as all the stuff on emesene 2 the tray icon implementation is an extension so you can change it with your own. I will write a post about how to do it when I have some time.

PS: I know notifications, blinking trayicon and so on :)

Saturday, April 04, 2009

New stuff

I implemented sound notifications for emesene, also moved all the notification code to a method that will allow to change debug settings on the fly and not to restart emesene, also you will be able to see the debug on a window or dump it to a file. Also proxy, http method and proxy authentication implemented on e3 and yabber and integrated with the config dialog, so now you can use emesene 2 with those settings.

If you have a proxy/proxy with authentication, please test it and report bugs.

Sunday, March 22, 2009

First real life example of extensions

Since the commit I just made you can select the protocol to use on preferences! :) this is the first example of extensions that where added to the code this week.
Basically each protocol (and almost all on emesene) is an extension that can be replaced, on the 'session' extension category we have two extensions, gtalk and msn, you can switch between them or even add another extensions for other protocols. you could in fact download an extension to support a new protocol*

also all the parts of the gui are extensions, so if you don't like a part of the gui you will be able to code/download an extension and replace it.

In a future post I will show how to replace parts of the application with custom extensions**

also as you can see the preference dialog on the login window has another options, this options are stored and loaded from the config file but are not yet used by the protocols. My next work is to add support for those.

* we are focused on being a MSN client but if someone wants to; he can make his own extension to support another protocol, that won't hurt anybody since it's not part of emesene.

** the extension framework is being developed so it's not yet stable.

Thursday, March 19, 2009

Funny thing about refactoring

I have been refactoring the code of mesinyer since the start of the week, I've moved a lot of code, I've rewritten all the code for menues and toolbars to support the new extension framework.
The code now is more modular, separated and allows to replace any part of the gui with a custom part (an example of that when all the work is done).

what is the visible difference between the code from last week?
If you use it you will note no difference (I hope :D), since refactoring is about enhancing the code without modifying functionality.

This post is just to let you know that a lot of work is being made on the project, and if you don't see it on the gui/functionality it's because we are setting up everything to make mesinyer the most extensible/cusomizable IM client around :D.

some news:

* roger is working on Offline messages for mesinyer
* dx is working on p2p for mesinyer
* C10ud is evaluating some patches to be added to emesene 1.x

Wednesday, March 04, 2009

we love closed protocols (?)

it seems that MS has changed another thing on the protocol that made some of you to have problems authenticating on emesene 1, I applied a patch made by Giuseppe Bagnato and changed the hosts to authenticate to the same as emesene 2. That should fix the problems, please do svn up on trunk and tell me if you sill have problems.

Giuseppe Bagnato also added support for proxy authentication, thanks to him!

Saturday, February 21, 2009

We are alive

It may seem that the development of emesene 2 is a little staled, that may be because february is a busy month for me, but under the hood there is some movement. :D

we have mailing lists now!

http://lists.emesene.org/ there are 3 mailing lists, I recommend almost all of you to suscribe to emesene if you want, dev is for developers or people who want to contribute code, that means that you already know python, if you want to start to learn, then ask on the emesene mailing list.

We have been discussing the extension/plugin architecture for emesene 2, we want to make almost all stuff on emesene 2 to be an extension that can be replaced by others. That would mean that if you don't like the current menu, the user panel, the contact list, the conversation window or any item inside it you can create an extension, register it and your component will replace the default component (selecting it on the preference dialog).
We want to have this well defined so we don't change the api and the extensions/components don't need to be patched .
It also means that you wont need to send patches to us in order to make a change, you just copy a component, make your changes and register it/distribute it under a different name.

that is our idea, now we must make it right :)

Tuesday, February 03, 2009

Emesene 1 plugins

many people ends into this site searching for emesene plugins and finds an old post about emesene 1 plugins, so I will update it to be useful.

first of all, emesene 1 comes with a set of supported plugins, the updated versions are located here:

http://emesene.svn.sourceforge.net/viewvc/emesene/trunk/emesene/plugins_base/

there are also unsupported plugins that you can also use, they are located here:

http://emesene.svn.sourceforge.net/viewvc/emesene/trunk/unsupported-plugins/

you can find a page on the wiki with a list of plugins here:

http://emesene.org/trac/wiki/Plugins

if you know of more plugins post a comment with the url, author and a description.

PS: I said plugins a lot so google index this page higher than the last one ;)

bye

EDIT:

Orfeo C reminded me about this repository of user contributed plugins, thanks!

http://code.google.com/p/emesene-plugins/

emesene forum is back!

thanks to roger and dx for fixing the forum
it's located here:

http://forum.emesene.org/

PS: the blog will still be used to keep track of the development and to make anounces.

Sunday, February 01, 2009

Information update

About empty contact list:

we have a problem with passport authentication, it happens for some people, we will look into it, thanks to Panagiotis Koutsias for the hint.

Edit: thanks to roger duran who fixed the problem!

About the jabber support:


the suport is still enabled by code (on emesene.py uncomment the line 46 and comment the line 47, that was easy! :D), in the future it will be enabled on login preferences.

about a roadmap for emesene 2:

not there is no roadmap :D

about bugs on emesene 1:

yes there are lots of bugs, but right now only I and dx are coding, and we are focused on emesene 2. If someone want to take on emesene 1 maintainance I will help them to start with the code.

about pydns and related:

you don't need that package and no bug will be fixed by installing it, it's just an optional package for jabber support

about needed packages:

you only need python and pygtk to use emesene, no extra package needed

about the location of emesene cache:

it's located on ~/.config/emesene2/ inside that there is the global config file and a folder for each account.

Wednesday, January 28, 2009

Formatting and toolbars added to emesene 2


During this weekend I rewrote the Menu implementation from scratch, that means that all the menus, popups and toolbars are new, I also implemented the conversation toolbar and select font, select color and clear buttons functionality, to make them useful I also implemented format message sending and display on the input and the output.

Thursday, January 22, 2009

some eyecandy

well, this is just the foundation for something that I have in mind

here is just what I hacked today, now I have to implement the conversation theme loader, manager and that stuff, and all that maintaining compatibility with the ones that don't have python-webkit.


I know, the theme is ugly, is what I did in 10 minutes to make the screenshot :D

Update, I made this theme and now the emoticons are shown ;)


Tuesday, January 20, 2009

A request implemented

an user asked to allow custom group sorting, another asked to sort the users by log size, so i implemented a new feature on the contact list that allows to provide "weights" to the users and groups to override the default order, if an user has more "weight" than another group, then it will be above the other, the same works for contacts, so you can change the weights by hand or use a plugin to calculate the weights for you.

a screenshot showing the feature is here:

as you can see, the group Otros is over the top and then comes emesene, the common order should be Amigos, (other groups..), Otros, (other groups..), emesene. also Roger is on the top of the group, and then comes dx, is easy to see there since they should be ordered first by status and then by display name.

This feature can be used to "sink" users you don't want to see assigning negative values ;)

take into account that I only implemented the feature on the contact list and the store/load from the config, no gui available (yet) to modify the weights.
I will implement it in some days I guess, right now I'm advancing on a personal project (I hope you hear about it in the next months ;)

Friday, January 16, 2009

Responses to requests and questions

Windows version

A lot of people asked for a new windows version, so I published a new one, check the post below :D

Clear button on the seach bar

The text is removed when you hide the search bar, it may be added later, but I need to add a dependency (libsexy)

Try icon

of course I will add it :D

Contact list sorting

emesene 2 sorts the contact getting the display name in this order:
  1. alias if exists
  2. nick if exists
  3. finally mail
so the contacts are ordered by those fields in that order, that means that if the contact has an alias, that will be used to sort, if not the nick will be used and if not (should not happen) the mail will be used.

Offline grouping

on emesene 2 the show by status option has no groups, it's a list of contacts sorted by status (and inside each status by the rules explained above). In this way the offline people are at the bottom, you can hide them unchecking "show offline", and there you go, "collapsed" offline group :D.

Open downloaded files with double click

seems reasonable :D

Qt front end

I don't know Qt, I would like to learn it, and trying to make a Qt front end seems like a nice excuse to me ;), but for now I will focus on the base and the gtk front end.

"Donate now" on Help

Nice idea, I got a donation only once, $10 from C10uD (thanks!, I will get that money and buy a beer sometime :D)

Get themes/plugins from a repository

I will add that.

Modify global configuration and inherit for new accounts

already done on emesene 2 :)

Save conversation on invisible mode

I will remember that :D

Hide blocked contacts (that is what I understood)

nice feature!

Resize large emoticons

I will try to remember it when p2p is implemented

Lower cpu usage with to many custom emoticons

animating a gif uses a lot of CPU I will see what can I do.

ugly maximized login window

on version 1 or 2?

what could be done to make it less ugly?

import/export logs

yep

search logs by client

ok..

Custom group sort

will see if I can implement it.

Better support for self on contact list

yep

Drag and drop for display picture

I need to implement p2p before but yes ;)


Disclaimer: Some of those requests are for features that are not implemented yet and will take a long time to be implemented, so please you will have to make me remember if I don't implement them

Emesene for windows release!

Thanks to j0hn who made a new release of emesene for windows, both portable and installer are provided, you can find both on emesene's sourceforge page

take it while it's hot!

Tuesday, January 13, 2009

small yet useful features requests

in a comment juancarlospaco requested a small but useful feature, that is to not display emoticons on the conversations, but just the shortcuts, I added it as a feature with 4 lines of code, so I thought that there may be some small but useful features that you would want to see on emesene 2.

no huge features allowed, post comments, I will see which of those I can add easily, the hard ones will be in my todo list, the ones that I can't implement will be explained here.

comment!

MSN protocol resources

if you want to learn how the msn protocol works, here I give you some links to read :)

The tools I use to debug and find new features are wireshark and ospy, both great tools, ospy is easier to use, but you need windows and WLM

Orfeo C recommended SocketSniff, I did't tested it, but it may be useful for someone

Not so frequently asked questions

disclaimer: the text was written really fast, expect some weird sentences :P

emesene cam/p2p/voice/custom emoticons/display pictures/handwrite/etc support


emesene 2 will support them some day, but they will not be implemented on the next alpha/beta release.
why? because I prefer to have a stable and maintainable base from which I can add that support later and keep the application stable and clean.
That was one of the failures of emesene 1, I wanted to add all the possible features and I never refactored or designed the application in a way that will make it maintainable, now there are bugs that are really hard to find/fix because of that, and you see that right now, no one wants to fix/maintain emesene 1, and that is not good. I want a documented and well structured base so I can get help from more coders that can understand and modify emesene 2 without having to read a mess of code.
So, I will make a release that will let you chat, do contact list operations, log and some preferences, and when that is polished I will start to work on more advanced features, some of them may come fast since we implemented them on emesene 1, some of them may take some time since MSN protocol changes all the time and voice/video are really platform dependent.

the will be available, but not in the next weeks.

report bugs

nobody is maintaining emesene 1 except some cleanup made by dx, if you want to report bugs go to emesene.org/trac but don't expect a fast response.

emesene 1.0.1 on windows (empty contact list)

there is an internal build of the latest trunk for windows it has some bugs that must be fixed, j0hn is working on that, I will see if we can make a release of it the next week (I didn't knew that people used emesene on windows.. :)

mac version

there are some instructions here http://emesene.org/trac/wiki/MacOSX my idea with emesene 2 is to make a cocoa version, but I have used a mac only 10 minutes on my whole life so if i dont get access to one of them maybe someone else will have to do it.
The code on emesene 2 is structured to make easy to implement other protocol support and other toolkits so if someone is interested..

emesene and python 3.0

python 3.0 is a transition release, not every library that we use is supported on it right now, we will code it using python 2.6 with the -3 switch and when all the libraries are available and python 3 is supported on the main distributions we will make the switch.

emesene 2 multiprotocol??

no, emesene 2 will not be multiprotocol, emesene 2 will be a MSN client, but since MSN is closed I feel like I'm helping to keep people using MS products, and since I use a Gtalk a lot lately I decided to test if e3 was designed as I thought to support jabber, I made the basic gtalk support on one night so it didn't consumed too much resources :D.
If you use the revision prior to Gtalk support you will see that nothing changed, that's because emesene 2 is still an MSN client, but now we add Gtalk support, that means that emesene 2 is not intended as a jabber client, you have gajim, pidgin and others for that, but only. Emesene 2 will not support other protocols, just those two and I won't sacrifice any MSN feature for Gtalk.

  • If a feature is on MSN and not in jabber it will be implemented on MSN and deactivated on Gtalk mode.
  • Advanced features of jabber will not be implemented if there is no MSN counterpart. (use gajim for that, it's a great client)
  • No more protocols supported
  • No multiaccount support, you either use one MSN account or one Gtalk account
  • MSN by default, Gtalk support changed on settings
and if you see, it's not hard to have more features than gtalk ;)

language support on windows

no main developer has windows installed on his machine so it's hard to test and add windows features, and language support doesn't work out of the box for us, if someone wants to be the windows maintainer, they are welcome :).

if you have more questions..

Tuesday, January 06, 2009

do you see something strange?


well, that's my gtalk account... ;)

Sunday, January 04, 2009

One question.

What would you like to read on the next post of this blog?

if you have some doubt or something you would like to know about the project or about something related, please comment and ask for it, I will try to post about the ones that find useful for the readers.

I expect the comments.

Saturday, January 03, 2009

How to test development versions of emesene?

If you want to test development versions of emesene, then this is your post! :P

A development version is one that is not yet released, and can be on different stages, for instance:

  • Alpha versions: not all the features available, unstable
  • Beta versions: almost all the features there, needs testing.
  • Release candidate: will become final version if no big bugs are found during testing.
on emesene we have a stable version (1.0.x), an unstable version (1.1.x) and an alpha version (code name mesinyer, a.k.a emesene 2).

All those versions are stored on our version control system that can be found on sourceforge (http://emesene.svn.sourceforge.net/viewvc/emesene/).

to test one of this versions you need to have a subversion client installed.

on linux you can install it from your repositories, something like

sudo aptitude install subversion
su -
yum install subversion

and so on..

on windows you can download a really nice client called tortoise svn

the first thing you need to do is to download the version you want to test, the 3 versions above are located at:

  • emesene 1.0.x: http://emesene.svn.sourceforge.net/viewvc/emesene/tags/emesene-1.0/
  • emesene 1.1.x: http://emesene.svn.sourceforge.net/viewvc/emesene/trunk/emesene/
  • emesene 2: http://emesene.svn.sourceforge.net/viewvc/emesene/trunk/mesinyer
these URLs are used to view the repositories.

on linux you run the "checkout" command that downloads the sourcecode for the first time:

svn co http://emesene.svn.sourceforge.net/svnroot/emesene/tags/emesene-1.0/ emesene-1-x

svn co https://emesene.svn.sourceforge.net/svnroot/emesene/trunk/emesene emesene

svn co https://emesene.svn.sourceforge.net/svnroot/emesene/trunk/mesinyer emesene2

depending on which version you want to download.

now that you have the code, cd to the folder and run emesene
  • python Controller.py # to run emesene 1
  • python emesene.py # to run emesene 2
once in a while you may want to update the folder, that means, to download all the changes that where made to the repository. To make that, cd into the folder and then do:

svn up

that will update all the files.

Thursday, January 01, 2009

emesene 2 alpha 1 screencast