Código de Conducta de la comunidad KDE

Comunidad KDE

Invito a todos los hispanohablantes, miembros de KDE, a leer nuestro Código de Conducta. Esto es muy importante para mantener una buena relación entre todos los miembros de esta maravillosa comunidad internacional.


Si perteneces a KDE o alguna otra comunidad de Sofware Libre o código abierto, por favor, difúndelo.



The KDE LaKademy 2014 experience – São Paulo, Brazil.

Long time without posting :)

Well, from August 27th to 30th, KDE contributors met in LaKademy (Latin American Akademy).  We got together in São Paulo, Brazil and the meeting took place in the Free Software Competence Center (CCSL) at University of São Paulo (USP).

It was my third time in Brazil and was great to meet again with my KDE Brazilian friends and learn more about the KDE community. Besides discussing about KDE applications, frameworks, technologies, projects… we had some really interesting talks and hacking sessions of course.

KDE - LaKademy

KDE - LaKademy

As usual, we enjoyed some beers everyday and visited the Garoa Hacker Clube, one of the most important Hacker Spaces in São Paulo. These guys use full Open Source, software and hardware… Continue reading “The KDE LaKademy 2014 experience – São Paulo, Brazil.”

KDE Connect: Connecting your devices to KDE

KDE Connect

KDE Connect was initially developed as part of a KDE GSoC project in 2013 and is one of those exciting KDE projects that makes you love more this awesome community.  KDE Connect aims to communicate and connect all sort of devices to KDE and vice versa. The objective of KDE Connect is to make your devices interact with each other in a simple and efficient way. Some examples:  Imagine, with a single click, send a document/picture/video from your desktop to your Android phone or control your desktop media player from your mobile. KDE Connect, at the moment, support the following features: … Continue reading “KDE Connect: Connecting your devices to KDE”

Lakademy 2014 – KDE América Latina

Lakademy 2014 - KDE

Del 27 al 30 de agosto se realizará el 2do  LaKademy – Akademy de América Latina, el encuentro de usuarios y colaboradores latinoamericanos de KDE, una de las comunidades de software libre y código abierto, más grandes del mundo.

El evento se realizará en São Paulo – SP – Brasil, en las instalaciones del CCSL – Centro de Competência em Software Livre do IME-US. La región es de gran importancia para el proyecto, pues cuenta con una gran comunidad de desarrolladores y usuarios. Diversas empresas y gobiernos utilizan, desarrollan y adoptan políticas para el uso de software libre, y mucho de este software es desarrollado por KDE… Continue reading “Lakademy 2014 – KDE América Latina”

Presenting KDE 4.10 in Cusco, Peru

This friday, March 15 at 10:00am I will be presenting KDE 4.10 at the “Universidad Andina”  in Cusco, Peru.  I’ll talk about the KDE community and,  of course,  the Plasma Workspaces,  applications, as well as the new features added in this impressive release.

Joins us!!!

My beautiful KDE 4.10:

KDE 4.10 - Desktop
KDE 4.10 – Desktop
KDE 4.10 - Desktop
KDE 4.10 – Desktop
KDE 4.10 - Marble
KDE 4.10 – Marble
KDE 4.10 - Gwenview
KDE 4.10 – Gwenview
KDE 4.10 - Dolphin
KDE 4.10 – Dolphin
KDE 4.10 - Dolphin MTP Devices
KDE 4.10 – Dolphin MTP Devices
KDE 4.10 - Dolphin
KDE 4.10 – Dolphin
KDE 4.10 - Kate
KDE 4.10 – Kate

LaKademy – The first KDE Latin America meeting


Finally, I am ready. As you probably have read in various blog posts, the first KDE Latin America meeting, will take place in Porto Alegre, Brazil.  This will be a great opportunity to return my work on KDE coding.

It definitely would be awesome to meet all developers and contributors from other LA countries, I already met some KDE Brazilian developers in Latinoware 201o, which was my first KDE event outside Peru.

I’ll work on KDE-Games, on porting a game to the new graphics system available in the KDE Games and Qt Quick porting too. Another project that interest me a lot is KDE Telepathy, I follow the project development some time ago,  so if there is enough time will take a look on this.


I continue spreading the word about KDE in many FOSS events here in Peru, but I think we need more partcipation and contributions, so working in promo and learning from other KDE communities will be valuable. Thanks a million to the KDE e.V  for supporting this event.

See you in Porto Alegre.

GSoC final report: MessageViewer ( Kmail ) and Akregator ported to Grantlee.

It has been a long time without posting, but well GSoC finished and it’s time to share with the community the result of the project.

First, I want to thank you my mentors Thomas McGuire and Stephen Kelly for the support, the knowledge shared and of course coding tips.  I really learned a lot from them and one important thing:  How the Open Source development works.

The MessageViewer

Well, inside kdepim there is a library called MessageViewer which job is to provide a widget that can show a message. The first goal of the project was to port the MessageViewer to the Grantlee template system for both reasons: First, to have a clean, readable and more maintainable code and second to have a solid theming system to show/get those cool themes users and some developers like.

The MessageViewer had two classes  HeaderStyle and HeaderStrategy that had the job to show and manage the header data.  The header style is the class that generates those fancy, brief, enterprise… styles you see in kmail and the header strategy is the class that decides which data to show/hide.

When I started the GSoC project, both, the styles and the strategies were  hardcoded each one and the styles had a mix of QT + HTML code. So these classes were removed and a new one ( HeaderTheme ) was created to combine that style/strategy functionality:  So Actually HeaderTheme is a combination of those two classes, but with the static HTML removed, the code cleaned up and the Grantlee integration.

In general, the HeaderTheme class is the responsible to setup and make the connection to Grantlee so it can set/show the themes.  So now we have “themes” instead of “styles”.


Let’s stop for a moment and see some screenshots.

