Thursday, December 30, 2010

an idea

build a couchdb backend for the logger module in emesene 2 so you can have log synchronization between machines.

one step further:

document the design and make it generic for any IM client so people can store all their chat logs in the same database.

know some python and SQL and want to help?

if you want to help but you don't want to learn about emesene structure and know some python and SQL then you can help.

build a script that imports the logs from emesene 1 SQLite schema to the schema in emesene 2 SQLite log format.

this would be really helpful and may help some people to migrate to emesene 2.

Wednesday, December 08, 2010

updated instructions for windows users (still no package)

I tryied to make the msn backend work on windows and I updated the instructions on the readme in emesene.

the new stuff is related to the papyon backend for msn that now is the only supported backend and has some dependencies (OpenSSL, pyCrypto) and those need to be installed.

to make both instructions similar I recommend that you download and install msysgit from here:

http://code.google.com/p/msysgit/

and follow the instructions from here:

http://emesene-msn.blogspot.com/2010/10/instructions-for-testers.html

until you downloaded emesene code and updated the submodules, then follow the instructions in the INSTALL_WINDOWS.txt file here is an updated version:


https://github.com/marianoguerra/emesene/blob/master/INSTALL_WINDOWS.txt

I got emesene to run using papyon with this setup but the portable version gave me protocol error, if you can find the way to fix it it would be great.

still waiting for packages...

EDIT: I forgot to add one instruction, before running python setup.py py2exe you need to copy the papyon folder that is in emesene/emesene/e3/papylib/papyon/papyon to emesene/emesene/papyon, something like:

cp -r emesene/emesene/e3/papylib/papyon/papyon emesene/emesene/

to avoid the import error trying to load papyon.

Saturday, November 20, 2010

friendly reminder

  • we need developers! (we really do, please help us!)
  • we need testers (better if they try to help us to fix the problems they find :)
  • we need packagers! (windows packagers are the most important right now)
  • report bugs here: https://github.com/emesene/emesene/issues
  • docs here: http://emesene.org/docs/ (ask for more documentation on a topic if you need it)
  • spread the word about this post!
kthxbye

Wednesday, November 03, 2010

call for windows users

you want to collaborate? have windows installed and want to play a little with emesene 2?


then help us!


we need to bundle pywebkitgtk on windows to use adium themes in the conversation window.


I tried to make it work today but I couldn't, if you want to play and try to make it work, if you do document the steps so we can update the installer guide.


we will give you some rounds of applause for making something really useful for the project.


this site http://opensourcepack.blogspot.com/2009/12/pywebkitgtk-windows-binary.html seems to have the libraries needed, I downloaded the files and could run a demo browser that comes with it, but I couldn't make import webkit work, I got a dll loading error.


happy hacking!

Friday, October 29, 2010

Windows users, your turn

now that you have instructions on how to build installer and portable versions of emesene 2, I expect the best and most tested installer available in short time.

you asked for it, now you have it, make windows a first class citizen for emesene 2.

test it, fix the problems and provide up to date versions of emesene for your platform.

linux, *BSD users: what are you waiting to document how to package for your distro of choice and be at the level of windows?

if you have the steps documented, contact me so we can add them to the emesene repo and keep the updated versions where users can see them.

happy packaging!

Como generar archivos .exe e instaladores para una aplicación python (y pygtk)

Como generar archivos .exe e instaladores para una aplicación python


Este documento describe los pasos necesarios para crear un archivo ejecutable
de una aplicación python y como generar un instalador y una versión portable
para dicha instalación.

Este documento asume que la aplicación se basa en GTK pero debería funcionar
con menores cambios en otros toolkits.

porque un instalador

  • se requiere instalar muchos componentes a mano por el usuario final para una sola aplicación
  • muchos instaladores pequeños
  • difíciles de encontrar
  • difícil encontrar las versiones exactas que funcionan en conjunto
  • requiere instalarlos en un orden definido
  • rezar
  • algunas veces incluso haciendo todo bien puede no funcionar
  • fácil de automatizar y documentar para replicar con cada nueva versión
  • liberar al usuario final de los problemas para poder usar la aplicación

componentes requeridos

  • python
  • todas las librerías utilizadas por la aplicación
  • py2exe
  • nsis
  • tiempo y suerte

orden de instalación

algunos instaladores son independientes de otros, pero para evitar posibles problemas recomiendo la instalación en el siguiente orden.

  • python
  • gtk-runtime
  • gtk2-themes
  • nsis
  • pygobject
  • pycairo
  • pygtk
  • pywin32
  • py2exe

