WordPress GSoC: Trac Social Bug Tracking Development

First of the writings about GSoC 2008 is my application to WordPress, called “Trac Social Bug Tracking Development”, that would have been mentored by Lloyd Budd if it had been selected.

== Personal Details ==

* Name: Christian Lopez Espinola
* Email: Not published
* GTalk ID: Not published
I’ll be idling at #wordpress-dev on Freenode too.

== Project Proposal ==
I want to work on the Trac social improvements for the WP community proposal at your Ideas page.
I have done some research about how karma works in another systems. I found this article terribly useful: http://eskar.dk/andreas/blog/?p=154

I want to describe here some results about my investigation in how karma works on some systems:

* Mantis: The different actions increases user’s karma. The admins must rank the actions, and a number of points are associated to the actions, it involves human interaction. See http://bugs.digium.com/karma_view_transactions.php?id=46 as an example.

* Launchpad: The different actions increases user’s karma as Mantis, but it depends also on when the action took place. This encourages newer users/devs to catch up older and inactive ones. Described at https://help.launchpad.net/KarmaCalculation?highlight=(karma)

* GNOME Bugzilla: It gives a score based on reports, bugs reported and bugs closed. From the analyzed systems, it’ s the one that looks at less variables, and it’s published the formula for documenting it:
log_10(1 + #comments) + log_2(1 + #bugs_closed) + log_2(1 + #bugs_reported)
On of the advantages of this one is that it gets progressively harder to gain more points as you go along. So it encourages newer users/devs, because they would win karma quickly at their first steps.

It seems that the latter use cron tasks or similar to update daily the points given, but Mantis seems that this is done by hand. I should investigate deeply on this if required looking at the source code of Mantis and/or Bugzilla. I don’t expect that Launchpad will be released with an open source license soon, that’s a pity.

My conclusions with this first research are that
– manual work should be avoided, but it should be allowed that the members of a group (think about ‘core devs’) can increase by hand the user’s karma, with a +/- system like Slashdot and other social websites.
– Taking care about ‘when’ the task is done is a good thing, because shows the current involvement in the community of an user.
– the deliverable should include a script that updates daily the databases, but maybe a svn hook too, along with a plugin for trac.

About the technical side of the project, I have no experience with trac plugin development, but I’ve seen the API linked at http://trac.edgewall.org/wiki/TracDev/PluginDevelopment
and read about the customization of tickets fields before, and I’m capable of doing the work. There are a lot of open source plugins where I can look at if I have any problem, and I know that the Trac community is very active at their IRC channel.

== Schedule of Deliverables ==
According to http://code.google.com/opensource/gsoc/2008/faqs.html#0.1_timeline:

– Community Bonding Period:
I’ll be discussing with the WP community about the requirements of the project. I think that the conclusions that I mentioned in the project proposal section are great requirements of how this plugin should work, but I’m sure that I have missed a lot of variables because I don’t know very well the WP community, so I’ll be glad of getting feedback and being involved in the community.
– From May 26 to June 7, I’ll start doing a simple example Trac plugin, that will show me how I should use templates for the trac web pages, and how to listen to ticket and wiki pages events from the trac public API.
– From June 7 to June 30, it’s my exams period at University, so I’ll be less active in the development. I’ll design the database tables involved on the karma system and I’ll try to do some work on the initial templates for the user’s karma summary web page.
– From July 1 to July 14, I’ll work on the karma algorithm (that involves a cron job that runs a python script), and I’ll do the first prototype of the voting system (if finally required). I will work on creating an egg file, so mentor (and anyone else) can deploy it easily, so he (they) can test the system and do the mid-term evaluation accordingly.
* DELIVERABLES: Python script that updates the karma 0.5, trac plugin 0.5.
– From July 15 to July 31, listening to the mentor (and community’s feedback), I’ll work on improving the karma algorithm (if needed), and fixing bugs. SVN logs can be read through commits hooks or in the cron job, so if it’s needed, I’ll work on the SVN hook.
– From August 1 to August 10, I’ll be integrating the score per action configuration into the trac webadmin interface. I think that this can help in changing the scores per task in the future, and help other communities that use trac to customize for their needs.
– From August 10 to August 18, if all went fine, the project is finished, so I’ll try to begin looking at issues databases of Trac and WordPress, and I’ll start helping in bugs resolution in the core of this project(s), increasing my own karma.
* DELIVERABLES: Python Script 1.0, trac plugin 1.0, SVN hook 1.0 (if needed)

== Open Source Development Experience ==
I have done several patches to OpenLayers, a mapping API project developed on Javascript.
On last summer, I participated on SoC under the ArgoUML umbrella, project in which I have worked before. Since SoC 2007 finished, I’m a core developer and I have been contributing on fixing bugs and improving/maintaining my work, as long as developing some new features.

Relating to python, I have worked in some opensource games development and contributed to a TurboGears-based opensource website called Sweetter (sweetter.net) that it’s based on the Twitter ideas, but with some new functionality, like TODO tasks and karma.
I have been developing some personal projects in python too, but not large projects.

Relating to karma, I’m a ‘My name is Earl’ fan.

More about my opensource activities at http://www.ohloh.net/accounts/670

== Work/Internship Experience ==
I have web development experience, but excluding some sweetter.net work, none of it with python. Anyway, it shows that I can write standard XHTML, CSS and Javascript (functional-oriented or OOP).
I have web security knowledge, and I’ve given some conferences about this and other fields.

See my past jobs at http://www.linkedin.com/in/penyaskito

== Academic Experience ==
I plan to graduate on September 2008 on Computer Science in University of Seville, Spain. I have deep knowledge about web development, web standards, design patterns, task management, programming (in several languages: very proficient in C#, Java, Javascript; proficient in C, Python and PHP -I want to improve this, so I’m here applying-),… I learn quick.

== Why WordPress ==
Because I want to improve my PHP and Python skills, and this is a perfect way of doing it. I love wordpress (I blog at penyaskitodice.wordpress.com), and I love trac, so this is the perfect project for me. It involves both of them!
I love communities, specially opensource communities (my contributions to the ProducingOSS book spanish translation shows it: http://producingoss.com/es/), and this karma project can increase the motivation of opensource contributors.

== Why me ==
This section is not on the template, but I feel that I should add it.
– I know how to work on group, and I listen to the community desires.
– I don’t need a lot of mentoring (I will only need it in the karma algorithm feedback), so my mentor can choose another student too, making more slots available to the WP project.
– I love opensource.
– I’m a trac user and a wordpress user.
– I learn quickly, and I always want to learn more.
– I’m a geek.

I hope you like my application. I’m ready for getting involved, and I want to hear your feedback!

Thanks for your time.

If I would have to rewrite my application, I’d change some things, but I want to keep it untouched because this is what it was evaluated.

Looking at the comments that I received, it seems that the application liked to my possible mentor, but I was already selected for ArgoUML, so we won’t know ever if I would have been selected for this project.

Advertisements

Anunciados Google Summer of Code 2008

Google Summer of Code 2008

After last year’s experience, I applied again to Google Summer of Code. I did two proposals, one for ArgoUML, and one for WordPress, and the ArgoUML one have been selected (WP folks said me that my proposal was great, but that I’ve been selected by another org). I’ll post soon both proposals, but I want to advance that I’ll be working on “UI Code generation for ArgoUML property panels”. Last year, not only me, but two great friends from my school were selected, Marcos (Mono) and Ana (Debian). This year, again, some friends from my school have been selected, so we are:

Not in the University of Sevilla, but in the UNED, I want to remark another friend of mine:

  • Replace auto* with CMake (PHP), by Alejandro Leiva Rojas, mentored by Pierre A. Joye
  • This year ~66 Spanish students will have a great opportunity for showing their skills on an Open Source Project. More stats at the official announce.
    You can join Google Summer of Code next year, but you can begin contributing right now!


    Google Summer of Code 2008

    Tras la gran experiencia del año pasado, solicité de nuevo la Google Summer of Code. Hice dos propuestas, una para ArgoUML, y otra para WordPress, y la de ArgoUML ha sido seleccionada (la gente de WP me dijo que mi propuesta era buena, pero que había sido seleccionado por otra organización). Publicaré pronto ambas propuestas, pero adelanto que estaré trabajando en “Generación de código de UI para los paneles de propiedades de ArgoUML”. El pasado año, no sólo yo, sino que dos grandes amigos de mi escuela fueron seleccionados, Marcos (Mono) y Ana (Debian). Este año, de nuevo, algunos amigos de mi escuela han sido seleccionados, por lo que somos:

    No es estudiante de la Universidad de Sevilla, sino de la UNED, pero quiero mencionar a otro amigo:

  • Sustituir auto* con CMake (PHP), por Alejandro Leiva Rojas, dirigido por Pierre A. Joye
  • Este año cerca de 66 estudiantes españoles tendrán la gran oportunidad de mostrar sus capacidades en un proyecto de software libre. Más estadísticas en el anuncio oficial.
    Puedes unirte al Google Summer of Code el año que viene, ¡pero puedes empezar a contribuir ahora mismo!

    Crónicas varias

    No saco demasiado tiempo últimamente para publicar, así que voy a intentar resumir brevemente los últimos eventos en los que he estado, que no han sido pocos.

    X Congreso Hispalinux

    img_3786 Entre los días 13 y 16 de diciembre se celebró el X Congreso Hispalinux en Cáceres. Como el Jueves 13 teníamos Ana y yo el examen de bases de datos, pues llegamos a última hora para recoger las acreditaciones y nos perdimos el primer día de Congreso. En general, el evento estuvo bastante bien, aunque eché de menos más contenido técnico. Debido a esto, preferí hacer un poco de networking por los pasillos en vez de asistir a las charlas. A una de las que sí asistí fue la de Paul C. Brown, director de Linux Magazine, sobre “Cómo no dar una charla técnica”. Aprendí algunas cosas que espero seguir poniendo en práctica 🙂

    Paul C. Brown

    Simultáneamente al Congreso, se des arrollaban varios eventos más, entre ellos el

    I Encuentro de Desarrolladores de Software Libre

    que se celebró el domingo 16. Al haberse organizado con tan poco tiempo, fue un poco improvisado, pero sin embargo me gustó bastante conocer a otros desarrolladores de opensource y compartir experiencias. Una de las cosas que se debatieron fue cómo debe ser el siguiente Encuentro, y de éste sí tengo grandes expectativas, y espero poder estar. Las conclusiones que se sacaron del I Encuentro estarán disponibles pronto, y serán anunciadas aquí, al igual que la fecha del siguiente Encuentro una vez se sepa. Tengo que agradecer a la ETSII Sevilla el habernos ayudado a asistir a este evento.

    Tiza Wiki

    Sobre Cáceres, no pude conocerla como me hubiera gustado, pero me ha dejado muy buenas sensaciones. La ciudad es preciosa, y la gente es muy acogedora. Por ello planeo volver pronto a hacer una nueva visita. En Cáceres conocimos a unos chavales estupendos que nos llevaron de fiesta (¡hola Ale y Cristina!), a José, un tío genial colega de danigm que me ofreció su casa para la próxima visita, a Arnau, que venía de Oviedo, y a Juan Luis Belmonte, de Zaragoza, un participante en el II Concurso Universitario de Software Libre.

    Charla Google Summer of Code (O cómo enamorarse en verano)

    La charla sobre el GSoC me gustó mucho, y creo que a Marcos y a Ana Guerrero también. Les contamos a los asistentes que es el Google Summer of Code, cómo apuntarse, cómo hacer una buena propuesta, y les animamos a participar. Ofrecimos nuestros correos para ayudar a los interesados, y, por supuesto, spameamos con nuestros blogs. Esperamos que este año sean más de tres los participantes de nuestra escuela que participen. Sobre esta charla escribiré más detalladamente pronto, con presentaciones y vídeo incluidos.

    charlagsoc 

    I Quedada Twitter&Blogs&Beers Sevilla

    El jueves 20 se celebró la primera quedada twittera sevillana, como ya anuncié, y estuvo muy bien. Siempre es una buena ocasión para conocer gente nueva (encima con el respaldo de gente conocida 😉 ), y la verdad es que fue muy divertido. Moande ha escrito más y mejor sobre la quedada (no salgo en la foto, llegué tarde :-P). Teok no apareció, pero espero verle en la próxima. Cuando haya fecha, la anuncio por aquí.

    Kopi, Marcos, yo, Luisfer

    Esta semana también estuvo cargada de cafés, comidas, bebidas y nocturnidades, pero eso es otra historia…

    Google Summer of Code

    GSoC 2007

    O cómo enamorarte en verano. O I’m feeling lucky. O como quieras llamarlo.

    Participar el verano pasado en el programa Google Summer of Code fue una pasada, y, como los principios del Open Source incluyen el compartir, queremos compartir nuestra experiencia con vosotros, y ayudaros a que vosotros también podáis disfrutarla el próximo verano.

    Por ello, Ana Guerrero (Debian), Marcos Cobeña (Mono) y yo (ArgoUML) vamos a estar el próximo día jueves 20 de Diciembre por el aula A0.12 de la E.T.S. de Ingeniería Informática de Sevilla, de 12.30 a 14.00, para contaros nuestra experiencia, animaros a participar y orientaros en el proceso de selección para que vosotros también podáis enamoraros el verano que viene.

    Espero veros allí. Y, por favor, spread the word.

    Thanks

    ArgoUML

    El Google Summer of Code toca a su fin. Han sido tres duros meses, pero la recompensa ya casi está aquí: tenemos una versión funcional de los diagramas de secuencia, y casi completa. Faltan algunas características que podéis ver en la figura 89 de la especificación de UML.

    Básicamente, faltan los forks de la última columna, ya que las condiciones se pueden crear gráficamente.
    Una de las últimas cosas en la que hemos trabajado ha sido los mensajes al propio classifier role, y ha sido un poco chungo el crear los mensajes curvos, pero ya casi está finiquitado.

    Fig 89 from the UML specification

    No puedo menos que agradecer a Bob su paciencia, a la gente de ArgoUML la oportunidad y el cariño, y a Google el haber creado este fantástico programa… y por supuesto, tengo que agradecer a todos vosotros vuestro interés por el proyecto.

    Se acabó el Google Summer of Code 2007… ¡ya llega el Google Summer of Code 2008!

    Quizá quieras leer…

    Patches para Google

    Una de los últimos flecos por cerrar para finiquitar el Google Summer of Code es enviar el código a Google.

    Yo no tengo problema, pues he trabajado en un repositorio de subversion para mi solo, pero en el caso de haber compartido el repositorio habría que enviar sólo nuestros patches.

    Mark es una de las personas que se ven en esta situación, y como él está más agobiado que yo, le he echado una mano con esta tarea.

    Para ello, que mejor que un script de bash. Se encarga de obtener todos los commits hechos por un usuario, y crear los patches correspondientes.

    svn log | grep penyaskito | awk '/r[0-9]/ {print $1}' | tr -d 'r' > file
    cat file |   # Supply input from a file
    while read rev # As long as there is another line to read ...
    do
            echo "svn diff -r $rev:$(($rev - 1)) > patches/$rev.patch"
            svn diff -r $rev:$(($rev - 1)) > patches/$rev.patch
    done