kmail Fancy Theme
Fancy Theme
kmail Air Theme
Air Theme
kmail Qt Theme
Qt Theme
kmail Nokia Theme
Nokia Theme

I created these themes just to show the theming capabilities. Of course, we can have some by default in Kmail like the fancy one for example. So a “Themes” menu replaced the old one “Styles”.

The default themes folder is inside the MessageViewer and has the following structure. Similar to wallpapers or themes from other KDE projects.

A theme consists of a folder with: An images directory (If the theme has images), a default.desktop file with the metadata information and the default.html that has the styles and the data variables need to be shown.

MessageViewer Themes Structure
MessageViewer Themes Structure

Note that the themes menu is created with the themes subdirectories that are in all the KDE data directories like kde, .kde and .kde4.

The ObjectTreeParser

The ObjectTreeParser is the class inside the MessageViewer that parses messages and generates the HTML code for the Viewer. The ObjectTreeParser is a very very complex class. Actually, this was my face the first time I looked at it:


But anyway, after some work, the ObjectTreeParser was partially ported to Grantlee. Partially, because there are some parts on it that generates HTML dynamically, so the static parts were ported to Grantlee and now that static part is divided in small pieces of HTML to identify them faster. There are no theming possibilities here, this port was to improve the code readability and make the maintenance tasks easier.

Inside the MessageViewer there is a htmlOTP folder with the HTML files that has the ObjectTreeParser data of static information:



The Akregator ported to Grantlee was really similar to the MessageViewer with the difference that Akregator has the concepts of views  ( Normal, combined and widescreen). In Akregator the situation was the same, Those views were hardcoded with identical Qt + HTML + CSS.

So, that presentation stuff was extracted to themes, and a new method renderTheme() was created in the ArticleFormatter  to setup up the Grantlee magic and call the themes. Now, no matter which view is chosen, the same theme will be always called and looks the same in the three different views while you still not choose another theme.

We had the problem that Akregator, as  based on KHTML,  doesn’t allow you to load images from the hard disk, no relative neither absolute paths work, my mentors told me it has to be with the KHTML internals for security.  ( The MessageViewer is based on WebKit. ) A web URL works, but I think this doesn’t solve our problem. So no images atm in Akregator themes. The logos and some backgrounds I created could not be shown. Just enjoy the theming.

But we really need to fix this. Maybe a KHTML hacker can provide some help. Some Akregator themes screenshots:

Planet KDE Theme

Linux Foundation Theme

Nokia Conversations Theme

Planet openSuse Theme

Planet Kubuntu Theme


No much to say here. Get Hot New Stuff was integrated in the MessageViewer and now you can start downloading themes from kde-look, our themes provider. There is just one theme to download for Kmail atm.  Thanks to Frank Karlitschek from OpenDesktop.org for creating the Kmail and Akregator categories. Actually, we had a discussion to instead of having applications themes have a Kontact Theme. I think a Kontact theme could be hard to maintain, because it will be full of conditionals about the different kdepim applications based on Grantlee.

IMO, it would be better to have applications themes and share duplicated code with the Grantlee inheritance feature that is just a:  {% include “your_code_to_share.html” %}. Maybe we can have a central place with the code similar in all themes for all applications. It will give us more flexibility because although the styles could be similar, the data and the applications views are not always the same.  Trust me, I tried the fancy theme in both Kmail and Akregator and it looks a little bit deformed in Akregator for the views it has. But this is debatable of course, I would like to here your feedback here.

In my next post for users, I will talk about how to write a Kmail/Akregator theme, the variables you need, the styling, Grantlee cool features, etc.

GHNS in Kmail
GHNS in Kmail

Lessons learned from GSoC

1._ Stephen was really helpful and always gave me good comments in my Qt/KDE code and even sent me a couple of patches to improve my work and the same with Thomas, as the ex Kmail maintainer for a couple of years, usually gave me good and detailed explanations of how the code works inside Kmail and the MessageViewer. I learned from them that you just simple need to commit more often to get feedback faster about your code. I usually had the habit of waiting to complete some stuff or couple of tasks and then commit. As they told me: Even one line change that solves a minor issue count. So go ahead and commit that little change or improvement.

2._ Practice, practice and practice more C++/Qt/KDE code. The more you practice this stuff, the more you understand the code written in KDE. Also, have a copy of the KDE API in case you lose your internet connection and need to work offline.

3._ I remember on the first days of the project that I got an Akonadi problem that prevented me to start Kmail correctly. I was searching the problem in Google, I followed the Akonadi TroubleShooting page, kde forums and had no luck. Then on IRC Leo Franchi (lfranchi) told me about a couple of more “rm commands” inside my kde-devel home directory, stop/start Akonadi and the problem was gone( Thanks Leo).

To be honest, I usually try to solve problems myself, but I realized sometimes this is not the way to go. So whenever you have a problem like this don’t made this stupid mistake and ask the KDE community about it, you can save a lot of time.

4._ Related to point 3.  It was really funny how a simple thing to add as an “Action List” to the menu took me some time.  My KXMLGUIClient code was ok and I found the API documentation really clear.  I was really frustrated about my code not doing what I wanted to do, so I entered on #kde-devel and David Faure (dfaure) came to the rescue. Really thanks David for the KXMLGUIClient explanation. My themes action list code really needed to be in the MessageViewer, however this stuff had to be called in the Kmail side after createGUI(). So a Kmail->MessageViewer connection was made to make this action list working.

Don’t underestimate my knowledge, go and code the Kmail/MessageViewer stuff and you’ll see the complex thing. Really complicated for an initial KDE developer.

5._ Usually Stephen and Thomas asked me for my kdebug() outputs and sometimes the information I showed them wasn’t enough to debug a problem. Why? Maybe, because you don’t have the  right debug information enabled :). So beginner KDE developers, please run kdebugdialog, enable the information you need and make your mentors/KDE Developers happy.