tareas extra

  • setear la variable de entorno PATH para agregar el path a la instalación de python
  • probar la instalación con una pequeña aplicación gtk
>>> import gtk
>>> w = gtk.Window()
>>> l = gtk.Label("asd")
>>> w.add(l)
>>> w.show_all()
>>> gtk.main()

prueba con una aplicación de ejemplo

Cree un repositorio con una aplicación de ejemplo para probar los pasos, la aplicación esta disponible en github acá:

http://github.com/marianoguerra/PyGtkOnWindows

pasos

  • descargarla
  • descomprimirla
  • ejecutar python setup.py py2exe
  • copiar los directorios lib y share de la instalación del runtime de gtk (no de la instalación de pygtk) al directorio dist
  • copiar todos los archivos del directorio dll al directorio dist
  • borrar los locales y temas no usados de los directorios copiados a dist (yo solo dejo el theme MS-Windows)
  • crear la siguiente estructura de directorios dentro de dist: etc/gtk-2.0
  • dentro de ese directorio crear un archivo llamado gtkrc con una linea como la siguiente dentro:
    • gtk-theme-name = "MS-Windows"
    • podes cambiar el tema usado manteniendo otro theme dentro de share/themes y cambiando el nombre del theme en gtkrc
  • right click en ejemplo.nsi y seleccionar "Compile NSIS Script"
  • right click en ejemplo-portable.nsi y seleccionar "Compile NSIS Script"
  • deberías tener el instalador y la versión portable disponibles
  • para probar que funciona correctamente, correr el instalador y la versión portable en una instalación de windows sin los paquetes que instalaste anteriormente

probar con una aplicación real

ahora para sentirlo mas real, creemos un instalador y una versión portable de
un programa real, en este caso, un proyecto personal llamado emesene 2
(http://www.emesene.org/).

pasos

  • descargarlo de http://github.com/emesene/emesene
  • descomprimirlo
  • copiar setup.py and ez_setup.py al directorio emesene
  • cd emesene
  • correr python setup.py py2exe
  • cd ..
  • copiar los directorios lib y share de la instalación del runtime de gtk (no de la instalación de pygtk) al directorio dist
  • copiar todos los archivos del directorio dll al directorio dist
  • borrar los locales y temas no usados de los directorios copiados a dist (yo solo dejo el theme MS-Windows)
  • crear la siguiente estructura de directorios dentro de dist: etc/gtk-2.0
  • dentro de ese directorio crear un archivo llamado gtkrc con una linea como la siguiente dentro:
    • gtk-theme-name = "MS-Windows"
    • podes cambiar el tema usado manteniendo otro theme dentro de share/themes y cambiando el nombre del theme en gtkrc
  • right click en emesene.nsi y seleccionar "Compile NSIS Script"
  • right click en emesene-portable.nsi y seleccionar "Compile NSIS Script"
  • deberías tener el instalador y la versión portable disponibles
  • para probar que funciona correctamente, correr el instalador y la versión portable en una instalación de windows sin los paquetes que instalaste anteriormente

notas

How to generate .exe files and installers for a python (and pygtk) applications

How to generate .exe files and installers for a python applications


This document describes the steps required to create an executable file from a
python program and how to build an installer and portable file from that
application.


The document assumes that the application is based on GTK but it should work
with minor changes for other toolkits.

why an installer

  • many components are required to install by hand by the end user for a simple application
  • a lot of small installers
  • hard to find
  • hard to match the exact versions that work together
  • install them in the required order
  • pray
  • sometimes even doing everything right it may not work
  • easy to automate and document to replicate with each new version
  • free the end user from problems to use the app

required components

  • python
  • all the libraries used by the application
  • py2exe
  • nsis
  • time and luck ;)

installation order


some installers are independent from the others, but to avoid posible problems I recommend the installation in this order.

  • python
  • gtk-runtime
  • gtk2-themes
  • nsis
  • pygobject
  • pycairo
  • pygtk
  • pywin32
  • py2exe

extra tasks

  • set the PATH environment variable to add the path to the python installation
  • test that the installation works with a simple gtk application
>>> import gtk

>>> w = gtk.Window()
>>> l = gtk.Label("asd")
>>> w.add(l)
>>> w.show_all()
>>> gtk.main()

test with a sample application


I created a repository with a sample application to test the steps, the application is available in github here:

http://github.com/marianoguerra/PyGtkOnWindows

