Skip to main content

a silhouette of a person's head and shoulders, used as a default avatar

LibreOffice Google Summer of Code 2013 - selected projects

There is now again the period of the year when the results of Google Summer of Code selection are public. As for LibreOffice project, we have got 13 slots this year. We love you, Google! We really do!

Nonetheless, we had much more good applications then the slots and we had to do hard choices based on a variety of parameters. And the final line-up that came out is:

Project   Student
Adding alterating row coloring to database ranges and supporting new structured reference syntax   she91
Code completion in the Basic IDE   stalker08
Extend support for Document Management Systems   Cuong Cao Ngo
Implement Firebird SQL connector for LibreOfficeBase   Andrzej Hunt
Implementing an about:config functionality   Efe Gürkan YALAMAN
Implementing Proper Table Styles in Writer   Ivan Nicolae-Alexandru
Impress Remote Control for iOS   LIU Siqi
Improve toolbars in LibreOffice   Prashant Pandey
Improved Android / Impress Remote Control   Artur Dryomov
Slide Layout Extendibility   Vishv Brahmbhatt
Use Widget Layout for the Start Center   Krisztian Pinter
VLC integration into LibreOffice   Minh Ngo
Writer: Border around characters   Zolnai Tamás

Congratulations to the selected students. We expect you to be bonding hard during the community bonding period that just started. Your presence on IRC and even start of the hacking is required now!

For the students that unfortunately could not be selected, do not be discouraged. Your Easy Hack patches made a real difference, sorry it did not work out this time. The LibreOffice community is always welcoming and you can learn a lot just by staying around and working at your pace on your chosen Easy Hack.

a silhouette of a person's head and shoulders, used as a default avatar
a silhouette of a person's head and shoulders, used as a default avatar

My project idea for GSoC 2013

Greetings everyone!

With the GSoC proposal reviews coming to a close and the start of the GSoC period I thought it would be a good idea to make a blog post about my proposed project in order to discuss and clarify a few things.

In this year’s Google Summer of Code(GSoC) I have submitted a proposal with the Plan9 operating system. I have proposed the rewrite of some of plan9’s userland tools in Google’s fairly new Go-lang.

A few words on both from wikipedia.

plan9

Plan 9 from Bell Labs is a free software distributed operating system. It was developed primarily for research purposes as the successor to Unix by the Computing Sciences Research Center at Bell Labs between the mid-1980s and 2002. Plan 9 continues to be used and developed by operating system researchers and hobbyists.

Go-lang

Go, otherwise known as Golang, is an open source, compiled, garbage-collected, concurrent system programming language. It was first designed and developed at Google Inc. beginning in September 2007 by Robert Griesemer, Rob Pike, and Ken Thompson.

10 days ago (May 13) it had a new stable release 1.1!

About the project (why?)

“Goblin” will be a portable Golang based userland suite featuring tools and commands one would expect in a basic system that emulates the way a vanilla plan9 system runs. The general idea is to be able to completely replace the plan9 userland with a cross-platform environment that will be highly compatible to vanilla plan9 keeping API compatibility to avoid breakages with existing infra and be as transparent as possible while used in a multitude of systems (be it plan9, linux, unix, etc).

How?

The commands will be written in Go-lang, the details of the structure and licensing will be posted post-acceptance once desided with the mentor along with where the project will be hosted (most probably bitbucket with a mirror in contrib/). It is decided that the project will be written in a mostly “idiomatic Go” way while remaining as portable as possible (with plan9 and linux as the primary project’s targets). Since Go provides many things that were simply not there when writing in C the code won’t be that close (both design and implementation wise thus getting rid of the LPL licensed code while still keeping the LPL manpages since we will have 100% API compatibilty so no point in rewritting them) in other words i will not simply translate the C lines in Go-lang but will rewrite the commands from scratch.

Outline

| Commands ||| | :———: | :—: | :—-: | —-: | | ascii | cal | date | diff | | basename | cat | du | ed | | cleanname | cmp | dd | fmt | | getflags | freq | echo | grep | | join | look | ls | mkdir | | mtime | pwd | read | sed | | sleep | seq | sort | split | | strings | tail | tee | test | | touch | tr | troff | uniq |

