Desktop Summit recap and GSoC update

Home is where the heart is After one week being at “home” (Brazil for a while) and getting back to the normal activities (college, clean up my place, cooking for myself..), now it is time to write something about the Desktop Summit and about the last weeks of GSoC.

Desktop Summit

It was awesome because:


  • It was really nice to see new brazilian people (good friends!) attending and doing good work for KDE. You can see pictures here.
  • Really good keynotes, like the Stuart Jarvis’s about “Why are we here? (Community Keynote)“. The graphics and the quotes in the slides were very intersting (they’ll be put on the website soon).
  • I got a Tablet in the “Intel AppUp Application Lab for Meego“! Good workshop and good Tablet =)
  • I attended in the BoF of KDE-Promo were Stuart Jarvis, Carl Symons, Frank Karlitschek , Thomas Thym and others discussed about the KDE birthday (october!) , about the KDE People from Latin America that should try to publish more news from these countries in the (that’s important!) and that we need more documentation about how to get more companies “involved” with KDE. (you can follow the KDE Promo e-mail list to know more)
  • I attended in the Kolab: The Groupware for the Free Desktop BoF, where I figured out that I need to study about KDE PIM ;-)
  • I also figured out that Mai Tai is really dangerous – don’t drink more than two or you will
    try to hug and say how much you love people you never saw before!
  • I met Jonathan Riddellin person, my GSoC Mentor.

The only bad thing about Desktop Summit 2011:

  • The potatoes were awesome, but the most of the dishes were with pork! I don’t feel like eating pork meat for the rest for the year…


The difficulties:

  • The lack of knowledge in C++/Qt. I didn’t have a lot of experience with C++/Qt when I started which made me lose some time with stupid errors, but I believe I wasn’t the only one with this problem in GSoC.
  • In the beginning I was afraid about the changes that I should do in Umbrello, how to do it properly, the best way to do it.
  • I took some time to communicate properly with my mentor. I shouldn’t feel so insecure about it.
  • I didn’t enjoy too much to work from home.
  • Concluding: my difficulties weren’t so much about the code, but more personal difficulties. I think I wrote a ambitious project which would wait more dedication from me and I didn’t give all the needed dedication. So I didn’t conclude the project in time.

What I did to overcome it:

  • Looking for help! Mainly from KDE people that I already knew in person.
  • With this help, I had good ideas about how to proceed properly with the port:  keep the old canvas working with the new canvas to keep comparing the code, using preprocessor directives in the old code and developing the new Umbrello in a different folder in the same project.
  • After the midterm evaluation I started to skype with my mentor.

The project for now:

The future:

  • These months in the GSoC gave me a good knowledge base to keep working in the Umbrello Port as my conclusion work for college.
  • We had a suggestion  how to change the documentation support works in Umbrello:
  • And soonish we will have the Qt 5, so we will have another port project for Umbrello (but as I was adviced, I should keep with the work to port for QT 4 because the differences to Qt 5 won’t be so big)
  • And there is others suggestions about how to make the Umbrello interface better and with more usability.
    (you can follow it in the uml devel mail list)
  • Migrate Umbrello to git.
  • Write tests using QtestLib.

[GSoC] Umbrello: Merging soc branch and trunk.


After my last talk with my mentor, we decided that would be better to merge what I’ve doing until now in the trunk instead of to wait until the end of the project – that would be so much more work (even now, have been hard to get the new merged branch compiling and working). So for this, I made a branch from the trunk wich I am merging with the soc-umbrello-2011 branch.

The merge result (untill now) you can check here:

The idea is: if any change will be  done in the trunk, need to be done in the new branch as well.

Bye. Cya at Desktop Summit =)



Umbrello – some results [GSoC]

Hi Folk!