steps

  • download it
  • unpack it
  • run python setup.py py2exe
  • copy the lib and share directory from the gtk runtime installation (not the pygtk installation) to the dist directory
  • copy all the files from the dll directory to the dist directory
  • remove unused locales and unused themes (I keep only ms theme)
  • create the following dirs inside dist: etc/gtk-2.0
  • inside that create a file called gtkrc with a line like this inside:
    • gtk-theme-name = "MS-Windows"
    • you can change the theme by keeping that theme inside share/themes and changing the name in gtkrc
  • right click on ejemplo.nsi and select "Compile NSIS Script"
  • right click on ejemplo-portable.nsi and select "Compile NSIS Script"
  • you should have the installer and portable versions available
  • to test that it works correctly, run the installer and portable versions in a windows installation without the packages you installed previously

test with a real application

now to make it feel more real let's create an installer and portable versions
for a real world program, in this case, a project of mine called emesene 2
(http://www.emesene.org/).

steps


  • download it from http://github.com/emesene/emesene
  • unpack it
  • copy setup.py and ez_setup.py to the emesene directory
  • cd to emesene
  • run python setup.py py2exe
  • cd ..
  • copy the lib and share directory from the gtk runtime installation (not the pygtk installation) to the dist directory
  • copy all the files from the dll directory to the dist directory
  • remove unused locales and unused themes (I keep only ms theme)
  • create the following dirs inside dist: etc/gtk-2.0
  • inside that create a file called gtkrc with a line like this inside:
    • gtk-theme-name = "MS-Windows"
    • you can change the theme by keeping that theme inside share/themes and changing the name in gtkrc
  • right click on emesene.nsi and select "Compile NSIS Script"
  • right click on emesene-portable.nsi and select "Compile NSIS Script"
  • you should have the installer and portable versions available
  • to test that it works correctly, run the installer and portable versions in a windows installation without the packages you installed previously

notes

Monday, October 25, 2010

it's coming

emesene 2 on windows :D

right now I have the installer and portable versions available, I need to test them some more.

if you really want to test it, follow the instructions in INSTALL_WINDOWS.txt and become the windows mantainer ;).



Sunday, October 24, 2010

maybe I forgot, where to report bugs/problems/requests

I think I never mentioned where to report bugs, problems or request features.

we are using the issue tracker of github:

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

please check that your issue isn't already reported by someone else.

if you want to help us you could try to solve some of the issues.

instructions for testers

first of all a warning: the ppa is currently outdated in relation to the git repository, if you want to test you will have to use the git repo, below are instructions on how to do it.

if someone can help us setting up a daily updated ppa it would be great!

how to get the latest version of emesene 2 from git:

first install git (instruction for debian based distros here)

sudo apt-get install git-core

clone emesene 2 from git


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


init and update submodules


cd emesene
git submodule init
git submodule update

from time to time update from the repo

git pull origin master
git submodule update

with that you should have the latest development version and updated when you need it.

to run do

cd emesene
./emesene

happy usage!

qt frontend and problems connecting

hi, lot of people seem to have problems connection with papyon backend in emesene 2.

if you have this problems try selecting the e3.msn session in the login window clicking the preference button that is at the bottom right corner of the window. Or you can also use it with gtalk or facebook (a little more experimental backends).

I would also like to introduce a new sub project inside emesene 2, Whisky84 started working on a qt4 frontend for emesene 2, the code is located here: http://github.com/Whisky84/emesene

warning, this is in heavy development, only try it if you are a developer and want to help him

thanks to Whisky84!

the message I saw yesterday is that we need testers, yes we need them but we also really need developers to help us, so run that message too!

thanks all of the people that helped since yesterday!

Saturday, October 23, 2010

we need a release and we need it now, and we need help!

with some time to use on my projects I decided to give emesene 2 a renewed push to try to make it deserve the label of beta.

I started fixing issues, closing duplicated, confusing or out of date issues and I only was left with feature requests and papyon bugs. That means two things:

  • emesene 2 is pretty stable
  • and/or nobody is using it
that means that we need users using it and since emesene 1.x is in maintainance only mode, we need to start moving users and developers to emesene 2. This means that you, your friends and your cat should be using/testing/developing emesene 2. I think that if we don't make the transition to emesene 2 both emesene 1 and 2 will stall and go the way of the dodo.


this is a call for action, start spreading the word, looking for users/testers/developers/packagers


we need all of those and more important we need developers and packagers to get to the release of emesene 2.


at this point emesene 2 is at feature parity with what was the emesene 1.0 release and it is more customizable, extensible and stable than emesene 1.0 was on the release date.