6._ And finally GSoC was a real learning experience that motivates me to do more KDE work. Specially code and promo. So stay tuned.

Next steps

  • Fixed the current code minor issues to merge the kmail/MessageViewer/Akregator code to trunk. I really want all this theming stuff to be part of KDE SC 4.6.
  • As I told my mentors in our last GSoC meeting, I will stay on KDE to get more programming knowledge and to know better the community. My goal in short-medium term is to maintain all the theming code in kdepim and help on porting more KDE applications to Grantlee (If they need the port of course). I think with the experience gained and more practice I can do it.
  • Give more talks about KDE (I already gave two), more involvement with the community and continue spreading the work about KDE in South America and specially in Peru.

In unrelated KDE notes, After some months I returned to enjoy my other passion: Tae Kwon Do.  I will have real challenges in the next days and need to prepare well to get my Green Belt. This belt means “Power begins to develop” and the color green represents growth. The same color as the Qt one and exactly how I feel now on my KDE development experiences,  just a coincidence.

So wish me luck guys and I promise you some pictures of my Green Belt next to the Qt logo .

Then my  KDE work will be usually at nights.

Thanks to the KDE community, the KDE GSoC admin team, my mentors and Google for the opportunity to work in an Open Source Project I love.

First steps with Grantlee and KDE PIM GSoC

Well, coding officially starts on May 24, now is time supposed to read documentation, know your mentor(s) and discuss the project ideas, needs, requirements, difficulties, etc. but as many other GSoCers I couldn’t resist to code something.

My goal for the last week was to write a very simple Qt application showing the power of Grantlee. The idea was to simulate that I am reading a message in Kmail and I want to change the theme again and again.

You can take a look at the code in the soc-pim branch or:

svn co svn://anonsvn.kde.org/home/kde/branches/work/soc-pim/kdepim/examples/mail_grantlee/

Of course, you need to install Grantlee, before compiling the example:

git clone git://gitorious.org/grantlee/grantlee.git
cd grantlee
git checkout -b 0.1 origin/0.1
mkdir build && cd build
cmake ..
make && make install

Here some Kmail themes. I’m not an artist, so don’t expect too much, but I know some CSS and started creating the themes just for the example.

KDE theme for Kmail
KDE theme for Kmail
openSUSE theme for Kmail
openSUSE theme for Kmail
Nokia theme for Kmail
Nokia theme for Kmail
Konsole theme for Kmail
Konsole theme for Kmail

Don’t worry. Surely in the future there will be themes for everyone.

BTW, before continue, what is Grantlee?.
I talked about it in my GSoC proposal and Stephen has written a lot in his blog, but in case you haven’t read, here we go:

Grantlee is a Qt string template engine based on the Django template system. Django is a powerful Python framework that makes it easier to create web apps.

In general, what Grantlee does is that it allows an application separate logic from presentation. There are many benefits of doing this: Flexibility, clean code style (readability), consistency and beauty.

Developers concentrate on the technical aspects of the application (logic, performance,…) and artists work on the templates (HTML, CSS) and they both don’t need to touch each other’s code.

This separation allows the application to be built and tested independent of the visual presentation.

So, What would be the role of Grantlee in KDEPIM?

Let us see what is the job for the moment.
The MessageViewer is the library responsible for the header styling in some KDE PIM applications. If you browse the headerStyle class code, will see that there is HTML stuff everywhere. That makes hard, for both developer and artist, to change the way information is displayed.

That problem should be solved by integrating Grantlee with the MessageViewer and my task for now is to extract the presentation stuff, set up the Grantlee code and load the templates.

Of course the job is not only to load templates, I have in my mind all what can we achieve with this integration and believe me there is a lot to do. Grantlee has many cool features for theming, the API documentation is good and I will continue studying the capabilities during this community bounding period.

Well, it is very difficult to blog about all the Grantlee features in a post, but in case you are interested, you can have a quick overview of it here:

Grantlee for application developers.
Grantlee for theme artists.

Of course, I will be posting my grantlee adventures with KDEPIM week by week.

For example, this week I found a useful feature:
The ‘safe filter’. Imagine a mail message come with HTML content or special characters. We should render that message correctly in the template otherwise the content will look horrible.

The safe filter autoescapes a variable in case it has already been escaped. Just do:

{{ message|safe }}

That means, if a message comes with "Kmail & CO" ,that content will be rendered :

“Kmail & Co”

Filters affect the way variables are shown in a template. Grantlee comes with some default filters similar to Django like:

{{ variable|upper }} or {{ variable|cut:”something ” }} to cut a string from the variable. There are more filters and you can also create your own ones.

For the developer side, the fun thing is that you don’t need to rebuild your application if there is a change in the template.

For artists, the template syntax is really clear, very human readable.

I already started hacking a little on the headerStyle, but still I have nothing concrete so far to show you in a real world application. This is just the beginning. Althought, the MessageViewer code is huge, Thomas has given me good entry points to understand how it works.

The end result will be a MessageViewer without any presentation code and connected to a theme location.

The current default header styles are these:
Brief, Plain, Fancy, Enterprise and Mobile.

Please, if you are a KDE PIM user and want a change or feature on those styles, just tell me what to take into consideration before creating them. One feature we will provide is a user option to decide which header fields are displayed.

The second part of the GSoC project consists of GHNS integration in PIM applications that will use Grantlee, that way users can create and share their art-work. In the next weeks, we will be defining a standard package structure for those themes.

I consider theming an important part of the PIM module. On one side, users usually like to have their collection of beautiful themes, and on the other hand, it is also important for companies or educational institutions to show/export/print their identity (colors, logos, slogans).

In general, I’m happy understanding better and better how the project has to be carried on and my continuous Qt/KDE learning. If you have some feedback to provide, it will be well received.