timeline

  • Milestone 1: From acceptance until the coding start period i will be discussing last minute details with the mentor (like the aforementioned final decision on license, hosting and project structure.) Will also discuss the testing procedure for the userland and probably setup a couple virtual machines to replicate the development and later testing environment (either setup of certain services or trivial unit tests (or both for some cases)). At this stage we will also finalize the batches of commands and the order in which i will work on them ranking them by matter of importance.
  • Milestone 2: From coding period start until the end of june i will implement the first batch of trivial commands, effectively starting the real work and testing through the decided way.
  • Milestone 3: From July 1 to 14 i will implement another batch of commands.
  • Milestone 4: From July 16 to mid term evaluation i will have written tests for the implemented commands and run a hybrid system serving werc with my cmds instead of the originals.
  • Milestone 5: From mid term to August 14 i will imlement another set of commands.
  • Milestone 6: From August 16 to Soft Pencils Down date i will dedicate to editors and rest big commands.
  • Milestone 7: From then on i will try to finish what is left or complete make tests more “complete”.

testing & community call

Being a userland suite, testing, a quantifiable metric of success or the involvement/improvement of the plan9 community as a whole is hard to be assesed. To me and most probably my mentor success will be reached if we can run a plan9 environment and assosiated services with it being transparent (as in without noticing that the userland has changed) and be able to also use the same userland on a *nix keeping a consistent feel. When in comes to testing first thoughts were to write a few unit tests for the commands and setup systems with the produces userland instead of their stock one. At key points of development i will publish images with it and also urge the community to test them under their own unique environments and report thoughts, problems and ideas concerning the implemented commands.

a silhouette of a person's head and shoulders, used as a default avatar

Request Tracker: set up external authentication via LDAPS