what I'm trying to say? if we keep waiting for emesene 2 to pass the features of emesene 1.6.3 we will never make a release. It's time to focus on the core features and stabilize. Later with a stable release people will start to help with fixes, plugins and extensions but a forever alpha doesn't help nobody.

since yesterday was capslock day I will say it like it deserves to be said

WE NEED HELP NOW!

start working on making emesene 2 the most awesome IM client on earth now!

here is a picture of a panda to motivate you, if this doesn't help I don't know what will...

Wednesday, September 15, 2010

long time no see

hi, back from some busy months, I just wanted to show you how awesome extensions are, for that I built an extension to make the input box in the conversation window as minimal as it can be.

This shows how customizable emesene can be and how easy is to modify any part of emesene with an extension.

less talk more screenshots:


as you can see I changed the config to hide all stuff that was in the way to get a minimal look and feel.

how hard was it to add a new input box extension?

48 lines of code

yep, that easy.

now go and tell your friends that emesene 2 is developer friendly and help us make the most awesome, good looking, customizable and extensible IM client on earth!

Wednesday, June 30, 2010

emesene 1.6.2 installer and portable available for windows

the 1.6.2 release of emesene has now both installer and portable versions for windows.

grab them in the download section

Sunday, June 27, 2010

some documentation

now you don't have excuses to start hacking

emesene documentation

ask for more topics, I will try to cover them.

Friday, June 04, 2010

Documentation on the way

In order to make it easy for newcomers to contribute to emesene 2 I'm creating documentation about the code structure, code guidelines and tools we use.

I would like to ear what kind of documentation would you like to see and would be useful.

please comment

Tuesday, May 18, 2010

why isn't feature X implemented, it's really important!

>>> def itsimportant(thing):
... print "why isn't", thing, "implemented, it's really important"
...
>>> [itsimportant(x) for x in ["video", "audio", "backgrounds", "games"]]
why isn't video implemented, it's really important
why isn't audio implemented, it's really important
why isn't backgrounds implemented, it's really important
why isn't games implemented, it's really important

We know there are features not implemented, we know you think they are pretty basic and they should be available for emesene to be a "serious" project.

But as you may know, we develop emesene because we like to, in our free time, for free, so when we can we try to implement the basic things missing and improve the project.

all multimedia stuff is really hard and platform dependent so even when emesene 1.6 has video support we get a lot of "my webcam doesn't work", "it's slow", "why not audio" etc.

Not only is hard, it also breaks with new versions, so all your time invested goes through the window when MS thinks it's fun t break everything. See here for more information.

if you can help in any way then do it, but please understand that we know what is missing and that is important.

saying things like "I would use emesene if it has X" won't make us run and implement it, because our time is limited and we don't like that kind of pressure.

we try to make emesene awesome, if you think emesene could be better then you can hire the main developers, they will work full time and will have to implement that features because that is what they are paid for ;)

one last so you understand: I don't even use the msn network since 2 years ago, so I'm not even developing something I use (I use emesene 2 with the jabber support only). So I'm developing features that I won't use just for you to have a nice alternative to MSN on linux. This should give you an idea of how much we like emesene to be awesome, even when I don't use almost all the features it has.

Wednesday, May 05, 2010

making the wheel spin again

hi! remember me? remember this project?

well, I've been busy lately (now I'm an engineer :) and this days I started using emesene 2 with the jabber backend so I force myself to fix bugs and improve it.
I started fixing some bugs but I noted that the project was a little stalled on github.

As any project we can't depend on the time or willing to code of one person (not just me, I'm taling about cloud, cando, and all the other people that help regularly), so we need to get more people willing to help us making emesene 2 the best IM client around.

That means that if you can try it, test it, find bugs and hopefully fix them, then you should, and if you want to go an extra mile, please talk about this project wherever you can so we may reach people willing to help us.

right now I fixed some bugs regarding adium themes, loading preferences and extensions, an exception while connection to jabber and some smaller ones. But we can't depend on one coder so if you are willing to help, then jump on board.

any question you have on how to collaborate, leave a comment or go to the forum and make some noise about emesene 2.

Friday, March 12, 2010

new attemp at an old project

do you want to try something new? do you have a cool place to recommend? help me to add new cool places in http://pleinu.appspot.com (advices/complaints are welcome)

this time it starts from the basics and will grow according to your feedback

for the geeks like me, it's made with python over google appengine using tubes*

* http://a-series-of-tubes.appspot.com/ and http://github.com/marianoguerra/tubes

Wednesday, March 03, 2010

adium themes FTW