I find the KDE community very friendly, that makes development, communication and the GSoC experience more enjoyable.

Hopefully, my mentors have passed the first week evaluation. I am really glad they are doing a great job and I am willing to help them with everything I can during the project.

Just kidding, they completely rock, their support and answers have helped me lot.

News about this integration coming soon.

Hello Planet and Welcome KDE Google Summer of Code

Hello KDE Community.

My name is Ronny and I am from Peru (South America). I am a KDE user for about 3 years and now is time to develop for KDE.

My KDE life started some months ago and I already started doing some small contributions like Promo work here and developing a game in Playground called KPeg.

But, the happiness I feel right now is beyond words, because this year I was accepted for the Google Summer of Code Program to work on the Open Source Project I love: KDE.

A big thanks to the KDE community and specially to two KDE developers who will be my mentors: Thomas McGuire (Kmail) and Stephen Kelly (Akonadi, Kjots, Grantlee author). Guys, thanks for answering my questions and all your support during all the GSoC process.

I am going to work with the KDE-PIM team on integrating the Grantlee library in KDE PIM applications to improve the theming support.

So, let us have fun with this GSoC project and make KDE rock even more.

Abstract of the Proposal.

I am also happy that another person from Peru was accepted to work on this KDE/GSoC: Percy Triveño who will work with the KDE-EDU team on integrating KmPlot into KAlgebra.

Happy KDE SoC to everyone.

KPeg – Peg Solitaire game for KDE

As I told before, I picked up a game from playground and after some KDE vacations I finally had the opportunity to hack on the game once again.

I rename it and today I released KPeg 0.2. I am following this version number because I think it is not completely ready to be 1.0 as the former developer specified.

KPeg is an implementation of the Peg Solitaire Game.

Peg Solitaire is a board game that consists of jumping over pieces (pegs) in order to remove them from the board. The goal is to remove all pegs but one in the shortest time possible.

KPeg has 5 leves of difficulty and 3 algorithms to generate the puzzles (Original, branch and lines), these affect how the pegs are distributed on the board.

For reference, Peg solitaire at Wikipedia.

Well, I created 3 new themes/icons and removed the old ones. My artistic skills are very limited so don’t expect to have wow-SVG themes.

I also created a cool DropShadowEffect for the pegs thanks to the new features of Qt 4.6.

I made some adjustments in the branch algorithm and cleaned up the code for the random seed generator number, not needed anymore.

Download the Game from kde-apps.org

Or make a subversion checkout:

svn co svn://anonsvn.kde.org/home/kde/trunk/playground/games/kpeg/

Enter into the kpeg directory and do the following to compile it:

mkdir build
cd build
cmake ../
sudo make install

You can also browse the source code:

Here is the mandatory screenshot:


Currently, I am working on the algorithms for English and European Peg Solitaire boards and in the next weeks the challenge will be to create an animated peg solitaire solution.

Please, test the game (and your brain) and send me all your comments and feedback.

Remember that game development is fun and I will continue developing KPeg just for fun and to learn more about Qt/KDE.

More news about the game coming soon.

Spreading Qt/KDE at FLISOL Arequipa 2010

On Saturday, April 24 in all LatinAmerica will be held the world greatest Installfest of Free and Open Source Software called FLISOL (Festival Latinoamericano de Software Libre).

I am going to give a talk on how to develop applications with Qt and will share my first experiences of KDE development.

The event will take place in the “Universidad Católica de Santa María” starting at 9:00am.

So, you are all invited to join the fun with the Linux geeks from Arequipa.

FLISOL Arequipa 2010

For more details, you can check the website of my friends from the Arequipa Linux User Group (AQPGLUG).


and the official FLISOL website:


Also, there will be Tuxes for sale, it is a good time to buy a Tux for you (Your Love).

Tux  - Flisol Arequipa 2010

KDE talk at LinuxWeek – Lima, Peru

LinuxWeek is a well-known event here in Lima/Peru organized by the PUCP (Pontificia Universidad Católica del Perú). The event consists of one week talks about Free and Open Source Sofware, Linux (Well GNU/Linux) and tendencies/new projects in the FOSS world.

I gave a talk that was divided in three parts: An introduction to KDE Community, the power of Qt and an overview of the KDE Games along with the new interesting Game project called Gluon.

You can see all the program here. There are slides and videos available. It was a pleasure to be there and talk about the coolest community and software project in the world :)


I uploaded the slides to my Slideshare account. Various points in this talk are still valid today:


Como ser desarrollador de KDE

Bueno ya que hace poco empecé a involucrarme en el desarrollo de KDE y ya me está yendo bien, quisiera compartir con los programadores latinos, gente de Perú e interesados en general, cómo es el proceso para convertirse en desarrollador de KDE.

Es importante aclarar que estoy en camino de ser desarrollador de KDE, simplemente deseo trasmitir mi experiencia y lo aprendido hasta el momento. Cualquier mejora o aporte a esta guía es bienvenido.

Hay distintos caminos para llegar a este objetivo, y es más, hay gente que ha escrito al respecto como:

The Road to KDE Devland (6 series)
The Road to KDE and Qt Development

y de la web oficial:

Becoming a KDE Developer

Hay muchas cosas en común en esos caminos y básicamente la idea es la misma.

He tratado de ser lo más breve posible y decidido escribir mi pequeña guía “Como ser desarrollador de KDE” en español, pues se que, como yo alguna vez, hay muchos hispano hablantes que desean contribuir a KDE y no tienen alguna idea de cómo empezar. Espero profundizar y continuar esta guía más adelante.

Ojo, hay muchas maneras de contribuir a kDE como arte, documentación, traducción, promoción, reportando fallos, etc. Ahora me voy a enfocar sólo en el desarrollo, ahí vamos:

Cómo ser desarrollador de KDE

Contribuir con el desarrollo de KDE, es uno de los aportes principales a la comunidad y al proyecto. Es una experiencia enriquecedora que te va a permitir compartir, extender tus conocimientos y aprender a trabajar en equipo.

Si eres un estudiante o profesional de la computación, te gusta la programación y el desarrollo de software, deseas participar en proyectos reales y pertenecer a una comunidad internacional de desarrolladores y gente creativa, si es así, entonces estás en el sitio correcto.

Para ser un desarrollador de KDE necesitas aprender lo siguiente:

Está demás decir que debes de tener un nivel aceptable de Inglés, pues la comunicación se realiza en este idioma.


C++ es un potente lenguaje de programación orientado a objetos, diseñado para muchos propósitos, muy usado en la computación gráfica y desarrollo de juegos.

KDE está mayormente escrito en C++. Entonces si no sabes C++, tienes que aprenderlo. Hay muchos libros y excelentes recursos en internet sobre C++. Un gran libro es “Pensando en C++” de Bruce Eckel que también está disponible como libre descarga en castellano. Es imprescindible que aprendas todos los fundamentos de C++ antes que empieces con KDE.


Para ser un desarrollador de KDE, debes aprender Qt. Qt es una biblioteca multiplataforma escrita en C++ para desarrollar aplicaciones gráficas y también para desarrollar programas sin interfaz gráfica como herramientas de consola y servidores.

Si no estás familiarizado con Qt, puedes ver la documentación oficial de Qt y desarrollar los tutoriales incluidos ahí.

Si prefieres aprender Qt mediante la lectura de un libro tradicional, mira la página de libros acerca de Qt. Algo importantísimo es que aprendas el concepto y la aplicación de Signals and Slots, es fundamental en todas las aplicaciones construidas con Qt.. Básicamente, es un mecanismo de comunicación entre objetos.


Un punto de partida para empezar a desarrollar en KDE son los tutoriales del sitio oficial. Lo primero que debes revisar es la sección Introducción a la programación en KDE4.. Empiezas con un Hola Mundo, luego a crear ventanas, después añadir acciones, barras, menús y así vas desarrollando paso a paso.

También encontrarás información útil sobre el desarrollo de KDE en la sección de Preguntas Frecuentes.

Otro recurso valioso para desarrollar es la API (Interfaz de programación de aplicaciones) de KDE. Allí encontrarás excelente documentación de clases, métodos y funciones de las librerías y aplicaciones de KDE.

Después que tengas una base de conocimientos en C++, QT y KDE, entonces ya puedes empezar a desarrollar para KDE, pero antes necesitas aprender lo siguiente:

Una vez que hayas compilado la última versión en desarrollo, configurado tu ambiente de desarrollo y realizado tus primeros tutoriales de programación en KDE, quiere decir que ya estás preparado para dar los primeros pasos.

Tienes que tener paciencia, automotivarte y sentir pasión por lo que haces. La comunidad KDE es sensacional y el software que produce es de alta calidad. No todo cae de la noche a la mañana, entonces con trabajo constante, poco a poco verás los frutos de tu esfuerzo.

Bueno, entonces llegó la hora que empieces a escribir código para algún proyecto dentro de KDE. Claro que puedes desarrollar tu propia aplicación, pero se recomienda que antes intentes involucrarte con uno ya existente para que entiendas mejor como funcionan las cosas internamente, aprendas del código de otros, veas como es la organización y el trabajo en equipo.

Puedes ver todo el código de KDE directamente desde el navegador en WebSVN para que explores las aplicaciones y/o librerías que forman parte de KDE.

Puedes descargarte el código de una aplicación/librería con el usuario anónimo de subversion. Obviamente haz tenido que instalar antes subversion. Por ejemplo, con el siguiente comando me descargo kdelibs, que son las librerías básicas de KDE.

svn co svn://anonsvn.kde.org/home/kde/trunk/KDE/kdelibs

Una breve explicación de los directorios y subdirectorios principales:

Branches: Es donde están las distintas versiones de KDE, incluyendo lo que será la próxima revisión de la versión actual de KDE.

Trunk: Es donde se lleva a cabo el desarrollo de la rama principal de KDE, es decir, lo que será la próxima versión de KDE.

——kdelibs: Librerías críticas de KDE.
——kdebase: Dividido en 3 partes.
———apps: Aplicaciones que forman parte de la distribución principal de KDE como Dolphin, Kate, Konqueror.
———runtime: Cosas necesarias para todas las aplicaciones KDE en tiempo de ejecución y una dependencia requerida.
———workspace: Cosas específicas de KDE, como Plasma o el gestor de ventanas.

——kdeartwork: Trabajo artístico, diseño gráfico, íconos, sonidos, temas, fondos de pantalla.
——kdeedu: Aplicaciones educativas.
——kdegames: Juegos.
——kdegraphics: Aplicaciones gráficas.
——kdemultimedia: Reproductores de audio y video.
——kdepim: Aplicaciones de manejo de información personal.
——kdepimlibs: Librerías usadas por las aplicaciones kdepim
——kdeplasma-addons: Aplicaciones, tecnologías de Plasma como applets, dataengines, runners.
——kdeutils: Utilitarios para KDE.
——kdewebdev: Aplicaciones para desarrollo web.

-extragear: Aplicaciones que usan las librerías y estásn relacionadas con KDE, pero no forman parte de la distribución principal de KDE.

-koffice: Suite Ofimática de KDE. Tienen sus propias fechas de liberaciones.

-playground: Aplicaciones en estado alpha. Pueden compilar, pero carecen de estabilidad, robustez, internacionalización, usabilidad, arte, en fin, no están maduras para el usuario final.