Here I am, after a while discovering that to work from home is not to everyone, that below your pillow you can find a engagement ring ( = and wondering why QMenu::popup needs receives like parameter type a QPoint instead of QPointF (Is it only in my silly mind that QPointF would make more sense? Am I forgetting something about Qt? Considering that QGraphicsView works with real coordinates).

I am working now in the widgets, so for now, you can see the BoxWidget and the ListPopUpMenu in the “new canvas”, bellow to the “old canvas”.

The video is not so good…so please, check out the repository:

After the evaluation time, my mentor, Jonathan Riddell, and I decided to use skype to improve our interaction :-) and my work.

And with this, my list-to-do just increases:

– make popup menu work
– implement drawing other types of widgets on class diagrams: boxwidget, class, interface..
– mouse press event
– drag and drop events

cya …

Desktop Summit

Umbrello in GSoC

My first week of work according to plan:

25 April – 08 May

* Community Bonding Period. (I talked a bit with some class mates of GSoC)
* Review Plan with Mentor. (I talked to Jonathan)
* Get instructions for the work and get started!

… and get used to work from home :)

Porting Umbrello:

I discovered that the best way to work would be to keep the old classes with the newly written ones together. Including calls for new methods in the same project so I can test the functionality of the new methods. Always comparing the new ones with the old ones.

The current result is Umbrello working with a new window showing the “new canvas”:

In this “view” with QGraphicsView I can test my new classes.

Using Squish to write tests:

To try to make the best decision regarding how to proceed to the port, which parts of code reuse, I did a few class diagrams (just a draft), with the main classes that I should work with, I thought it would be interesting to draw the diagram in Umbrello, and save some steps using Squish

I’m using the Squish Community Edition – froglogic Squish IDE 4.1.0-SNAPSHOT – available only to test KDE software – you can ask one by e-mail: The advantage was to get some practice with the Software (I also discovered and reported some bugs :/)

It is very easy to write tests with Squish, you can automate the tests or write scripts by hand. What is tiring is that when you record the tests, the system stores a table with the objects of your application. But if the the object is not in this table, the test stops and you must include the object or editing the table by hand, or run the application in Spy mode or simply write “test dummies”.

Read more here:

Some interesting links:

QObject x QGraphicsObject:

Qt GraphicsView in depth:


Next weeks:

Sprint 1: 09 May – 22 May

* UMLViewCanvas, LinePath, Circle, SubsetSymbol, SeqLineWidget, UMLView (Classes that implement the view for the diagrams, graphical representation of sequence lines and that represent diagrams)

You can see my complete workplan here: Umbrello UML Modeller QGraphicsView Port

I believe that like most students, my expectation with the GSoC is to LEARN a lot and perform a GOOD job. And even after that period CONTINUE contributing to the community:)

Umbrello no GSoC

A primeira semana de trabalho planejada:

25 April – 08 May

* Community Bonding Period. (Eu conversei um pouco com os meus colegas de grupo do GSoC )
* Review Plan with Mentor. (Conversei com o Jonathan)
* Get instructions for the work and get started!

…e se acostumar a trabalhar de casa :)

Portando o Umbrello:

A melhor maneira de trabalhar encontrada para realizar as alterações por partes foi manter as classes antigas e criar as novas classes em conjunto. Assim, incluir as chamadas para os novos métodos nos arquivos antigos mantendo o funcionamento dos dois e com isso testando o funcionamento dos novos métodos.

O resultado no momento é o Umbrello antigo funcionando com uma janela nova mostrando o “novo canvas”:

Nesse “view” já com QGraphicsView é que eu vou testar as minhas novas classes.

Usando o Squish para gravar testes:

Para tentar tomar a melhor decisão com respeito a como proceder para o port, que partes do codigo reaproveitar, eu fiz alguns diagramas de classe (apenas uns rascunhos), com as principais classes, as que eu devo trabalhar.