This is a description of how I set up my Request Tracker instance to use external authentication via LDAPS (LDAP over SSL on port 636).

  1. In the previous installment, I already added the devel:languages:perl repository. Now I install the package containing the RT::Authen::ExternAuth RT extension that will provide the external-authentication-against-LDAP functionality.
    # zypper ref
    # zypper in perl-RT-Authen-ExternalAuth
    # zypper in perl-Net-SSLeay
    # zypper in perl-ldap-ssl
    
  2. I set up SSL on my system (beyond the scope of this blog entry). At the very least, the openssl package should be installed and configured, and my LDAP server's certificates should be present in the /etc/ssl/certs directory.
  3. I tweak my openldap configuration for CA CERT as per this blog entry
  4. I read up on the RT::Authen::ExternalAuth extension (plugin). Here are the principal documentation resources I was able to find:
  5. After reading the documentation and protracted trial and error, I finally came up with the following working configuration (in RT_SiteConfig.pm):
    Set($ExternalServiceUsesSSLorTLS,    1);
    Set($ExternalSettings, { 
                             'MY_LDAP' =>  {
                                'type'            =>  'ldap',
                                'server'          =>  'ldaps://ldap.example.com',
                                'tls'             =>  0,
                                'ssl_version'     =>  3,
                                ...
    
  6. At this point, I fire up request-tracker and am able to log in with my LDAP credentials!

a silhouette of a person's head and shoulders, used as a default avatar

[Ann]: Cobra 3.5 - Windows GUI test automation tool


New features:
* ooldtp python client
* Support setting text on combo box
* Added simple command line options
* Support state.editable in hasstate
* Handle valuepattern in click API
* Support ToolBar type on click
* Write to log file if environment variable is set (set LDTP_LOG_FILE=c:\ldtp.log)
* Support control type Table, DataItem in Tree implementation
* Added scrollbar as supported type

New API:
* MouseMove
* setcellvalue
* guitimeout
* oneup
* onedown
* oneleft
* oneright
* scrollup
* scrolldown
* scrollright
* scrollleft

Bugs fixed:
* Fix to support taskbar with consistent index
* istextstateenabled API
* Fallback to object state enabled if value pattern is not available
* Fix to support InvokePattern on Open button
* Use width, height if provided while capturing screenshot
* Work around for copying text to clip board
* QT 5.0.2 specific changes
* Check errno attribute to support cygwin environment
* Fix keyboard APIs with new supported key controls (+, -, :, ;, ~, `, arrow up, down, right, left)
* Don't grab focus if type is tab item

Java client:
* Fixed selectRow arguments
* Fixed compilation issues
Python client:
* Fix optional argument issue in doesrowexist
C# client:
* Added new APIs (scrollup, scrolldown, scrollleft, scrollright, oneup, onedown, oneleft, oneright)
Ruby/Perl client: No changes

Credit:

Nagappan AlagappanJohn Yingjun LiHelen WuEyas Kopty, VMware colleagues

Please spread the word and also share your feedback with us (email me).

About LDTP:

Cross Platform GUI Automation tool Linux version is LDTP, Windows version is Cobra and Mac version is PyATOM.

* Linux version is known to work on GNOME / KDE (QT >= 4.8) / Java Swing / LibreOffice / Mozilla application on all major Linux distribution.
* Windows version is known to work on application written in .NET / C++ / Java / QT on Windows XP SP3 / Windows 7 / Windows 8 development version.
* Mac version is currently under development and verified only on OS X Lion. Where ever PyATOM runs, LDTP should work on it.

Download source / binary (Windows XP / Vista / 7 / 8)
System requirement: .NET 3.5, refer README.txt after installation

Documentation references: For detailed information on LDTP framework and latest updates visit http://ldtp.freedesktop.org

LDTP API doc / Java doc
Report bugs

a silhouette of a person's head and shoulders, used as a default avatar

Organizing oSC13 - 57 days before

When I started this series of 'Organizing oSC13' posts I wanted to make three main things. 
  1. Blog about what it takes to make oSC13
  2. Include things that could be useful in the future to people who will take over the next conferences
  3. Inform people how things are going out of a strictly personal sight
Now I warned you before, this blog contains explicit content. If you are easily shocked or feel offended when someone talks a bit dirty then please stop reading. A lot of documentation can be found elsewhere.

Having said that I continue :D

Now so far I haven't wrote anything about the actual progress of the conference. Today I will write about it.

So far we have 36 people working on tasks on https://trello.com/osc13 which is where we put tasks and work on them. 
Now let's talk in numbers:

So far we have 111 total tasks separated in 3 sections. The Sections are Program - Promo - Venue.

We have a total of 22 tasks in Program. From those 22 tasks we have 17 on 'To Do', 1 on 'Doing' and 4 on 'Done'.

We have a total of 64 tasks in Promo. From those 64 tasks we have 11 on 'To Do', 15 on 'Doing' and 38 on 'Done'.

We have a total of 25 tasks in Venue. From those 25 tasks we have 15 on 'To Do', 4 on 'Doing' and 6 on 'Done'.

We also have tasks that were finished even before reaching https://trello.com/osc13 , like articles or gathering some equipment that we already have in our possession.

In order to finish all that tasks many work hours where spent, many people were on to them and many fights between us where given so that we succeed the best possible result. This is something I really want to point out. We fight over a lot of things, mostly because we want to do things perfect, have in mind that this is a good thing and in the end of the day we are more bonded than before. We are closer because we understand more the person we are working with. This leads to less fights and better results as we continue. If you have a solvent character those fights make you better in many ways. 
One thing I really like this year is that everyone of the people I've worked with so far is ready to take one for  the team. Another is that we all want the same thing, to make this Conference the best possible.

If you have some time and you want to be a part of this team then join us at https://trello.com/osc13 and help. If you have the will to do things, even if you feel you can't do anything, there are people there who will be happy to help you finishing tasks. Help needed, help wanted and help can be provided.

a silhouette of a person's head and shoulders, used as a default avatar

Organizing oSC13 - 58 days before


Meetings-planning-searching-meetings and here we go again meetings-planning-searching-meetings. Of course not always with that turn and some times with even more meetings. Having A LOT of meetings is the necessary 'evil' when organizing a conference. In meetings you get to interact with other people, get feedback and generate new ideas out of the interaction. You get to know what is going well and what it does not, where you need more things to be done and where you need less things to be done. What works and what it doesn't. Nevertheless meetings although they are necessary for the organization hide what I think is the biggest enemy of an organization. This enemy is Paralysis by analysis.

An experienced person should be able to recognize this after a while but the thing here is that if you fall into this loop, you will have time lost and time as I said before is really precious when you organize an event. Given the fact that within reasonably boundaries anything that you plan can take place, time is your only obstacle. It is the mail reason why many good ideas are left out of the organization of many conferences over the years.

This leads to the conclusion that recognition of Paralysis by analysis after the fact is not enough. When starting to organize something always have that in the back of your head. Avoiding it is not that difficult but at some points require to have a good programming of the meetings. What I've noticed over the year is that most of the times people who cause this are the people who lead and most of those times this happens for 2 reasons.

Case 1: Someone has an idea and you know that this idea is either not viable at the timeline you have or it has failed in the past(there are other reasons too but those are the most common). Now you try to convince this person that you should not do that for X reasons. The person is convinced that the idea is perfect and disagrees with you and you all fall in the loop of trying to prove your point. So after a while you spend more time talking that the actual time that would take for this to be done or for this to be failed. You should have a vision of either let the person do this (if you can afford it) or to have this person directed to documentation or other people so that the person will go look for it and see your point. This problem can be partially predicted while reading the agenda of the meeting and knowing the people you work with. Reading the agenda of the meeting before is always important.

Case 2: I often call that The conference bag problem. You and your team have an idea that will make the conference great. There should be a certain limit of how much time you will spent on talking about anything. Normally ideas like conference bags or conference t-shirts are the ones that make you fall into the loop of Paralysis by analysis. This often happens because subjects like that are more light and have unlimited possibilities.

Having a good programming of the conference meetings can save you from those things if you stick to that. Always have in mind that the only thing that you don't have most of the times is time itself.

a silhouette of a person's head and shoulders, used as a default avatar

Announce: LDTP 3.5 - Linux GUI test automation tool

Highlights:
New API:
* inserttext, objtimeout, guitimeout, getcellsize, getcellvalue,
getobjectnameatcoords, getcombovalue, getaccesskey in Python client
* doubleClick, doubleClickRow, onWindowCreate, getCellSize, getComboValue,
appUnderTest, getAccessKey in Java client
* getcellsize, getcellvalue in Ruby client
* GetCellSize, GetComboValue, AppUnderTest, GetAccessKey, MouseRightClick,
DoubleClick, DoubleClickRow, RightClick in C# client

New control type:
* POPUP MENU for Ubuntu environment

Bugs fixed:
Ruby client:
* Fixed optional arguments to imagecapture
* Check window_name parameter, if empty then use @window_name passed in
constructor

Python client:
* Fixed optional argument APIs to work on both Windows and Linux
* imagecapture x, y offset, height and width parameters are disregarded if
window parameter is provided - Bug#685548
* Return unicode string all the time on gettextvalue
* Fix partial match argument in selectrow, compatible with Windows
* Patch by ebass to support Python 2.6
* Added Errno 101 as we see in ebass Ubuntu 10.04 environment

Core LDTP2
* Include label type on gettextvalue
* Don't include separators in the list

Perl client:
* Added perl client

Credit:
* Sawyer X for the Perl interface
* ebass (IRC nick name)
* Marek Rosa
* Thanks to all others who have reported bugs through forum / email /
in-person / IRC

About LDTP:
Cross Platform GUI Automation tool Linux version is LDTP, Windows version
is Cobra and Mac version is PyATOM.

* Linux version is known to work on GNOME / KDE (QT >= 4.8) / Java Swing /
LibreOffice / Mozilla application on all major Linux distribution.
* Windows version is known to work on application written in .NET / C++ /
Java / QT on Windows XP SP3 / Windows 7 / Windows 8 development version.
* Mac GUI testing is known to work on OS X Snow Leopard/Lion/Mountain Lion.
Where ever PyATOM runs, LDTP should work on it.

Download source / binary (RPM/DEB)

Documentation references: API / JavaDoc

For detailed information on LDTP framework and latest updates visit
http://ldtp.freedesktop.org

Report bugs

To subscribe to LDTP mailing lists

IRC Channel - #ldtp on irc.freenode.net

How can you help: Spread the news and send back your feedback to us

a silhouette of a person's head and shoulders, used as a default avatar

Organizing oSC13 - 64 days before




Rule #64// Cornering confidence increases with time and experience.
This pattern continues until it falls sharply and suddenly. 
Taken From http://www.velominati.com/the-rules/

If you ride a bicycle of a motorcycle you should be very familiar with this rule either in theory as written above or in action if you ever slipped in a turn. There are always the bending places and then there is the breaking point of everything. Handling proper situations and 'bending' them when necessarily should also come with the ability of the handler of knowing when something breaks. Knowing and avoiding the breaking point like hell is pretty important. After that last bending point it is you who should come and fill the gap between those bending points. Being lazy for any reason to feel this gap can lead to a total collapse of your whole structure. This is pretty important when organizing something like a conference.

What the organization of a conference is actually looks a lot like a structure made of things that must be there and it is like the foundations of the building, things that is equally important to be there like windows and doors and things that  is good to be there but the whole structure can be operational and without all those like the decoration of the building. The shitty thing here is that most of the people who only know a conference as visitors (and attract visitors is one of your the main goals) get all this backwards.

Having the perfect conditions and everything you need to organize a FOSS conference is beyond imagination so in order to do proper work and in the same time keep everyone of your visitors satisfied you have to 'bend' some things. Most of the time it is your patience and you time but many times is your volunteers and your budget. Did I ever mentioned so far that you have to be very creative? Well when organize a conference many times you will have lemons and you will be asked to make orange juice  No worries. If you and your team are highly creative, making orange juice out of lemons is just foreplay. It is not impossible and once you do it once or twice then you come to a point when you find it very easy. The time you will find something (in other conditions extreme and undo-able) easy be very careful. This is the point when there is a big change to 'fall sharply and suddenly'. There is nothing wrong with failing up to a point. After that point is when you will start having structure problems. If you pay attention you will only have some bruises, if not...

the avatar of Sascha Peilicke