-kdereview: Cuando una aplicación de playground alcanza cierta madurez y estabilidad, se mueve a kdereview para darle los toques finales y sea revisada profundamente por los desarrolladores para que alcanze un nivel óptimo. Después de kdereview pasan a formar parte de la rama principal de KDE.

-kdesupport: Librerías/software necesario para compilar KDE.

-l10n-kde4: Archivos de traducción de KDE a muchos idiomas.

-www: Aquí se encuentran los archivos, imágenes que pertenecen a las páginas web de KDE.

Elige una aplicación de tu agrado que te gustaría hacerle algún cambio, agregarle una nueva funcionalidad.

Normalmente los desarrolladores dentro del directorio de su proyecto tienen un archivo llamado TODO, donde está la lista de tareas por hacer, un README con la descripción de la aplicación y un archivo HACKING que explica los lineamientos para desarrollar en ese proyecto.

Aparte de agregar una característica a una aplicación, también puedes corregir un fallo. Los fallos se reportan en el Sistema de búsqueda de fallos de KDE, llamado bugs.kde.org.

Desde bugs.kde.org puedes filtrar los fallos existentes en la aplicación que escogiste y ver cuales aún no están resueltos. Escoge uno y trata de resolverlo.

Otra opción para empezar con el desarrollo en KDE, es realizar algún Junior Job, (Tarea o trabajo pequeño). Los Juniors Job son trabajos muy sencillos que necesitan realizarse en las aplicaciones. Normalmente los desarrolladores suben Juniors Jobs a bugs.kde.org para obtener nuevas contribuciones e involucrar a la gente recién iniciada en el desarrollo de KDE. Puedes ver la lista de Junios Jobs aquí.

Sea que haz corregido un fallo, haz agregado una nueva característica, funcionalidad o haz hecho un Junior Job, debes de enviarles tus cambios al desarrollador(es). O mejor dicho, tienes que enviar tus parches.

Un parche consta de cambios que se aplican a un programa, para corregir errores, agregarle funcionalidad, actualizarlo, etc.

La mayoría de proyectos en KDE usan un sistema web llamado Review Board que permite manejar los parches de manera mucho más eficiente. Te registras y envias tu(s) parche(s) a la aplicación que escogiste.

En caso, la aplicación que estás modificando no use Review Board, tienes que enviar tus parches por email al desarrollador o a la lista de correo del proyecto. Debes de enviar tus archivos en un formato que el desarrollador vea los cambios que haz realizado de manera rápida. Para ello existen dos comandos Unix/Linux que te van a ser muy útiles: diff y patch.

Un ejemplo sencillo, imagina que tienes 2 archivos (original.cpp y nuevo.cpp), deseas ver la diferencia entre ambos y generar otro archivo. El comando sería:

diff -u original.cpp nuevo.cpp > miparche.patch

Enviándole el archivo miparche.patch al desarrollador le haces la vida más facil porque puede ver y aplicar tus cambios rápidamente. No importa el tamaño de tu parche, así solucione algo pequeño, pero útil será bienvenido, de lo contrario será rechazado por diversas razones. Entre ellas que quizá no sigues los estándares del código de la aplicación, no resuelves el problema o te faltan pequeños detalles que corregir. Si hay algún problema con tu parche, el desarrollador te lo hará saber y te dirá que le falta para que sea aplicable.

No tengas miedo, los desarrolladores de KDE, son seres humanos y muy buenas personas que muestran mucho respeto por el trabajo de otros y están dispuestos a ayudarte a resolver problemas o guiarte con la solución.

Pero, sea cual sea la respuesta del desarrollador, igualmente muestra respeto y sigue investigando cómo puedes mejorar.
Hay maneras y maneras de decir las cosas. Por eso, es importantísimo que sigas el Código de Conducta de la comunidad KDE.

Bien ya enviaste tus cambios, fueron aceptados, ya te sientes parte de la comunidad y crees que haz cambiado el mundo.

Ahora tienes que solicitar una cuenta subversion en KDE (KDE SVN account). Subversion es el sistema de control de versiones con el cúal trabaja actualmente KDE, posteriormente se cambiará a Git.

Cualquiera que ya haya hecho algún trabajo en KDE puede aplicar a una cuenta svn. Con una cuenta svn podrás aplicar los cambios tú mismo al proyecto, en vez de estar enviando parches y quitarle tiempo a los desarrolladores.

Lee esta guía de como solicitar una cuenta svn. Si tu solicitud fue aceptada, entonces lo siguientes es leer Los primeros pasos con tu cuenta KDE svn.

Una vez que tengas tu cuenta svn y haz leído lo primero que debes de hacer con ella, bien ya puedes trabajar directamente en el proyecto con subversion.

Para descargarte el código de un proyecto y tener una copia local del mismo (checkout), ssh es lo más óptimo:

svn co svn+ssh://tuusuario@svn.kde.org/home/kde/ruta/a/la/aplicacion

En mi caso cuando descargué el juego que empecé a modificar:

svn co svn+ssh://ronnyy@svn.kde.org/home/kde/trunk/playground/games/pege/

Ahora, ingresa al directorio del proyecto que te bajaste:
cd proyecto_kde

Para ver el estado del proyecto, los archivos que han sido agregados, modificados, eliminados:

svn status

Realiza tus cambios y haz tu primer commit:

svn ci -m “My new feature / Fixed bug description.”

Para ver todos los cambios que hiciste dentro de un directorio y generar un archivo .diff

svn diff –diff-cmd diff -x -uw > ~/patch.diff

Para estar al día y actualizado con los últimos cambios que se hicieron al código.

svn up

Son algunos comandos básicos de subversion, puedes encontrar muchos tutoriales y how-tos en la web donde encontrarás mucha más información.

Finalmente, si haces commits a menudo, participas activamente y das un aporte significativo a algún proyecto, la comunidad te tratará como un desarrollador de KDE, si eso pasa, ya podrás llamarte desarrollador de KDE.