Com isso, eu achei que seria interessante desenhar o diagrama no Umbrello, e gravar alguns passos no Squish (eu to usando o Squish Community Edition – froglogic Squish IDE 4.1.0-SNAPSHOT – disponível apenas para testar softwares do KDE, voce pode pedir pelo e-mail: . A vantagem foi pegar alguma prática com o Software (também descobrir e reportar alguns bugs :/)

E é muito facil de gravar testes com o Squish, você pode automatizar os testes ou escrever os scripts na mão. O que é cansativo é que a medida que você grava os testes, o sistema armazena uma tabela com os objetos da tua aplicação. Mas se o o bjeto não estiver nessa tabela ainda, o teste pára e é necessário incluir o objeto ou editando a tabela no braço, ou executando a aplicação no modo Spy ou ainda simplesmente gravar testes ‘dummies’ onde você deve usar os objetos que você precisa no teste. Você pode tirar as suas próprias conclusões conferindo o link:

Alguns links interessantes:

QObject x QGraphicsObject:

Qt GraphicsView in depth:


Próximas semanas:

Sprint 1: 09 May – 22 May

* UMLViewCanvas, LinePath, Circle, SubsetSymbol, SeqLineWidget, UMLView (Classes that implement the view for the diagrams, graphical representation of sequence lines and that represent diagrams)

O meu plano de trabalho completo você pode ver aqui: Umbrello UML Modeller QGraphicsView Port

Acredito que, assim como a maioria dos estudantes, a minha expectativa com o GSoC é aprender MUITO e realizar um BOM trabalho. E mesmo depois desse período continuar contribuindo para a comunidade :)

Building a sexy Umbrello

I’m a big fan of Umbrello. It’s a Free Software graphical UML (Unified  Modeling Language) editor, one of the very few of it’s kind. Most UML tools are proprietary tools written in Java and Umbrello is written in C++/Qt and build on the powerful base of KDE  software. I realized how interesting Umbrello is when I noticed that the  most of my professors suggest proprietary tools or a generic diagramming program with few UML features to study UML at college class. Many companies use UML to help them quickly write applications and Umbrello is (as far as I know) the only Free Software tool which can do the code generation required for that!

Why UML is important?

Modeling is the designing of software applications before coding. Modeling is an Essential Part of large software projects, and helpful to medium and even small projects as well. (…) Using a model, those responsible for a software development project’s success can assure themselves that business functionality is complete and correct, end-user needs are met, and program design supports requirements for scalability(…)

Of course, It is not only my college that uses UML, there are a lot of company wich use UML tools in their development process, including  companies where I have worked and you can find some more examples here.


So having a Free Software UML editor is pretty important! And the Umbrello UML editor is really cool:

  • Automatic code generation (Ada, C++, C#, Java, perl, PHP, Python, Ruby)
  • Import classes and project (Ada, C++, IDL, Java, Pascal and Python only)

The bad news is that Umbrello does not receive a lot of love. It has been roughly ported to Qt4 and KDElibs4 but still uses a lot of Q3Canvas classes and has quite a few bugs.

Umbrello today


Working on Umbrello

Which is why I choose Umbrello for my conclusion work for the University. I would have to work on something anyway, why not pick something that matters? But as I combine my study (5 nights with each a different class) with a full-time job I don’t have a lot of time to do a proper job on Umbrello. My goal for the University is therefore pretty modest: I intend to finish the port of the canvas to QGraphicsView. I have identified about 30 classes which are related to the Q3Canvas and will have to be ported or replaced. I also intend to use tools for automated tests, write unit tests and and fix some bugs.

But there is more to do:
  • Better stereotypes supports
  • Complete Undo/Redo  support
  • Hyperlinks support
  • Reuse KDevelop analysis for code import
  • Bug fixing

GSoC 2011

So I have applied for a Google Summer of Code. Jonathan Riddel, the current maintainer of Umbrello, has said he would mentor me, which is really cool. So if I get this, I can quit my current job and finish the porting to QGraphicsView much faster. To ensure it’ll be a successful project, I’ve been quite modest in my goals for GSoC too: I only shortened my university plan to the GSoC timeline and added a few small things. If I finish the work for my conclusion work during the GSoC, I can be more ambitious for my University and add to the plan – I’m sure my professor won’t mind if I take on some feature work in Umbrello as well!

%d blogueiros gostam disto: