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 ;)