Como ves, ser desarrollador de KDE es un proceso que toma su tiempo. Seguramente en el camino encontrarás obstáculos y te estancarás en alguna parte, pero depende de ti poder superar esas barreras.

Contribuir a KDE te va a dar un prestigio y elevar tu karma en la comunidad Open Source/Software Libre. A la larga, todo esto te dará muchos beneficios sociales, técnicos y probablemente puede cambiar tu vida.

Diviértete, comunica, comparte, aprende, enseña y todo se hará más fácil.

Sitio principal para desarrolladores de KDE

Lista de correo
Si estás interesado en el desarrollo de KDE, estás creando tu propia aplicación y quieres hablar con alguien que hace o está interesado en el desarrollo de KDE en general.

Visita: https://mail.kde.org/mailman/listinfo/kde-devel y subscríbete a la lista.

Canal IRC
#kde-devel en irc.freenode.net

Otros lenguajes de programación

Si te gustaría desarrollar para KDE en otros lenguajes de programación, también tienes otras alternativas.

KDE Y Qt disponen de una serie de bindings y tecnologías para diversos lenguajes de programación, entre los principales tenemos a Python, Ruby y Javascript:




KDE se cambia a Git

Como muchos otros proyectos Open Source, (Kernel Linux, Perl, Ruby on Rails, Wine, X.org, Android, VLC, FreeBSD, OpenSuse…) KDE ha iniciado el cambio de sistema de control de versiones de Subversion a Git.

En subversion, que es un sistema centralizado, todos los desarrolladores de determinado proyecto deben de conectarse a un servidor central y los cambios que se realizan afectan a todos. Otro de las desventajas de un sistema centralizado es que muchos contribuyentes o personas que desean contribuir tienen muchas limitaciones de escritura debido a las políticas de acceso. Pero claro Subversion se ajusta a algunos tipos de proyectos y también tiene sus ventajas.

Por el contrario, Git es un sistema de control de versiones distribuido, es decir, que no depende de un repositorio central. Git permite administrar varios tipos de proyectos, especialmente de gran envergadura, de manera rápida y eficiente.

Una de las ventajas de Git, es que abre las puertas a más contribuyentes. Tú puedes tener tu propia rama dentro del proyecto, experimentar, realizar cambios sin afectar a los demás y cuando pienses que tu código es estable y funcional puedes fusionar tus cambios con otra rama.

Git tiene otras características cool, entre ellas, que puedes realizar ciertas cosas estando desconectado de la red.

Probablemente este va a ser un cambio impactante en la comunidad, debido al tamaño de KDE y el número de aplicaciones/desarrolladores/contribuyentes. Pero ya existen proyectos de KDE que han migrado exitósamente a Git como Amarok, Phonon, Konversation y Gluon.

Todo el código de las librerías y aplicaciones de KDE, van a ser movidos a Gitorious, excepto los archivos de traducción y documentación.

Gitorious es un servicio para alojar proyectos Open Source, donde también está alejado Qt y existe una buena relación/comunicación con desarrolladores de Qt en Nokia.

Aaron Seigo, KDE Hacker, explica , más a fondo, en su blog los motivos del cambio.

Si tienes conocimientos en git, esta una gran oportunidad para contribuir a KDE y unirte al KDE Git Team. Entra al canal #kde-git en Freenode.

¿Cómo aprender Git?
Hay mucha información, tutoriales y libros en la web. Yo te recomiendo Git Magic de Ben Lynn empleado de Google.

Gracias a esta guía, tengo una base en Git. Está todo muy bien explicado con palabras sencillas, directo al grano y con todo lo que necesias para empezar a usar Git.

Git en la web de KDE



KDE Latinoamérica

No tuve mucho tiempo de postear estas últimas semanas, pero más vale tarde que nunca.

El día 10 de noviembre de 2009 tuve la suerte de asistir a la reunión de comunidades de KDE en latinoamérica, canal #kde-cl en freenode, gracias a la invitación de Christian González de la comunidad KDE Chile. Christian ha escrito una carta dirigida a todas las comunidades de KDE en Lationamérica y España donde resume los puntos tratados en la reunión.

Transcribo la carta para que más personas puedan unirse a esta iniciativa:

Carta abierta a las comunidades de KDE de Latinoamérica y España

El día martes 10 de noviembre de 2009 se efectuó la segunda reunión por IRC [1] de la recientemente formada comunidad KDE Chile, en la cual participaron representantes de varias comunidades latinoamericanas. En dicha reunión se planteó la posibilidad de aunar esfuerzos en pos de construir una comunidad KDE Latinoamérica-España, potenciando así la difusión y el apoyo al proyecto KDE en nuestros países y evitando la duplicación de esfuerzos.