a picture is worth a thousand words, two pictures... I don't know, maybe 1532 words?

Friday, February 19, 2010

facebook chat on emesene 2

really experimental but it works (sort of)

the day that facebook announced support for jabber on facebook chat I made some changes on emesene 2 to make possibly to use emesene to chat on the facebook network. It wasn't so hard thanks to how awesome xmpp (jabber) is.

I added the possibility to parametrize host and port on preferences and now it's possible to chat through jabber on any server (that means, gtalk, facebook chat, jabber itself and I think AIM too).

the things that works:

  • log in
  • list contacts
  • chat

thins that work some time: status update of the contacts
things that don't work: all the others :D

I will try to bring the jabber support up to date.

to connect follow this guide: http://www.facebook.com/sitetour/chat.php

what are you listening?


I think the plugin that most people may use according to how many mails I get with that subject is the "current song" plugin.

So to start polishing the plugin system on emesene 2 I decided to implement the "music" plugin, that is like "current song" but on emesene 2.

you can see the code here:

http://github.com/marianoguerra/emesene/tree/master/mesinyer/plugins/music/

basically you have to create a file called handler_<your music player name here>.py and copy the content of handler_mpd.py replacing the body of the functions for the code required to do those actions on your preferred music player, after you finished that, change the last line:

songretriever.register('mpd', Handler())

by changing 'mpd' for the name of your player and then add a line at the bottom of the songretriever.py file to import your module.

and that's all!

please if you want to contribute a handler for this plugin use pylint on the file before sending it to me, code quality is one of the goals on emesene 2 :)

Thursday, January 28, 2010

MSN protocol resources

Someone asked me about which resources do I use to implement the MSN protocol library on emesene, so I will write them down here so anyone interested can start playing with it.

a wiki about the protocol

http://msnpiki.msnfanatic.com/index.php/Main_Page

an outdated wiki about the protocol

http://www.hypothetic.org/docs/msn/

a forum to ask when something is not working for you:

http://forums.fanatic.net.nz/index.php?showforum=91

if you want to do some reverse engineering you should use ospy (windows only, to hook to Windows Live messenger)

http://code.google.com/p/ospy/

more generic and multiplatform

http://www.wireshark.org/

happy hacking!

Saturday, January 16, 2010

my other projects

here is a list of my other projects, maybe you may find some of them useful:

efene: website, code, blog
efene is a programming language with a C-like syntax for the erlang virtual machine, I created it to make it easier for people to go from "traditional" languages to erlang (BTW erlang rules :P)

tubes: website, code
a really small framework to create websites and REST APIs without to much code, it takes the repetitive code out, it also contains some code to generate repetitive js code for the models and the REST APIS, and to test the APIs.

travlr.in: website
a site that is like a wikipedia for cool places, you create a "spot" put information about it, add events, comments, associate links, images, videos. The idea is to go there to search for cool places around you whether you are on a new place or just want to look for interesting stuff around you. It can be also be used to search for more common stuff like shops, pharmacies etc.

webless: code, screenshot
a really small project that I had based on an idea about doing server side rendering and filtering using jquery, basically you put an url, and write some javascript (you can use jquery and json2.js libraries) you can modify the site with javascript as you wish, the result is returned to you. If you find the "mashup" useful you can save it and you have an URL to load the content. Imagine extracting the weather, currency, or headlines from a site to be used by another or some stuff like that.

repiola: website and code
repiola is a small desktop and mobile app to make programs with an assembly style syntax that draw in a surface, I made it to play with something on my phone while waiting for something.

if you find some of it useful, want to report bugs or something like that, just contact me luismarianoguerra in gmail.

Closing issues

I added the "No group" to group all the users that are not in a group (duh!).

I added the option to group all the offline users inside a special group.

Also added Ctrl+Esc and Ctrl+Tab shortcuts on the conversation window.

thanks to cando who started contributing code.

Now start testing and contributing!

Wednesday, January 06, 2010

emesene 1.6 - "mate" has been released!

With loads of bugfixes, gui awesomeness and the new year here comes the new release of your beloved msn client:

  • Improved gui usability
  • New preference window (arielj, ukblacknight, nicolaide, mehd36)
  • Implemented nick and personal message roaming (pablo)
  • Fixed tons of bugs all around the code (we're too lazy to write 'em all)

This time, even if the changes are big, the changelog is very small: while we make emesene better we're looking towards emesene2 (if you're not reading the blog, do it!) and we need all your support in order to bring our beloved program to a new level :)

You can cooperate with the emesene team in any way you want:

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