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.
Another marketing achievement in LibreOffice: $(OUTDIR)/inc is gone
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.
Request Tracker: set up external authentication via LDAPS
- In the previous installment, I already added the
devel:languages:perlrepository. Now I install the package containing theRT::Authen::ExternAuthRT 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
- I set up SSL on my system (beyond the scope of this blog entry). At the very least, the
opensslpackage should be installed and configured, and my LDAP server's certificates should be present in the/etc/ssl/certsdirectory. - I tweak my
openldapconfiguration for CA CERT as per this blog entry - I read up on the
RT::Authen::ExternalAuthextension (plugin). Here are the principal documentation resources I was able to find:
- the README file
- the sample configuration file, which I installed on my system in step 1, above, at the following location:
/usr/share/request-tracker/local/plugins/RT-Authen-ExternalAuth/etc/RT_SiteConfig.pm
I read it usingless.
- And then there is the RT::Authen::ExternAuth page on MetaCPAN and, in particular, this subpage of that page.
- Thanks to Thomas Sibley (Tsibley) over at the Request Tracker Wiki, I now know that the
RT::Authen::ExternalAuthextension supports LDAPS out of the box by simply specifying the LDAP server with a ldaps:// prefix -- see the Net::LDAPS documentation for more details on this.
- 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, ... - At this point, I fire up
request-trackerand am able to log in with my LDAP credentials!
[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 Alagappan, John Yingjun Li, Helen Wu, Eyas Kopty, VMware colleagues
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
Organizing oSC13 - 57 days before
- Blog about what it takes to make oSC13
- Include things that could be useful in the future to people who will take over the next conferences
- Inform people how things are going out of a strictly personal sight
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.
Announce: LDTP 3.5 - Linux GUI test automation tool
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
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...
Open source project licensing
Whenever you decide to publish some code somewhere in the internet, you have to think about the license. For many of us not being lawyers, this is a rather random choice. Given what we've been told is best, we usually just use any GPL flavor or Apache, MIT or BSD and don't spend much time … Continue reading Open source project licensing