Después de una larga discusión, los representantes de las distintas comunidades establecieron los siguientes acuerdos:

  1. Cada comunidad individual seguirá teniendo plena autonomía para trabajar en sus proyectos locales, así como para administrar sus propios portales web. Se propone tener una plantilla genérica que pueda ser usada por las comunidades que así lo deseen.
  2. Se solicitará la creación de un subforo en idioma español dentro del foro oficial de KDE (disponible en http://forum.kde.org), en el cual puedan participar todos los miembros de las distintas comunidades respondiendo consultas técnicas de los usuarios de habla hispana. Se evaluará la posibilidad de tener una sección por cada país para temas como organización, política interna, actividades locales, etc.
  3. Se apoyarán los esfuerzos de documentación de KDE (especialmente las traducciones) en los wikis oficiales del proyecto: http://techbase.kde.org (para desarrolladores) y http://userbase.kde.org (para usuarios).
  4. Se creará un “Planeta KDE en español” que agrupe los blogs personales de los miembros de las distintas comunidades.
  5. Se decidió crear el canal IRC #kde-latam en el servidor Freenode (irc.freenode.org:6667) como un lugar de coordinación transversal para las distintas comunidades.
  6. Para lograr estos objetivos, se ha establecido contacto con Helio Chissini de Castro, contacto oficial de KDE para Latinoamérica. Estamos bastante confiados en que su intermediación será de mucho provecho para lograr los objetivos antes mencionados.

    Por todo lo anterior, queremos extender esta invitación a todas las comunidades de KDE en España y Latinoamérica. Si están interesados en participar de esta iniciativa, por favor publiquen esta carta en los medios de comunicación de su comunidad (portal web, lista de correo, etc.) y envíen un aviso a la lista de correos de KDE Chile (http://www.kde.cl/group), o comuníquense a través del canal IRC #kde-latam.

    Esperamos que más comunidades puedan unirse y podamos difundir y apoyar al proyecto KDE en nuestros países.

    Desde Perú, nos unimos a esta iniciativa de agrupar a las todas las comunidades de KDE en Lationamérica y España.

    Se ha creado hace poco la lista oficial kde-latam, así que se invita a usuarios y desarrolladores de KDE para que participen.

Peruvian Radios in Amarok

Estimados KDEeros peruanos y usuarios de Linux en general:

Acabo de publicar un script que agrega algunas radios online de nuestro querido Perú en el excelente reproductor Amarok versión 2.0+. Lo pueden descargar desde aquí

Para instalar el script se van al Menú Tools->Script Manager->Install Script seleccionan el script que descargaron, presionan OK y listo.

Otra forma es en vez de hacer click en “Install script” presionan “Get More Scripts”, y hacen click en “Install” a lado de “Peruvian Radio Stations” y listo. Cierran y vuelven a abrir Amarok y tendrán una pantalla como esta:

Peruvian Radio Stations in Amarok
Peruvian Radio Stations in Amarok

Hacen click en Peruvian Radio Stations y les aparecerá:

Peruvian Radio Stations in Amarok
Peruvian Radio Stations in Amarok

He agregado todas las radios que pude encontrar en la web. Disfruten escuchando la música de su preferencia, así como noticias, deportes, etc. Normalmente cuando cambias de una radio a otra, demora de 1 a 5 segundos.

Las siguientes radios fueron testeadas una y otra vez y funcionan correctamente:

Callao 1400 KHZ AM
Capital 96.7 FM
Corazon 96.7 FM
CPN Radio 90.5 FM
Doble Nueve 99.1 FM
Felicidad 88.9 FM
La Unión 103.3 FM
Miraflores 96.1 FM
Moda 97.3 FM
Panamericana 101.1 FM
Planeta 107.7 FM
Ritmo Romántica 93.1 FM
RPP 89.7 FM
San Borja 91.1 FM
Secretos al corazón 93.1 FM
Studio92 92.5 FM
Telestereo 88 FM

La Mega 94.3 FM
Las Vegas 99.3 FM
Melodia 104.3 FM
Panorama 96.5 FM
Super Stereo 105.5 FM
Yaravi 106.3 FM

Power 98.1 FM
Super Stereo 103.5 FM
Uno 93.7 FM

TV Color 98.1 FM
Willkamayu 940 AM

La Grande 96.1 FM
Libertad Mundo 1160 Kcs AM

Sonica 92.1 FM

Este pequeño script está basado en el script de Radio France con ciertas modificaciones. Gracias al desarrollador y a este tutorial que encontré en la web de Kubuntu que me permitió entender mejor como funcionan los scripts en Amarok..

Si desean que una radio sea agregada, por favor, simplemente envíen un mail a ronnycontacto(at)gmail.com indicando la stream url de la radio o simplemente la dirección del sitio web y gustosamente agregaré la radio en la brevedad posible..

KDE 4.2 “The answer”

kde 4First of all: I always prefer and love KDE for his elegance, customization, easy-usage, great applications and now because is really  interesting for programming. I use KDE in my everyday work: Konqueror (now Dolphin), konsole, k3b, Amarok, kate, Konversation, Kopete and other ones.

When KDE 4.0 was published many people criticize it very hard: A lot of bugs, different look and concept of desktop, different panels, new applications menu, widgets, etc, etc were some features that made most KDE users unhappy. However, KDE developers always said in the announcement page, blogs and mailing lists that KDE 4 is a work in progress and they will be working, coding hard to release new versions of KDE (4.1, 4.2… ) with a lot of improvements.

KDE 4.1 was much better than KDE 4.0(many bugs killed and improvements,more stability, applications,speed), but KDE 4.2, in my opinion, is a version, that give us a stable desktop  with cool, interesting, features not only for users but also for developers. This KDE version was named: “The answer” because it minimize negative, destructive. comments and people who didn’t believe in the KDE community and team. I consider these people don’t know appreciate the innovation and great effort.

Congratulations to the all KDE Team for the hard-work they made. I am really impressed about how can you customize your desktop, add new features and the KDE 4 development way.

In this video you can see the KDE 4 presentation in Google Campus where Aaron Seigo a famous KDE hacker member of the core-team talk about the KDE 4 technology and how KDE innovation can make current desktops obsolete.

Nepomuk, Decibel, Plasma, Oxygen, Solid, Phonon, Akonadi are some parts of KDE 4 that introduce new behaviours and will make a big change in KDE. I am particularly interested in Plasma and Nepomuk for development and deciding in which project participate for this Google Summer of Code. But I need more reading and practicing about how these work. If you  make a Gsoc proposal without researching, reading, practicing and talking to mentors you probably will fail.  In this page, you can see the initial process to start your KDE 4 development environment.

In general KDE 4  has as main goals: Improve the desktop user experience, have better applications and development platform and make our desktop a central place to be more productive. That is my impression and for now on I will continue researching and folowing the KDE development process.