(April 20, 2013 05:04 PM)
Short and sweet information on this can be found from AbiWord wiki
. This post just deals with a few commonest errors found in building AbiWord, when it goes wrong.
As we are happily moving towards the release of AbiWord-3.0.0, many developers are joining the effort. With the announcement of Google Summer of Code-2011, many students too are interested in joining the project. This guide targets to help anyone to build AbiWord on Ubuntu 10.04/64 bit. This is still applicable to many other linux distributions too, though it is tested on Ubuntu. Unlike the usual building guides, this one is going to follow the worst-path -- assuming every failed cases, for a complete novice.. :)
So, as mentioned in the AbiWord's wiki page
, let's start with installing autoconf.
sudo apt-get install autoconf
pradeeban@pradeeban:~/programs/abiword$ sh autogen.sh
Can't exec "libtoolize": No such file or directory at /usr/bin/autoreconf line 189.
Use of uninitialized value in pattern match (m//) at /usr/bin/autoreconf line 189.
configure.in:130: error: possibly undefined macro: AC_LIBTOOL_WIN32_DLL
If this token and others are legitimate, please use m4_pattern_allow.
See the Autoconf documentation.
configure.in:131: error: possibly undefined macro: AC_PROG_LIBTOOL
autoreconf: /usr/bin/autoconf failed with exit status: 1
Running ./configure --enable-maintainer-mode ...
configure: error: cannot find install-sh, install.sh, or shtool in "." "./.." "./../.."
OK. We need libtool installed!
sudo apt-get install libtool
pradeeban@pradeeban:~/programs/abiword$ sh autogen.sh
checking pkg-config is at least version 0.9.0... yes
checking whether gcc understands -Wall... no
checking whether gcc understands -Wextra... no
checking whether gcc understands -Wsign-compare... no
checking whether gcc understands -Wpointer-arith... no
checking whether gcc understands -Wchar-subscripts... no
checking whether gcc understands -Wwrite-strings... no
checking whether gcc understands -Wmissing-noreturn... no
checking whether gcc understands -Wunused... no
checking whether gcc understands -Wpointer-arith... no
checking whether gcc understands -Wshadow... no
checking for libpng... no
checking for libpng14... no
checking for libpng12... no
checking png.h usability... no
checking png.h presence... no
checking for png.h... no
configure: error: `png.h' not found, install libpng or specify CPPFLAGS to include custom locations
As we can see, we will be installing each of the dependencies one by one, if we follow the same steps like this.
But we actually need not to!
pradeeban@pradeeban:~/programs/abiword$ sudo apt-get build-dep abiword
Reading package lists... Done
Building dependency tree
Reading state information... Done
Note, selecting libwpd8-dev instead of libwpd-dev
Note, selecting libxslt1-dev instead of libxslt-dev
The following NEW packages will be installed:
build-essential cdbs cvs debhelper diffstat dpkg-dev fakeroot fdupes g++ g++-4.4 gettext html2text intltool intltool-debian libaiksaurus-1.2-0c2a
libaiksaurus-1.2-data libaiksaurus-1.2-dev libaiksaurusgtk-1.2-0c2a libaiksaurusgtk-1.2-dev libasio-dev libatk1.0-dev libboost-date-time-dev
libboost-date-time1.40-dev libboost-date-time1.40.0 libboost-dev libboost-regex-dev libboost-regex1.40-dev libboost-regex1.40.0 libboost-serialization1.40-dev
libboost-serialization1.40.0 libboost1.40-dev libbz2-dev libcairo2-dev libdbus-1-dev libdbus-glib-1-dev libdirectfb-dev libdirectfb-extra libenchant-dev
libexpat1-dev libfontconfig1-dev libfreetype6-dev libfribidi-dev libgconf2-dev libgcrypt11-dev libgdome2-0 libgdome2-cpp-smart-dev libgdome2-cpp-smart0c2a
libgdome2-dev libglade2-dev libglib2.0-dev libgnutls-dev libgoffice-0.8-8 libgoffice-0.8-8-common libgoffice-0.8-dev libgpg-error-dev libgsf-1-dev libgtk2.0-dev
libgtkmathview-dev libgtkmathview0c2a libgucharmap2-dev libice-dev libicu-dev libidl-dev libidn11-dev libjpeg62-dev liblink-grammar4 liblink-grammar4-dev
libloudmouth1-dev libmail-sendmail-perl libncurses5-dev liborbit2-dev libots-dev libots0 libpango1.0-dev libpixman-1-dev libpng12-dev libpopt-dev libpsiconv-dev
libpsiconv6 libpthread-stubs0 libpthread-stubs0-dev libreadline-dev libreadline6-dev librsvg2-dev libsm-dev libsoup2.4-dev libssl-dev libstdc++6-4.4-dev
libsys-hostname-long-perl libsysfs-dev libt1-dev libt1-doc libtasn1-3-dev libwmf-dev libwpd-stream8c2a libwpd8-dev libwpg-dev libwps-dev libwv-1.2-3 libwv-dev
libx11-dev libxau-dev libxaw7-dev libxcb-render-util0-dev libxcb-render0-dev libxcb1-dev libxcomposite-dev libxcursor-dev libxdamage-dev libxdmcp-dev libxext-dev
libxfixes-dev libxft-dev libxi-dev libxinerama-dev libxml2-dev libxmu-dev libxmu-headers libxpm-dev libxrandr-dev libxrender-dev libxslt1-dev libxt-dev
link-grammar-dictionaries-en orbit2 po-debconf quilt x11proto-composite-dev x11proto-core-dev x11proto-damage-dev x11proto-fixes-dev x11proto-input-dev
x11proto-kb-dev x11proto-randr-dev x11proto-render-dev x11proto-xext-dev x11proto-xinerama-dev xtrans-dev xz-utils zlib1g-dev
0 upgraded, 140 newly installed, 0 to remove and 3 not upgraded.
Need to get 60.4MB of archives.
After this operation, 269MB of additional disk space will be used.
Do you want to continue [Y/n]? Y
pradeeban@pradeeban:~/programs/abiword$ sh autogen.sh
checking for libpng... yes
checking for PNG... yes
checking jpeglib.h usability... yes
checking jpeglib.h presence... yes
checking for jpeglib.h... yes
checking for jpeg_read_header in -ljpeg... yes
checking zlib.h usability... yes
checking zlib.h presence... yes
checking for zlib.h... yes
checking for DEPS... yes
checking for GTK214... yes
checking for GSFGI... yes
checking for PLUGIN... yes
checking for OPENDOCUMENT... configure: error: Package requirements ( libgsf-1 >= 1.12 redland >= 1.0.10 rasqal >= 0.9.17 ) were not met:
No package 'redland' found
No package 'rasqal' found
Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.
Alternatively, you may set the environment variables OPENDOCUMENT_CFLAGS
and OPENDOCUMENT_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details.
Let's fix the redland RDF dependency issue by installing it.
pradeeban@pradeeban:~$ sudo apt-get install librdf0-dev
again, pradeeban@pradeeban:~/programs/abiword$ sh autogen.sh Now it builds fine!
config.status: creating plugins/ots/xp/Makefile
config.status: creating config.h
config.status: config.h is unchanged
config.status: executing depfiles commands
config.status: executing libtool commands
dynamic binary yes
static binary no
platform unix (embedded: no)
spell checking yes
status bar yes
emacs keybinding yes
vi keybinding yes
gtk2 > 2.14 yes
Now type `make' to compile.
"make" goes fine too.
Let's "make install" now!
pradeeban@pradeeban:~/programs/abiword$ make install
test -z "/usr/local/share/abiword-2.9/ui" || /bin/mkdir -p "/usr/local/share/abiword-2.9/ui"
/bin/mkdir: cannot create directory `/usr/local/share/abiword-2.9': Permission denied
make: *** [install-uiDATA] Error 1
make: Leaving directory `/home/pradeeban/programs/abiword/src/af/xap/gtk'
make: *** [install-am] Error 2
make: Leaving directory `/home/pradeeban/programs/abiword/src/af/xap/gtk'
make: *** [install-recursive] Error 1
make: Leaving directory `/home/pradeeban/programs/abiword/src/af/xap/gtk'
make: *** [install-recursive] Error 1
make: Leaving directory `/home/pradeeban/programs/abiword/src/af/xap'
make: *** [install-recursive] Error 1
make: Leaving directory `/home/pradeeban/programs/abiword/src/af'
make: *** [install-recursive] Error 1
make: Leaving directory `/home/pradeeban/programs/abiword/src'
make: *** [install-recursive] Error 1
If this permission issue arises, pls change the write permission of usr/local/share, usr/local/bin, usr/local/include, and usr/include/lib. That will make abiword-2.9 ending up in the above directories respectively.
pradeeban@pradeeban:~/programs/abiword$ make install
Now it goes fine indeed!
Now let's just run AbiWord from terminal and see whether it runs!
abiword: error while loading shared libraries: libabiword-2.9.so: cannot open shared object file: No such file or directory
Typical linking issue.
pradeeban@pradeeban:/lib$sudo ln -s /usr/local/lib/libabiword-2.9.so
YAYYY! AbiWord-2.9.0 is running!!!
you also can debug AbiWord using gdb.
pradeeban@pradeeban:~$ gdb abiword
However, my apologies for posting this lengthy post for a simple task. Just followed the worst case to cover all the student queries regarding building AbiWord-2.9.0 from trunk using Linux on terminal.
(April 03, 2013 05:56 AM)
Mozilla is 15 and that's 15 years of fighting for the open web. I remember the source code release, I built it on in Pentium 166 with 64MB of RAM - a Debian box. I maybe less RAM than that, I forgot. It was huge.
Since, the web has gone forward big times, and Firefox helped users to take back the web by bringing down the IE supremacy and focusing on a standardized web technology.
I have great hopes for the future of the free web.
(March 20, 2013 03:33 PM)
Google did shutdown Reader, their feed aggregator. Speculation is that it is to promote the use of the proprietary publishing silo that is Google+, and I'm not saying as a Google+ grudge I might hold, I actually believe it might be one of the considerations.
Imagine a second if all the content was pushed exclusively to a popular silo like Twitter, Facebook and Google+: it would be confined to these environments and people wouldn't be able to aggregate elsewhere. Now what if one of these hugely popular silos disappeared. It has happened, it can happen again, I have numerous examples. And I am still look for the Google+ or Facebook feeds, while it is clear that Twitter already removed them.
With RSS all we need is a different aggregator to pull the feed. It would still work. And that's what happening with Google Reader user base: they are moving to other platforms that offer the same feature, either web based, or using desktop software.
Let's have this a learning step and continue to focusing on open standards for publishing. Let's continue to provide feeds. Let's continue to request feeds. And more importantly, us software hackers, let's continue to provide awesome libre software to do the job and on which we can reliably build upon.
(January 02, 2013 05:32 PM)
It is the new year. We have a tendency to put artificial starting points in time to want to (start to) do things, something like the "new year resolutions". I don't really abide to that because I believe you should do things when you want to, have to or can. You don't need a January 1st or some sort. This year it happens that the new year almost coincide with my timeline. Two weeks into the new house in Montréal, this mean that for once I can use that as the starting point ; or not.
Happy new year, and remember, be excellent to each other !
(December 12, 2012 10:50 PM)
It is true that the support of the most used Microsoft Visio file formats in LibreOffice
will celebrate 1 year next February. And I will gladly have a birthday talk with any of you who will be freezing in Brussels during the next FOSDEM 2013
. Nonetheless, even though libvisio was in development for several months already, the Visio story was far from finished when we released that day. As I already mentioned in another blogpost
concerning reverse-engineering of file formats, assessment of a conversion quality in this kind of cases is illusory before real users get to stress-test it with real-life documents.
Since the first release of our filter in LibreOffice
3.5.0, we were improving it thanks to bug reports from our users. It is a big thank you
that I would like to say to all those that took the bother to submit reports in our bugzilla. Without you, guys, this filter would be only a moot exercise.
But wait... Do I write this blog now only to thank the people who contributed to the current quality of the filter? Yes to a big extent! Nevertheless, I know that the distinguished readers of this blog would like to have some news. And, yes, we have some news.
library underwent heavy re-factoring as we started to understand more and more details about the underlying file-format.
- A particular bug report about files imported as empty pages provided us with a document structure that we did never see before. This resulted in a more generic parser and unification on the way we parse master shapes and visible pages.
- This re-factoring in its turn allowed us to extend our file-format coverage to all earlier binary Visio file-format versions. We now support all binary Visio documents starting from Visio 1 (released in 1992).
- Extending the support to earlier file-format versions allowed us to better understand the development of the file-format, to find more information that we did not parse before, and improve the conversion quality for other binary versions too.
- Another re-factoring came with our work to support the
XML-based Visio file-formats, namely the "XML Drawing" also known as
*.vdx; and the Microsoft Visio 2013 new file-format, known as
So the news is that LibreOffice
4.0.0 will be able to open ALL
Visio files starting from Visio 1 (release in 1992) until Microsoft Visio 2013 (released just some weeks ago).
And since the readers of this blog are more interested in pictures than in pointless words, here come some candies for your eyes:
|File opened in Visio 1.0|| ||The same file opened in LibreOffice 4.0.0 beta1|
|VSDX File opened in Microsoft Visio 2013|| ||The same file opened in LibreOffice 4.0.0 beta1|
So, download the LibreOffice
4.0.0 beta1 and help us testing the new big release. We are interested in bug reports that help us to improve our quality. And for those that would love to support us with donations, just click here:
(November 26, 2012 04:34 PM)
It has been a long time without communicating with the distinguished readership of my blog. There was a hard decision to be made between producing code and producing literature. The code won until now. But now I have found a time to lift my head up from the coding, so the literature is back.
Many of you might be wondering what happened since my post about the text support in CorelDraw files from last June. Things are going pretty well. Since the CorelDraw import filter was released with LibreOffice 3.6, the users started to use the feature and report bugs. We were working on fixing them and improving the
Quick overview of reverse-engineering process
From my discussions with our users and developers on-line and during some of the conferences that I attended, I realize that there is a slight misunderstanding in the large public about how the reverse-engineering works. So, here are some thoughts that may help understand it a bit more:
At the beginning of the process, there is a file-format. We don't know anything about its internal structure. There is no documentation whatsoever about it. One tries to generate a file in this file-format and examine it in hexadecimal viewer. Next, one tries to operate some little change in the document and examine what changed in the file itself. Eventually after many iterations, one might find regularities and some structure that helps to divide the file into several sections or blocks of more manageable size. It is essential in this phase that one can encode this information into some kind of introspection tool, since a plain hexadecimal viewer is not a very productive tool in the long run. We use for introspection of documents Valek Filippov's
oletoy, a python tool that stores our knowledge about the structure of different file-formats.
Once there is enough information about how to parse the document structure, the next target becomes to get some visible results. In order to save time and get visible results in a short time, all libraries such as Users' feedback is essential
libvisio, use the
libwpg's interface. Reusing this interface means a considerable saving of time, since there are already working generators of ODG and SVG from the callbacks of this interface. Having visible results soon in the development/reverse-engineering cycle also allows visually asses the import results and correct them if necessary. Eventually, one can realize the absence of necessary information and try to go back to reverse-engineering to find it.
The support of reverse-engineered file-formats is a constant work-in-progress. A subtle dance between implementation and information digging. In this process, the user feedback is an essential element. The theories about the meaning of some information inside file hold only until a file comes to falsify them. Even a complex file generated by a developer is easily beaten by real life documents. And each file that shows a "weird" bug is advancing the understanding of the file-format. Let us look at this example:
After the release of LibreOffice 3.6.1, we got a not so good assessment of the quality of the CorelDraw import filter in the heise.de' c't review. Those of you that understand German can delight in the nuanced evaluation:
Ein neuer Import-Filter in Draw öffnet jetzt auch CorelDraw-Dateien, was uns im Test allerdings nur mit sehr einfachen Zeichnungen fehlerfrei gelang. In dieser Form ist er schlicht unbrauchbar.
Which can be mildly translated into English (given the understatements so common in en-GB):
A new import filter in Draw opens now also CorelDraw files, which we managed to do without errors only with very simple drawings. In this form, it is rather unusable.
Since we are really concerned about the quality of our software, we are thankful for any bug report whether it is brought to us in a friendly or other manner. This specific bug report helped us to understand how are stored in newer CorelDraw files chains of matrix transforms. And since a picture speaks louder then thousand words, compare the document c't was refering to opened in LibreOffice 3.6.2 and then in LibreOffice 3.6.3, after we fixed the position bits.
|File opened in Libreoffice 3.6.2|| ||The same file opened in LibreOffice 3.6.3|
So feel encouraged to submit bugs against the CorelDraw import filter, or — even better — send us patches for your favorite itch.
(September 26, 2012 08:24 PM)
Broken Lock by lyudagreen, on Flickr
A big North American online travel booking system still store passwords in plain text. Worse: they claim they take your security seriously. Here is the excerpt of the confirmation email you get when you register:
PASSWORD: We're serious about security. Since your
password is confidential, we won't repeat it here. However, if you ever
forget your password, you can always request a reminder
Yes, the email has been capitalized.
The other day I wanted to book some airline tickets, so I returned to the website. I had forgotten the password. No biggie, I follow the "lost password procedure" and chose the "email" instead of the still idiotic "security question".
Guess what? I didn't get a link to reset my password, or a temporary password. No. I got my password sent in plain text. Worse. It was in UPPERCASE and the passwords are case insensitive in the system. Wow. Just wow.
PS: this is not the corporate travel booking system we use at Mozilla.
(August 30, 2012 03:46 PM)
I was recently playing with a few tools, that let you have a look into your past tweets. All My Tweets
is an interesting service, that lets you view all your tweets in a simple page, from the beginning
. Interestingly, another service, named Twitario
gives a view of all your tweets, as a diary.
Though Twitario provides a nice interface to find the tweets easily, based on the calendar, it doesn't support Unicode characters, which is surely a minus for those who tweet in Unicode languages. "All My Tweets" include the link to the original tweet itself, where Twitario provides the option to delete the tweets. Having analyzed these tools, I should mention that these tweets were really useful, and brought a few interesting memories back.
Now time to look into the trail of my tweets. Here are some of my tweets, since the 26th of March, 2009.is finishing the documentation. Mar 26, 2009
It is notable that my first tweet is on documentation. It was probably on the documentation on the project done during the internship. I have always been a supporter of good documentation - It helps the blood flow of open source.Abiword Cross-compiling using wine successful on Ubuntu. Apr 16, 2009
At that time, uwog was still completing the MSVC build for AbiWord. I found Cross-building useful, since it was complete and gave me a usable AbiWord build for Windows, with no issues. This was indeed a remarkable point, which gave me further confidence to work on AbiWord Windows API, using Ubuntu as my platform.Summer Love with Abiword... Apr 20, 2009
This was a happy announcement of me getting into the Google Summer of Code 2009. This was my first Google Summer of Code, and I was pretty much excited. AbiWord community was super-friendly, and I am proud to be a member, since then.with Anjuta.. an IDE similar to Visual Studio... for Linux. May 08, 2009 Anjuta DevStudio
is a Gnome Integrated Development Environment. I have mostly used Anjuta as a syntax highlighter for my C/C++ projects including AbiWord development. For compiling and building of AbiWord, I just use make
directly.needs a mute option and filtering for facebook messages. Any suggestions... Jun 01, 2009
At that time, there was no way to opt-out from the Facebook notifications from the photos that we commented, or to remove ourselves from the facebook threads. I was annoyed, when someone sends group messages directly to inbox. It is great to see that these options are now available for facebook. Now we can remove ourselves from the messages. However, filtering is still not possible.
Neither muting (receiving the messages, but not getting the notification of that red one for the new message, for the uninteresting thread).#AbiWord Turns 11! Happy Birthday to dear Abiword! Happy Birthday to you... Jul 16, 2009
That was remarkable to mark the 11th year of AbiWord, since it started as an open source project in the year 1998.My computer never complained abt me repeating the same build million times, and I've never complained abt its time delays. We <3 each other. Aug 17, 2009
Some romance with my computer.. ;)10 reasons to avoid talking on the phone http://theoatmeal.com/comics/phone from @oatmeal Feb 23, 2010
Each of these visualization methods deserves a blog post on its own. Visual-Literacy.org
provides interesting learning resources, such as an introduction to argumentum
. I have also enrolled to their online courses, full of study materials
.I should create some of my own thought experiments as well.. :D http://plato.stanford.edu/entries/thought-experiment/ Jun 06, 2010
Thought experiments are fun, and it enhances your ability to think, weird. ;) Follow the above link to realize that. Again, each of these thought experiments deserves a post on its own.GSoC welcome package once more. Special thanks and love OGSA-DAI, OMII-UK and Google. Reminds me the lovable days of GSoC2009 - Abiword too. Jun 19, 2010
A blog post that happily announces my second welcome package from Google. Yes, this was for my Google Summer of Code with OMII-UK.
Also make sure to read Moments with Twitter - II
, the successor of this post.
(August 17, 2012 04:40 AM)
In my previous post ''What happened to all the pioneers in personal computing?'' I forgot a few notable companies.
- Acorn: I mostly forgot to talk about Acorn Computers, probably because Acorn computers were only popular mostly in the UK and were quasi unknown in France. The BBC Micro is their most popular 8-bit computer, released in 1981. But what came later was the game changing for the industry today. In 1987, they released the Acorn Archimedes, a 32-bits desktop computer powered with a RISC processor. It was faster than most of the competition like the Atari ST and the Amiga. Its CPU was the ARM (Acorn RISC Machine). This led to the spin-off ARM Ltd, that was in charge of the development of the ARM CPU. A partnership with Apple that wanted something for the Newton led to further development and the first license ; the RISC PC became the last generation of Acorn computer. Today, ARM is the most used CPU design for embedded systems: cell-phone, DSL routers, iPod, smart phones, PDA, iPad, etc. Acorn Computers moved on to build set-top boxes, after selling the RISC PC business, and in the end was absorbed into Broadcom in 2000 to become the DSL unit. ARM Ltd is now known ARM Holdings and license the IP for the ARM CPU to manufacturers.
- Compaq: Compaq major achievement was to be the first manufacturer of 100% IBM compatible PC after they successfully cloned the BIOS via clean room engineering, 1982. The BIOS was the cornerstone of IBM PC compatibility as just running MS-DOS wasn't enough: the Disk Operating System has so little feature that programmers mostly called into the BIOS interruptions to write their applications. Phoenix Technologies who followed in 1984 offering their own BIOS clone. Compaq made the first 100% IBM PC compatible portable computer, and then manufactured lot of quality IBM PC Clones, including the first with an Intel 386, being ahead of IBM itself. After buying Digital Equipment Corporation, it was bought by HP in 2002 and the PC product lines were merged, where mostly Compaq products in the business line were rebadged HP.
As I was writing this second, post, Ars Technica published From Altair to iPad: 35 years of personal computer market share where they relate the 35 years from the Altair to the move to the iPad as a personal computing device.
(August 06, 2012 05:56 PM)
The Commodore 64 is 30. The TRS-80 is 35. But what happened to all the pioneers of the Personal Computing era?
- MITS. They made in 1974 the Altair 8800. It was a micro-computer sold in kit (or assembled), running the Intel 8080 processor. The first one ; it sold quite well, but was not, at first, usable out of the box as it didn't have software. Also it is the Altair that led to the creation of Microsoft who sold their BASIC to MITS. For Microsoft, we know the rest, for the Altair, the computer is almost forgotten, so is MITS, as the company got sold. One notorious clone of the Altair was the IMSAI 8080 ; if you have seen the movie Wargames (1983), you have seen one.
- Tandy: The TRS-80 appeared in 1977 and become quickly one of the most popular PC, selling until being discontinued in 1981, replaced with the Model III. It was much cheaper than the Apple 2 and was widely available in the Radio Shack stores (several thousands in the US). Zork, the text adventure game was ported and released on the TRS-80 first. Tandy was so serious about making computers that they bought GRiD, and later started making IBM PC clones. Tandy sold off the computer division to AST in the early 90's. The TRS-80 was nicknamed Trash-80 probably because of all the quirks in its design.
- GRiD Computing: GRiD is not that well known from the general public, but they were the first company designing laptop computers that were attaché-case sized. The GRiD Compass was released in 1982 and was marketed to CEOs. The GRiD Compass 110 featured the clam-shell design so well known today that GRiD patented. In 1989, the GRiD Compass 1101 was the first laptop to fly on the Space Shuttle. GRiD also pioneered in tablet computing. They got bought by Tandy.
- Commodore: The Commodore 64 was not Commodore first computer, nor their last, but was hugely popular, both in North America and in Europe, a best seller with between 12.5 and 17 Million units sold. It just celebrated its 30 years. In 1984, Commodore International founder Jack Tramiel left the company. After that, Commodore went on to buy a startup called Amiga Corporation to make the Amiga line of computers, that ended up competing with the rival Atari. The company filed for bankruptcy in 1994. Today the ghost of the Amiga still lives in the heart of fans and hobbyists. I wish my brother had preferred getting a Commodore 64 rather than a TI99/4A at the time.
- Atari: The story of Atari is more convoluted. Atari Inc. was the company that sold the first video game: Pong. In 1979 they released the Atari 400 and 800 8 bits computers. In 1984, Warner Communication, Atari Inc. owner, sold off the home computing and console division to Jack Tramiel - Commodore International founder - to form Atari Corporation. This is how the Atari ST end up being released in 1985, competing directly with Commodore's Amiga. It was more popular in Europe, with Germany being the key market, than in the US. The whole line was cancelled in 1993, and in 1996, Atari reverse merged with another company, to be sold to Hasbro in 1998, mostly for the IP (game rights) and brand.
- In Europe, there was Sinclair, Amstrad, etc. None of these make personal computers anymore.
So what is left from the pioneers?
- Microsoft, that sold BASIC to MITS (and several other manufacturers including Apple), and later MS-DOS to IBM is still here, doing mostly the same thing.
- IBM is still around, after launching the IBM PC in 1981, using Microsoft MS-DOS (and BASIC), they failed to gain traction in the OS market with the failed OS/2. IBM sold the PC division to Lenovo in 2005.
- Apple, after the Apple 2 gained traction with the Macintosh they launched in 1984. After catastrophic mid-90's, they got put back on track and are now the number 1 laptop vendor in a market dominated by Microsoft Windows machines, and make the best selling smartphone, the iPhone.
Am I missing anything?
Update: part deux
(July 23, 2012 06:12 AM)
Over the last few years I've been fortunate enough to hack on Calligra and Abiword, adding support for the RDF/XML that can be stored as part of an ODF document. Both suites can also interact with each other, allowing RDF to move over the clipboard along with the text content.
There are some things abiword can do with RDF that Calligra currently can't. These include highlighting the parts of the document that have RDF associated and initial support for capturing relations between things in RDF. Such relationships from RDF can give back to the user right off the bat. For example they can be useful for navigating the document by semantics, moving from a child to their parent, or the cat to it's owner. RDF also opens up document computing to other possibilities like navigating by time rather than by the linear sequence of pages.
I am currently looking to do some more development around ODF. It would be wonderful to do some more indepth hacking on either project as they both have a very nice, welcoming, open source team behind them. If anybody knows of some sponsored hacking floating around for these tools, please get in touch :)
I recently committed a small change to Calligra to move back to using intrusive reference counting for some non graphical RDF objects. While Calligra can use marble to allow editing locations from RDF, I used marble at a level in the calligra stack that isn't optimal, so have to shift that to a plugin to allow it to be easily accessible to distribution builds.
(July 16, 2012 06:37 PM)
Firefox 16 uplift to Aurora is today. This version will have Accessibility enabled on Mac, finally, but you must either force enable or use VoiceOver. It should work for basic tasks, albeit there is some serious performance problems with VoiceOver I'm investigating.
Also, coming soon for Firefox 17: handling properly image maps.
(July 02, 2012 11:52 AM)
I am happy to announce the upcoming book of my dear wife. A must read for all interested in intellectual property, in access to copyrighted materials and in development issues.
This book originates from a PhD thesis defended at the Graduate Institute of International and Development Studies, Geneva, Switzerland. It has been awarded "summa cum laude" mention.
Check, please, with your libraries whether they know about the book and advise them strongly to purchase it for the biggest good of the humanity :)
(July 01, 2012 02:52 AM)
One thing puzzling with YouTube HTML5 support is the message "this video is currently unavailable" which could mean a lot of things. The actual translation is "we need to show you ads and you need Flash for that".
If should be noted that there is no problem on mobile platform, Android or iOS, the video is shown.
(June 21, 2012 04:23 AM)
I don't know if you noticed, but when you connect a Nexus One or a Samsung phone (Gingerbread or ICS, tested with a SGS 2 or Galaxy Note) to your Mac, the phone isn't recognized as a camera.
There is a difference between the Nexus One (stuck to Gingerbread) and the Samsung. The Nexus is USB Mass Storage (ie the phone is seen as a USB disk) while the Samsung is MTP (a variant of PTP, the USB standard for still image cameras). But in both case, the MacOS digital camera support (Image Capture, iPhoto or Aperture) recognize it but do not show anything. Adobe Lightroom is in the same boat (I'm not sure if it uses the OS capability or reimplemented it). This is because Android butcher the implementation of the Design rules for Camera Filesystem. See Android bug 2960 where you'll notice that it was largely ignored by Google despite even having a patch.
For the Nexus One this does not prevent from manually copying the images. But Samsung.... one would think they would have fixed that, but obviously they didn't. To make things worse, Samsung doesn't use Mass Storage but MTP, which mean that there is no way to just copy files from the camera. That last bit is utter fail.
Update (June 21st): from the comment, apparently I can set the Galaxy Note to be as USB Mass Storage. It is complicated, needs to be done manually, require disabling USB Debugging (it will do it for you, but not reenable it), etc. In short they turned something relatively simple to something overly complex and unfriendly. Worse, it is so many to reach the dialog where like on the Nexus One, you can tap to enable Mass Storage. The positive side is that you can't enable Mass Storage without unlocking the phone, which is a security feature.
(June 21, 2012 12:53 AM)
Some update about Firefox accessibility on Mac:
- Accessibility on Mac has been disabled in Aurora 15 (and Nightly) shortly after the uplift early June. This was done because accessibility seemed to be instanciated for more than just accessibility clients, causing several unforeseen performance issues.
- Accessibility on Mac has been re-enabled in last night Nightly 16 build for Mac. The changes are that now we whitelist VoiceOver before starting accessibility on the Mac. We also added a switch in
about:config to force enable (bypass the white listing) or disable.
- I have a current patch queue that include dealing with tab panels properly (bug 750612), text reading (bug 718625) and WAI-ARIA landmarks (bug 718700).
accessibility.force_disable. This option has 3 values:
- 0 (default): do as usual
- 1: disabled. Accessibility will not be started.
- -1: force enabled. Accessibility will always start when requested, even without voice over.
This also works on Windows (the value -1 is unused) and soon on Linux with atk (I have to finish it)
I hope to get more rolling before we uplift Aurora 16.
(June 14, 2012 05:41 PM)
Pleasantly surpised we made it into the great LWN
(June 12, 2012 09:06 PM)
As Sophie Gauthier announced in the language of Voltaire, LibreOffice was branched for the beta phase in view of the 3.6 release. This is a major step in order to bring the features we were working on during the last half a year to the end users. But, it is also oportunity to bring to the main codebase all the nifty nice features that were developed in feature branches and targeted for the next big release, presumably the 3.7.
It is this way that the first version of our new Microsoft Publisher import filter landed to the master. This filter is developed by Brennan Vincent from the University of Arizona in the frame of the Google Summer of Code. Although being a work in progress and supporting for the while only the Publisher 2003 file-format, the progress is spectacular. Brennan has been busy like a bee even long before the start of the program. After only two weeks from the official kick-off, we have a first (non-)release, libmspub-0.0.0.
And as the careful readers of this blog already know, an image speaks louder then thousand words, here are the pics:
A random document from the Internet opened in Microsoft Publisher 2003:
The same document opened in LibreOffice master build from yesterday:
With Valek Filippov, we have a lot of fun mentoring this project. If anybody of the distinguished readership wants to join this effort, the code of
libmspub lives in LibreOffice freedesktop.org repository. The patches can be sent to
libreoffice-dev mailing list. And, do not forget to find a way to join the
#libreoffice-dev channel at
irc.freenode.net in order to meet other developers.
You will never regret the decision to get involved in LibreOffice.
(June 12, 2012 11:01 AM)
Uff, it is done!!!
We started to work on the text support inside
libcdr already before the Libre Graphics Meeting in Vienna. We worked hard during the talks and the long evenings after having eaten some portions of Wienerschnitzl.
Now we are proud to announce that we managed to release yesterday
libcdr-0.0.8 with "basic initial primitive [u]ncomplete" (further BIPU) text support. At the moment, we are supporting only a couple of parameters as a font face and font size and we are able to detect the encoding and produce a corresponding utf-8 string. Far from being perfect, it is nonetheless a milestone, because in the FOSS world, there was no support for CorelDraw text before.
We know that you prefer to look at nice pictures instead of reading bad text. So, this gives your heart's desires.
A simple document with text in CorelDraw 7:
The same document opened in a build of LibreOffice from yesterday:
At the moment,
libcdr is able to convert text in CorelDraw documents from versions 7 to 16. Nonetheless, we know already roughly how to read it in files of lower versions and we will add the support for next release. In the same way, we will extend our support of other text properties, like font colour, transparency, effects, paragraph alignments, character positions, etc.
How can I test it? All this goodness will be part of LibreOffice 3.6.0 release. You will be able to test the text support in the 3.6.0 beta2 pre-release. For the brave, any of the daily builds that are built from a code checkout after June 11th also include
libcdr-0.0.8 and thus the text support in CorelDraw files.
As usual, this is a free and open source software project and, as such, it delights in developers that want to help. So, if you feel the itch, patches can be sent to
libreoffice-dev mailing list. And, do not forget to find a way to join the
#libreoffice-dev channel at
irc.freenode.net in order to meet other developers. We can promis you that you will feel at home in the LibreOffice community.
(June 06, 2012 04:45 PM)
Yep, I deleted my LinkedIn account. Despite the fact that I got no value from it, the leak of 6.5M unsalted password hashes was just the icing on the cake. For so long they had a deficient SSL support, they ask to decrypt a captcha to login and lot of other stupidities. And their mobile app steal or leak personal info like your iPhone calendar.
I should have done that a long time ago. When they asked a reason I typed in "too dumb with security"
You know where you can find me.
(June 03, 2012 07:32 PM)
A very happy first week to my baby daughter Amélie! She was born last Sunday, May 27th, and she and her lovely mother are doing very well. During the day she is total cuteness, rainbows and unicorns, while at night she turns into a hungry monster! A cute monster, but still… :P
Welcome to this world Amélie!
(June 01, 2012 08:54 PM)
How to take a screenshot on an Android phone, a Google Nexus One in my case. I have to document it, because "home + power" like on an iPhone (or any iOS device) is far too complicated.
Warning: this post contain whole parts of ranting and sarcasm.
- Configure your phone to allow USB debugging.
- Install the Android SDK
- Connect the phone over USB
ddms from the Android SDK
- Select your phone.
Kaboom. It crashes.
01:42:04 E/ddms: Failed to execute runnable (java.lang.ArrayIndexOutOfBoundsException: -1)
org.eclipse.swt.SWTException: Failed to execute runnable (java.lang.ArrayIndexOutOfBoundsException: -1)
at org.eclipse.swt.SWT.error(Unknown Source)
at org.eclipse.swt.SWT.error(Unknown Source)
at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Unknown Source)
at org.eclipse.swt.widgets.Display.runAsyncMessages(Unknown Source)
at org.eclipse.swt.widgets.Display.readAndDispatch(Unknown Source)
Caused by: java.lang.ArrayIndexOutOfBoundsException: -1
at org.eclipse.swt.widgets.EventTable.sendEvent(Unknown Source)
at org.eclipse.swt.widgets.Widget.sendEvent(Unknown Source)
at org.eclipse.swt.widgets.Widget.sendEvent(Unknown Source)
at org.eclipse.swt.widgets.Widget.sendEvent(Unknown Source)
at org.eclipse.swt.widgets.Table.checkData(Unknown Source)
at org.eclipse.swt.widgets.Table.cellDataProc(Unknown Source)
at org.eclipse.swt.widgets.Display.cellDataProc(Unknown Source)
at org.eclipse.swt.internal.gtk.OS._gtk_list_store_append(Native Method)
at org.eclipse.swt.internal.gtk.OS.gtk_list_store_append(Unknown Source)
at org.eclipse.swt.widgets.Table.setItemCount(Unknown Source)
at org.eclipse.swt.widgets.RunnableLock.run(Unknown Source)
... 5 more
En voila. You still haven't taken a screenshot.
And for the record, I'm aware that Android 4.0 can do it, but Google still hasn't provided an update for the Nexus One (their first flagship device) and is unlikely to do it. That's not really encouraging into buying a newer device.
Update: upgraded to platforn tools version 11 and still the same problem.
(May 24, 2012 10:29 PM)
For the last few weeks my spare cycles have been mostly spent on the Guacamayo Project; this is something that myself and Ross have been toying with for a while, and it’s probably time to say a bit about it.
In a gist Guacamayo is a specialised Linux distribution for networked multimedia devices; I say specialised, because the aim is not to produce yet another rehashed desktop distro with a bit of multimedia functionality on the side, but a system built from ground up for a pure multimedia experience.
The clearly defined focus allows us to do one thing in particular: we can ditch the traditional Linux desktop! The Guacamayo aim is to provide an intuitive gateway into a multi media world; the traditional desktop metaphor made up of workspaces, applications, documents and no end of toolbars and menus does nothing but stand in the way. Considering most of us have to put up with that sort of mess during working hours, I think we deserve better when it’s time to chill out.
Ditching the traditional Linux desktop has some other inherent benefits; we can forget about legacy technologies, not least the venerable X11 windowing system, and instead choose what makes best sense for creating that sort of user experience we are after.
So what are we doing:
- Distro based on Yocto; this was an obvious choice. Guacamayo targets multiple hardware architectures, so a proven cross-compilation environment is a must, plus Yocto makes crafting a carefully defined distro from scratch if not an easy, then a practical possibility,
- UPnP integration provided by rygel,
- PulseAudio for the sound,
- GStreamer as the core medial framework,
- Shell based on OpenGL, provided by MediaExplorer, aka MEX. Like Yocto, this has been an obvious choice, since MEX provides a really cool, modern, intuitive interface.
Supported HW? We are not focusing on any HW in particular. Our aim is to create a distro that could be used on a broad variety of suitable HW. The current development is done using the Zotac zbox (Intel Atom) and the Beagleboard (Arm Cortex A8), and we fully intend to support Raspberry PI (eagerly awaiting HW).
We did our first release code named ‘See No Evil, Hear All You Want!’, aka 0.2, last week. As the name suggests, this is a limited functionality audio-only release, to get folk interested to come along and start testing and contributing. The next stable release is planed to include MEX running under X11, as a stepping stone toward a pure OpenGL system beyond that.
If you are interested, the source is here, you can drop by #guacamayo on Freenode, or follow @MetaGuacamayo on Twitter.
(May 18, 2012 02:48 AM)
Issues in building a community (and solutions)
- People with a common purpose or goal
- Communicating with each other
- Contributing to achieving the goal
- Like a big family
- It's the most important asset in an open source organization.
- Defining the goal(s)
- Not everyone has the same goals, need to define them as a community
- Each one's goal regarding the community should contribute to the community's common goal.
- How to bring people in (making it easier to get started contributing)
- Reducing the hassles involved
- AbiWord: Helping or mentoring the interested newbies to start contributing to a project.
- Apache Software Foundation: give people commit access early.
- It's version control, we can roll it back!
- Make the restrictions social rather than mechanical (e.g., give someone commit access, but encourage them to get the code reviewed before committing, commit only in their area, etc.)
- Use GitHub, SourceForge, or something similar to have branches and pull requests, which makes people able to commit on their branch and collaborate with the community. Also GitHub allows people to not have to learn git. [barrier reduction]
- Have a policy that someone cannot contribute a completely new module until they have been part of the dev community for a year first.
- One thought: maybe you don't need that many people
- Novice issue tags plus "office hours" in IRC - mentor new dev contributors in learning the contributing processes, with an easy issue for the newbie, so the starting barrier would be reduced.
- Have someone who is the "greeter" in the issue queue. If an issue waits for a given time (say 3 days) with no response, the current "greeter" at least says "Thanks". This duty rotates as people get tired of it.
- Break tasks up into manageable chunks
- Communications are a major challenge
- Some people are always on IRC (coders usually), some never on IRC (designers).
- Ban IRC for making decisions - has to happen on a mailing list (Apache Software Foundation and many other projects)
- To make a mailing list work as the discussion tool, people have to be told "bring it to the mailing list"
- Some people like asynchronous communication (e.g., mailing lists) rather than synchronous/real-time (irc), plus with a world-wide community, real-time meetings are not possible
- Mailing lists are good for archives, but are slow for actual discussions
- Get people together in person from time to time, if possible.
- People are not located geographically close to each other.
- IRC becomes active around the clock, if we have developers around the globe (AbiWord).
- Language difficulties - English is not everyone's first language.
- Localizers help on overcoming the language barriers to a project.
- Have to make it feasible for users to provide feedback/issues
- Depends on the type of project, whether that is difficult or hard
- User community is where new developers come from
- Figure out how to interact with them
- Derby rarely uses mailing lists - they rather use the issue tracker.
- Many users are more familiar with the mailing lists.
- So mailing lists help building the community healthy and friendly.
- How to attract new members to the community
- Marketing to attract users
- Go to the competitive events and meet potential users there (if appropriate for project's target audience).
- Get academics interested, then students will follow and they become part of the organization.
- Cooperate and collaborate with the other FOSS project communities - Common code segments to be used by multiple communities.
- How many contribute x number of patches
- Measure how well the new contributors are getting integrated as regular contributors
- Community health: are we adding new contributors
- Don't measure lines of code or number of patches - doesn't reflect community health
- Measure how many contributors are contributing to a project or sub-project as a measure of its health
- Apache foundation board will warn and/or ban projects that are not on-boarding new contributors and otherwise acting in a healthy way
- 90% of users do not communicate. 9% submit bugs and maybe a patch occasionally. 1% get really involved.
- You can double the 9% part by greeting and other contributor support strategies.
P.S: The "!!!111" at the end of the title ("Community Matters!!!111") was intentional, and I put that on the session proposal too, to give it a kid's touch, who desperately wants to contribute to the FOSS communities. ;)
- AbiWord community's blog roll - Planet AbiSource.
(May 18, 2012 02:47 AM)
Google Summer of Code Mentor Summit
Google invites the mentors for a two day unconference over a weekend to discuss about the Google Summer of Code, the respective projects, FOSS in general, or whatever that is applicable for the set of geeks. Google Summer of Code Mentor Summit is an interesting event hosted by Google and the sessions are scheduled by the attendees themselves. Google pays for the flight and the stay for the two nights (Friday the 21st and Saturday the 22nd of Oct/2011), providing dinner with style for the two nights. The mentor summits are held at the Google Headquarters
(Building 43), CA 94043, USA. The event schedule is completed only at the day of the summit, as an ideal unconference! [Have a look at the Mentor Summit 2011 schedule with the parallel unconference
tracks]. AbiWord at the Summit
As a mentoring organization, AbiWord has been mentoring students for Google Summer of Code since 2006 - for 6 years consecutively, since the program was announced in 2005. In 2006, Martin Sevior represented AbiWord in the mentor summit [Read more on his experience at the mentor summit 2006
]. I was, as a mentor from AbiWord for 2011
, was really glad to represent AbiWord in the summit for 2011. This was the second time, AbiWord being present at the summit. This year we had 4 students who successfully completed their summer, among the 5 who had their summer with AbiWord [Read more on my thoughts on Google Summer of Code 2011
Stay at California (21st - 24th, Oct 2011)
This year, the summit was held on 22nd of October the Saturday and 23rd the Sunday. "WildPalms" and "Domain" were the hotels organized by Google for the stay for the two nights. Most of the mentors stayed at WildPalms, Sunnyvale, CA, where some of them stayed at Domain, as rooms in WildPalms filled up. 2011 was the biggest summit ever with around 360 participants, where it was around 200 last year, mentioned Carol. Wild Palms is a silent and simple hotel. It reminded me the structure of the typical hostels - but I like it. We had shuttles to and from Google. We also had shuttles connecting Domain hotel, for them to join the dinner at Wild Palms.
Scheduling the unconference sessions
The sessions were scheduled and held at different rooms at the Google Headquarters, in parallel tracks. Initially, everyone was given 30 seconds to introduce themselves and their session, to begin with. Each session spans for an hour. A location was picked from the available 16 rooms. Once introduced their sessions, each one writes down the proposed session in a paper, and posts that on the white boards available, which had a table drawn with "Time Intervals" against the "Location". Once everyone introduced and posted their sessions, everyone is given the option to vote for their preferred session. The voting is interesting. We move along the white board, and pick a session of interest for each time frame, and mark it with a circle. Once this is done, the circles are counted and considered a '+1', and the sessions are relocated to fit the size of the room, according to the interested audience. Some sessions had exceptionally huge preference votes, and were scheduled to be held at Tunis, which has room for 200. Other rooms fit the audience from 10 to 20.
I [my user profile in the wiki
] proposed and coordinated the unconference session titled "Community matters", the Saturday 1.30 - 2.30 at "Algiers". We discussed how and why a community matters the most, how to build a community, the challenges faced, and overcoming them. The session notes can be found in the wiki
[Needs credentials to access the wiki page].
I have blogged with the session notes for the wider audience [Read "Community Matters!!!111" in this blog
]. However, Google Summer of Code mentors can access the wiki to read more about the Mentor Summit 2011
. All the session notes are posted to the wiki
. From Sri Lanka
It was a long journey to Sunnyvale from Colombo! I traveled from Colombo (CMB) to Dubai (DXB), and to Los Angeles (LAX), followed by a local flight to San Jose (SJC). A cab from San Jose to Wild Palms is relatively cheaper (~38$), than from San Francisco (SFO). SJC is known as the airport of the Silicon Valley. I stayed one more night (Sunday night), since my flight was on Monday noon 12 pm. This was my first trip to the new world (Americas). It was a great experience seeing darkness at 3 pm in the sky of the north pole.
The summit went really well, starting with a warm welcome from Carol Smith, at "Tunis". I got the chance to meet many folks from many organizations, and listen to their interesting and crazy experiences. Everyone had at least a single interesting experience to share, during the tea, breakfast, or lunch. 2011 was the first year for many organizations (~50) in Google Summer of Code, and (the mentors from those organizations whom I had a chat) were impressed to hear the successful involvement of AbiWord in Google Summer of Code. I met Fridrich representing LibreOffice at the summit. It was really great to meet someone whom I have talked to, over the AbiWord IRC.
Meeting the Haiku
community was remarkable. Haiku is an MIT licensed open source operating system inspired by BeOS. We thought of a possibility to propose a project co-mentored by AbiWord and Haiku for Google Summer of Code 2012 - "Haiku port for AbiWord". There was also a discussion on this during GSoC 2009
too, which we couldn't make it at that time. Scott from Haiku also pointed out that AbiWord used to run perfectly on Haiku during the early days (well before I joined AbiWord at 2009). We have to go back to the history of AbiWord source code and get it back to build and run, which ceased to build. As we are more into gtk, we have never looked much into this yet, I feel. The relevant discussion
can be found at abiword-dev mailing list. Refer to the Haiku FAQ
to learn what Haiku is and what it is not.Catroid
All the 4 mentors from the project Catroid
were present at the summit. They were doing interesting demos with their Catroid project running on Android, over the corridors during the breaks. It was their first year at Google Summer of Code and Catroid is really excited as a young organization to participate in Google Summer of Code. By default, Google invites two mentors from each project, along with a waiting list to allow more interested mentors in first-come-first-served. Catroid was really lucky to have everyone around! :) Marketing and Open Source
An interesting session on "Marketing and Spreading the word about the project/community", followed the session "Community Matters", in the same room (Algiers). How localizers help to widen the user community was discussed. The mentor from PostgreSQL
mentioned that they have allowed independent local user/dev communities to own the site in their languages (French
, ..) Social media engagement (twitter, facebook, dzone) to spread the word of the community and project releases were discussed.
The other two sessions I attended on the first day were on "Humanitarian FOSS", with the participation from OpenMRS, Sahana, and Ushahidi, and "Student Salaries". "Student Salaries" discussed about managing the GSoC's payment. It had a few controversial suggestions followed by a healthy discussion, whether each student should be paid equally, or based on their geographical location, or by the outcomes - a final outcome of the discussion was to propose a reward for the outstanding students - may be a GSoC Student Summit.
We took a group photo with all the mentors around, at the end of the first day. We also move around the Google Campus and also visited the Google Store. A room full of chocolates from Goolge, as well as from the mentors allover the globe was awaiting us throughout the summit! ;). The welcome desk was full of Google TShirts and give aways from Google and from the mentoring organizations - specifically stickers from the organizations. I took a few photos around the Google Campus. Feel free to view them in my Facebook album
The Second Day
I attended the sessions at Tunis, the second day. "Non-profit infrastructure for software freedom
" with the views from Software Freedom Conservancy, Free Software Foundation
, and Apache Software Foundation
, gave some insights in the non-profit infrastructures. "Fund raising 101" by Cat from Google provided some basic hints on successfully getting the open source project funded.Wrapping Up!
A final speech from Carol ended the summit in a vote of thanks manner. Wait - No! Mentors were asked to provide their suggestions of improvement after her talk. Some encouraging, interesting and also funny comments were thrown, with room full of laughter and applauses. One interesting and usual suggestion was to have the summit at Europe next year. "I love you guys, but, sometimes, I hate you guys," replied Carol.
The Google Summer of Code Mentor Summit was surely a remarkable experience for everyone who attended. I would like to thank Google and Carol for organizing the Google Summer of Code as well as the summit, on behalf of the AbiWord team.
(May 06, 2012 01:50 PM)
"Verbatim" and "Reading Level" are two new cool search tools from Google. Verbatim
lets us search the exact term as it is, eliminating the spelling corrections, and all the smart features of Google.
"Reading Level" categorizes the search results according to the level of expertise needed in reading the page. Simple and easy-to-comprehend pages are categorized as "Basic", where the advanced and high-standard pages are categorized "Advanced". "Intermediate" stays in between. Highly technical or articles with complex language structures are often categorized as "Advanced".
Similarly, searched a few projects that I am interested in.
It is pretty reasonable to have the highly complex and technically advanced OGSA-DAI to have more pages classified as "Advanced" and only a tiny bit classified as "Basic". However, AbiWord, the word processor has more contennt classified as "Intermediate". This again is reasonable for an end-reason software product. Google Reading Level is surely an interesting feature.
(May 01, 2012 04:57 PM)
If the presentation below takes a long time to load, feel free to download
(April 26, 2012 03:12 AM)
Being a mentor for the Google Summer of Code with AbiWord for the second time is going to be an interesting experience once more. It was a nice memory going through all the 29 proposals for AbiWord and reviewing them as a mentor. Selected students
were announced by Google on 1900UTC, 23rd of April.
The list of accepted students, along with their project proposals as well as their mentors are given below.
1) Tanya Guza - "Improve ODF support" - Mentored by Hub
2) Kousik Kumar - "Table Improvements" - Mentored by Simon
3) Aaditya - "Implement Rotated Text" - Mentored by Martin
4) Vincent (Zuyin Kang) - "Dialog improvements
" - Mentored by Pradeeban
5) Bafna - "Implement and Improve the import and export of math from/to odt, doc & docx formats" - Mentored by Jean
6) Serhatkiyak - "Improving Abiword's OpenXML(.docx) support" - Mentored by Dom
An interesting point to notice is that, since 2006, AbiWord has successfully been participated in all the Google Summer of Codes (2006, 2007, 2008, 2009, 2010, 2011
, and 2012). Hence this becomes the 7th consecutive year for AbiWord to participate in Google Summer of Code! I wish the 6 students who got selected a great summer of code with AbiWord, and I hope they will continue to be a long term contributors even after their summer. At the same time, I should also note that, we had to miss a few nice students as we have only 6 slots. Hope they will still continue with their development on AbiWord.
(April 23, 2012 11:05 PM)
Google announced today the accepted students for Google Summer of Code 2011.
The students working on LibreOffice will be:
|Andrzej Hunt||Smartphone remote control for LibreOffice Impress||Muthu Subramanian|
|ArturoPL||Tooling - More and better tests ||Michael Stahl|
|Brennan Vincent||Implementing a Microsoft Publisher import filter for LibreOffice||Valek Filippov|
|Daniel Bankston||Calc Performance Improvements||Kohei Yoshida|
|Daniel Korostil||Lightproof improvements||László Németh|
|Gökcen Eraslan||Signed PDF export||Stephan Bergmann|
|iainb||Java GUI for Libre-Office Based Android App(s)||Tor Lillqvist|
|Marco Cecchetti||Enhanced Impress svg export filter||Thorsten Behrens|
|Matúš Kukan||Telepathy for collaboration||Eike Rathke (erAck)|
|Rafael||New templates picking UI||Cédric Bosdonnat|
Let the summer start immediately and let quality code fall like a spring rain!
(April 09, 2012 10:41 PM)
This morning we learned that Facebook bought Instagram, and that Facebook paid something like 1B$. I'll skip the part where I find that this acquisition is highly overpriced, and I'll leave the speculation of who might have participated into a bidding to the analyst.
But one thing I'm sure is that they didn't buy Instagram for its revenue. What is being said is that Facebook paid 33$ per user, and quite a number of users. But what will they do with that? Simple. Monetize. And this might by the solution to my criticism of Instagram: adding a web frontend to it. A web frontend is IMHO the easiest way for Facebook to track their users. In the announcement Facebook promised to keep Instagram a separate entity, but even the owe anybody but themselves to hold that promise, they can do that and track users using a web based frontend, like all the "Like" buttons to all over the Internet. Similarly I don't see why they should remove the function to Tweet the picture. Quite the opposite, keep it, people click to view the picture, "leave" Twitter to go to that Instagram page, and voila. Checked in.
In the end, it will be a bit more like the Hotel California: you can check out anytime, but you can never leave.
If you don't like that, you can still go and request your account to be removed.
Mandatory Instagram. Deep Cove, BC.
(April 06, 2012 04:24 AM)
Instagram just released the Android version of their application. Instagram allows you to take pictures with your phone, apply some filters, upload it to their service and then have user that follow you comment or favorite them. A sort of Twitter for images.
This led me to rethink why I dislike Instagram.
I dislike Instagram not because of the photographic aspect of applying random filter to random pictures to try to let them look cool, not because it is (was) an exclusive club for iOS users, users that are self entitled and angry as there are also plenty of talented people whose work I have a lot of respect for. No, it is not about that ; well it could be but that would be a very opiniated rant that would make me look like a hater. It is about the technical aspect: it is not the web.
If I go to the main website of Instagram, I get offered to download the app for iPhone, for Android, and beside info about them, their blog, their jobs, all I can do is edit my account. Yes you got that: it is about taking and posting picture, and from there I can't even view anything. WAT?
Now when people share their Instagram picture on twitter, you get a link like this http://instagr.am/p/JAqNexzGZr/. At that URL, you can see the picture, the comments if any, and that's it. You can not decide to start following the person even if you have an account nor can you browse through the other pictures. And to get that URL I had to "share" the image view e-mail or Twitter. There was no other way to get it.
That's exactly where my issue is. One has to use the app on your phone (previously only iPhone - even though it worked with other iOS devices including iPad) to view the pictures and the people. It is not a web application, it is Instagram. Imagine if Facebook or Twitter was like that? It is not like technology is missing. All the browsing and social features can be done as a web application, and modern browser today would allow even the editing part of the picture, and soon the taking a picture part.
And, yes I have an Instagram account, yes I have posted a few pictures from my iPad and from my Nexus One, one having a better camera than the other. Suddenly I got a surge in follower with the Android version released. But what if I wanted to use it from b2g? Even Flickr I can.
(April 03, 2012 02:55 PM)
I just realized that has been a long long time since I last blogged about
libcdr and the CorelDraw import filter in LibreOffice. Those that know me well can imagine that it is much more fun to write code then to write blogs. Nonetheless, one serious breakthrough happened this weekend and I cannot prevent myself from climbing on the roofs and shout.
On 20th of March 2012, Corel released a new version of CorelDraw Graphics Suite X6. We got the information from this Wikipedia page and downloaded the evaluation version on Friday. Although it was usual to see the file-format mutate a bit with every released version, this release changed the file-format substantially in what concerns the RIFF chunks. To cut the long story short, we managed to get the last pieces reverse-engineered today and we released libcdr-0.0.6 with support of all 32-bit CorelDraw formats, from version 6 to 16.
The new release tarball was integrated in LibreOffice which became the first and only FOSS application that supports versions 6, 15 and 16 of the CorelDraw file-format. This goodness will be part of our 3.6 release later this year. For those that do not know fear, the feature can be tested in daily builds that will start to appear tomorrow morning here.
I know that the distinguished readership prefers pictures to words. Here is this simple document in CorelDraw X6 format:
Here is the same document opened by LibreOffice Draw:
And here is the
libcdr-generated SVG opened in Inkscape:
If you are tempted and think that it might be fun to participate in a reverse-engineering endavour, we have with Valek two project proposals for Google Summer of Code 2012. The first is the implementation of MS Publisher import filter for LibreOffice and the second is to help to improve and extend the Corel Draw import filter I am currently blogging about. Try to apply with LibreOffice and your life will never be the same again.
Be aware though that the application deadline is the 6th of April and you will need to accomplish a simple programing task in order to be eligible. More details in this blog.
(March 29, 2012 11:49 PM)
See part 1 if you haven't.
As of this week, some changes in b2g cause more breakage in the build process on Fedora. Plus some various bugs.
First, if when doing the
make config-galaxy-s2 you get the following error:
cp: cannot create regular file `../../../vendor/samsung/c1-common/proprietary/etc/mdnie_tune_bypass_mode': No such file or directory
in the B2G directory, do a
and try again.
make gonk will want to run a pre-build xulrunner in 32-bits
Ideally, the fix would be to actually get a 64-bits xulrunner instead. Patches welcome™ I was told. On your copious-spare-time™.
(March 24, 2012 06:28 PM)
My GSoC presentation (given above), which went for 80 mins, was themed "The Second Life." We were informed the list of the selected organizations at 12.30 a.m (IST) today, and we had the session at 09.00 a.m. This gave an additional motivation to the students. Not forgetting to update, AbiWord has been selected as a mentoring organization this year as well. I hope to mentor for AbiWord once more.
In a slow network, it may take ages to properly load and display the presentation above. Feel free to download the presentation
, in that case.
(March 19, 2012 02:32 PM)
So, just before the weekend, we received the great news that Google chose LibreOffice as a mentoring organisation for Google Summer of Code again this year. Some of you might remember that last year we had several extremely successful Google Summer of Code projects and that two of our successful students are currently employed working on free and opensource software as a direct consequence of their participation in the program. I had a priviledge to mentor Eilidh McAdam and we implemented a Visio import filter that is one of the flagship features of LibreOffice 3.5. Eilidh is now employed by Lanedo.
This year, we proposed with Valek Filippov two projects related to reverse-engineered file-formats. The first is the implementation of MS Publisher import filter for LibreOffice and the second is to help to improve and extend the Corel Draw import filter that will be part of LibreOffice 3.6 release. Both projects require working knowledge of C++ and a lot of good will. Each of the import filters consists of a standalone library and a glue that plugs the library into LibreOffice. These libraries can be built as system libraries and LibreOffice can use them from the system. The advantage of this approach for a student participating at the development is that there is only a minimum need of recompiling LibreOffice if some substantial part of the glue (that is rather small) changes. Therefore, I encourage all of you who are considering applying with LibreOffice for this year's Google Summer of Code to have a close look at those two projects. As a bonus is that if you are successful, you become famous and eventually rich.
You can have a look at
libcdr, the horsepower behind the Corel Draw import filter and at the skeleton of
libmspub, that will be the basis of the Publisher import filter. And don't hesitate to become rich and famous with Google Summer of Code at LibreOffice
(March 17, 2012 07:05 PM)
Month of March is so special to me. I was introduced to two great open source projects in March, 2009 (AbiWord
) and 2010 (OGSA-DAI
Not everyone gets a chance to live........ a second life!
Now, the beauty of open source projects come into play that it gives you a chance to work on something that you are really interested in, in your own way. But not many of us get time to dedicate to an open source project due to our other commitments and as we are busy with our regular work, study, and related activities. The Google Summer of Code (GSoC) gives the best of both the worlds.
GSoC is an annual program from Google for the university students of age 18 and more. You will be coding for your preferred open source organization for 3 months. Google coordinates and awards the successful participants. Though open source organizations are run mostly by volunteer developers, Google pays the students with 5000 USD along with a certificate, an awesome t-shirt, and gifts! Hence you can focus entirely on the program during the 3 months time.
- Getting Accepted (500 USD)
- Mid-Evaluations (2250 USD)
- Final Evaluations (2250 USD)
Some statistics of 2011
- 175 Organizations
- 2096 mentors and co-mentors.
- 3,731 students, from 97 countries.
- 5,651 proposals.
- 1115 students/projects
- 68 countries.
- 595 universities.
The success rate is pretty high!
Last year, more than 90% of the students passed the mid evaluations, where around 88% passed the final evaluations. The high success rate is because, the mentors and the organization are with the student to provide him assistance and guidance, whenever is needed.
The passion towards open source and the desire to be an outstanding student are considered to be the major reasons for a student to participate in the Google Summer of Code. Not to mention, while earning the money for the summer.
A computer with the Internet connection, knowledge and experience in the domain, and the motivation are the required to participate. Of course, you should really be interested in contributing to the particular open source organization.
Don't forget to check the
Before you begin..
- Google Summer of Code is all about being Open Source.
- Get your basics and motives right.
- Sign up to the lists.
- Join the relevant channel(s).
Communicating with the team.... and the mentor, over the Internet..
- Version Control Systems
- SVN, CVS, GIT, Mercurial, ..
- Build Tools
- IDEs (Integrated Development Environments)
- IntelliJ IDEA, Eclipse, ..
- Microsoft Visual Studio, Anjuta, ..
- Issue Tracker
- Mailing Lists
- Dev, User, Commit lists, sub-groups, ..
- Internet Relay Chat (IRC)
- Issue Tracker
- Forums and wiki
- Skype, Personal Mails, gtalk, conference calls, .. [with the mentors, if that is preferred.]
Proper Addressing..over the lists/irc/..
- Be Specific and clear.
- Research (google.. ;)) before asking.
- Be helpful to others.
- Be ethical; respect.
- NO CAPS! (UNLESS YOU ARE SHOUTING!)
- Don't take messages personally.
- Dn't snd ur sms msgs to thrds or lsts.
- Address the devs and users properly.
- First Name or Preferred calling name.
- NO Sir, Madam, bro, sis, pal..
- Even if you know them, personally.
- No Mr., Dr., or Prof. either.
- Be gender neutral.
- “Folks” over “Guys and Girls”.
- Not too personal.
- Use “Hi”, instead of “Dear”.
- Post only to the relevant list.
- Check the mail archives first.
- To avoid getting RTFW/RTFM responses.
- Avoid HTML mails.
- Most of the mail servers do not like it. For eg, all the html mails posted to abiword mailing lists are dropped by the mail server. Make sure to turn off the html or rich text mail feature in your email program. It is by default HTML/RTF mail in the web mail like Gmail/Yahoo. Make them send plain text email.
- No [URGENT]/[IMPORTANT] tags.
- No unnecessary attachments.
- No Cross Posting.
- Stick to the proper mailing list only.
- Don't hijack threads.
- Don't post off-topic.
Find a mentoring organization..
- Be an observer first.
- Refer to others using their irc nick.
- Whenever my irc nick is mentioned, I get a pop up message from my irc client such as pidgin.
- Don't expect immediate replies; wait.
- Don't post bulk of text into irc.
- Avoid these common mistakes.
Find THE right project..
- Have a look at the list of GSoC2011.
- Since the list of this year hasn't been selected yet.
- 175 Last year!
- New Organizations.
- Google as the mentoring organization.
- Introduce GSoC to an organization (Sounds Smart!).
You can even contribute to the organizations, that aren't selected this year, as most of them still welcome the student contributors. OGSA-DAI
had some great project ideas, but wasn't accepted this year as a mentoring organization.
These were the organizations that I had my summer with. The beauty of these organizations is, they are friendly and provide a great learning environment. I was able to become a committer, developer, and mentor for these organizations. I learned open source with these organizations, and they have influenced me a lot positively. Apart from the coding, we always share thoughts and literally the AbiWord and OGSA-DAI communities have given me a colorful second life, which I would love to maintain as a developer, whenever I get a free time from the "first life".Get to know more about the projects
What makes you special?
- Talk to the mentor(s) Assigned by the organization for each project idea.
- Mailing lists and archives.
- Issue Tracker
- Open issues or tickets
- New features/enhancements (RFE)
- Bugs (easy/difficult and normal/critical)
- Being a great user doesn't mean that you can be a good developer.
- Your interests and motivation
- Pick something you really enjoy doing.
- Being a great developer doesn't mean that you can be a good contributor.
- What makes you the right person?
- Willingness to contribute to the community beyond the time frame of GSoC.
- We want committers and long time volunteers - Not just students!
- Java, C++, C, ..
- Not much time to learn a new language (?)
- Prove It!
- Assist other students!!!
- Project expertise
- Bug reports and fixes.
- Go through the archives, wikis, and web sites.
- Project that matches your previous work experience.
- Choose the right project.
- Timezone Difference
- Use it effectively - Most of us prefer to work in nights too, as we have the lectures in the mornings.
- Multiple Applications (20!)
- Communicate early and often.
- Be heard, visible, responsive, and quick!
- Ask questions, and more importantly answer others' questions.
as a student for GSoC
, as the first step. Use the project's wiki for draft proposal, if applicable. Some organizations prefer that, where some discourage it.
How to impress the mentors/developers?
Apply on Google's melange
, at the earliest possible, as you can edit it later, till the last minute. Make sure to get the mentors' opinions and improve. Check melange often for the mentors' comments and attend to them. Make sure that you subscribe to the comments on your proposal in the melange site, such that you will receive email alerts for each comment that is made by a mentor/developer on your proposal. Your proposal can only be seen by the orgnization mentors, unless you decide to make it public.
After the submission..
- Stick to the organization's template.
- Introduce yourself properly.
- Focus on the relevant facts.
- Why do you fit? Your skill sets.
- List of the patches (if any) you have submitted.
- Project Goals
- Proves you got them correct.
- Code, Documentation, test cases, ..
- Description - can also be given along with the timeline
- Benefits to the organization and other projects
- Finer details - Break upto periods of 3 - 4 days.
- Testing takes time - Don't be over-optimistic.
- Some organizations require considerable work hrs/week (40 ?).
- Links - References and additional details.
Got Selected? Community Bonding Period!!!
- Don't go invisible!
- Evaluation is still going on.. ;)
- You may be asked to provide additional information.
- Start coding on your project - only if you didn't apply for multiple projects.
- Be motivated.
Don't Panic. You have one more month, just to mingle with the developers and the code base. Mentors are there to help you! Keep touch with the developers and users. Learn the project by going through the code base and documentation such as coding styles and coding guide lines. e.g: OGSA-DAI coding guidelines
. This will help you understand the project idea more. Come up with a design and start with simple hacks.
Finally comes the coding - the easiest task of all. Commit often, if you are given committership. In AbiWord GSoC projects are usually given a branch in the public svn, which will be merged to the trunk, upon the successful completion of the project. In OGSA-DAI, based on the project, it is either committed to the trunk directly or given a branch. These two projects give committership to the students. However, some organizations/projects do not give committer access to the students. In such cases send daily patches otherwise.
When committing or sending the patches, make sure to include meaningful Commit messages. Get feedback from the mentor(s) on your commits or patches frequently. Keep the community updated. Committing or sending patches daily would be a good approach.
Plan for the mid and final evaluations early, with the mentor. This will help you reach the target successfully. You might also need to revisit the project goals if required, during the milestones.
Pencils Down Date - to stop the coding. Still you can refactor and improve the code, fix any last minute bugs, and work on finalizing the documentation. This is follwed by the firm pencils down date, which literally finishes the Google Summer of Code.
Whatever coding or related job done on your project after the firm pencils down date will not be considered part of your summer of code, and will be considered a volunteer work on the project. Get a tarball of all the diff files to submit to Google. Successful submission of the tarball along with the successful final evaluation ensure your success in the Google Summer of Code.
Focus on becoming a committer if not already given committership. Keep contributing to your project.
A few links
This blog post has gone a bit longer, since I tried to include all the information in a single post. Wish you all the best.
(March 17, 2012 07:53 AM)
We are having a series of GSoC awareness sessions, including the yesterday's session we had at the University of Peradeniya
, and the upcoming session at the University of Jaffna
on the 7th of January, 2012. These events focus on discussing GSoC and FOSS. Attached herewith is the latest version of the presentation I prepared to introduce GSoC 2012 to the students. Feel free to download
and distribute, if the slow network prevents you viewing the presentation here.
As a mentor from the AbiWord community, I have come up with the slides based on our experience with the Google Summer of Code. This presentation is also influenced by my experience as a three time Google Summer of Code participant, with AbiWord (2011 as a mentor and 2009 as a student) and OMII-UK (2010 as a student). Special thanks to Martin Sevior
and the AbiWord
community for their valuable input at several times, in shaping this presentation up.
Make sure to have a look at the Google Summer of Code 2012 project ideas from AbiWord.
The presentations in this blog require Shockwave Flash Plugin to display correctly. If you couldn't see it correctly, make sure you have the required plugin enabled. Feel free to drop a comment should you require further information.
(March 14, 2012 12:39 AM)
Yesterday we had an awareness session for Google Summer of Code (GSoC) at the Engineering Faculty of the University of Peradeniya
. This event focussed on discussing GSoC and FOSS. It is an interesting fact that we have visited the University of Peradeniya, after exactly 11 months, for the very same event - Google Summer of Code awareness session. Our previous session
was held at the science faculty, on 17th of Jan, 2011.
Attached herewith is my presentation, introducing GSoC 2012 to the students. This slides are based on my experience as a three time Google Summer of Code participant, with AbiWord (2011 as a mentor and 2009 as a student) and OMII-UK (2010 as a student).
In slow network connections, the presentation might take a bit longer to load. In that case, please feel free to download the presentation
for your future reference.Update: Pls find the latest revised version of this presentation at
(March 13, 2012 04:40 PM)
Yesterday I tried and successfully built b2g on Fedora 16 x86_64, targeting the emulator. These are my notes on how to do it as the instructions to setup the build environment are very Ubuntu centric.
The prebuilt binaries expect to be on a 32-bits system. So we are gonna need to install 32-bits packages. Also there is a requirement to have
adb to boostrap (it is built afterwards). Fortunately you can skip installing the SDK for the bootstrap and use the Fedora package
android-tools that provides
The packages you need, that will also pull the proper dependencies are:
To run qemu:
You also need the usual requirements to build Firefox as well as
git. Install these using yum.
Then follow the build instructions to build on QEMU.
(dont forget part 2)
(March 12, 2012 08:14 AM)
What is it with airline (and governments) making air travel inconvenient? I don't travel much compared to some other people I know (never got elite status on any airline, and barely got enough miles to get a cheap flight to France), and I never encountered serious issues when flying. But still.
Over the last few years a new extortion scheme has appeared: luggage check-in fees. Yes you read it: the airline have decided to charge you a fee to check luggage in. What I don't get is why do they charge you for the inconvenience, which benefit them as with less luggage in cabin they have a more streamlined boarding and de-boarding. That I don't get it. This was started with US based airlines to supposedly compensate for their loss of revenue (it got worse after that), and because Air Canada innovates in air travel, they followed suit. Also the policy being inconsistent, code sharing and other stuff make things even more confusing.
Now I plan cabin luggage only. Not always easy, but utterly more convenient and there is no risk to get the suitcase lost (hello Air Canada) or damaged (hello Air France). I end up being able to bring more gear and inconvenience the airlines even more. I get to learn to pack light.
Food and beverage
Not only you now get charged for food in North America on flights (including long one) but airports are inconvenient to bring your own food or get food (not even asking quality at that point). Case in point, my flight to Toronto from Vancouver left from gate C51 in Vancouver. There, there is no food. You have to walk through the whole terminal to get something. And I have seen other instance of that in other airports. Not mentioning the security theater that decided that carrying a bottle of water was dangerous.
Simple put I always go through the metal detector in the same "uniform". And 33% of the time (whichever airport, it is not even dependent on the checkpoint) I get to have the machine beep because of my belt. They probably don't get to recalibrate the machines often which does not inspire confidence in them operating the X-Ray body scanner.
Nickel and diming
If you are tall like me, you have to suck it up or pay. No more emergency exit row, front row and so on. Yep, they charge you for legroom: Air Canada used to be nice with that and Air France being dicks. Now they are just equal opportunities. I'm sure airlines would charge extra for accessibility if they legally could, like they have try to do for overweight people.
The only thing I get is Air Canada charging 3$ for the headphones. Bring your own, that's fair, as they are standard.
(March 09, 2012 07:18 AM)
Last week I was in sunny San Diego, CA at the 27th CSUN accessibility conference, part of the Mozilla delegation along with Eitan and Marco. So was a very enlightening event. I'm quite new to accessibility technology and what I saw is an even greater reliance on technologies, for the good and the better.
Beside the usual important work on web accessibility, there was also in multiple occasions discussions about repurposing tools for accessibility need. One concrete example is Google Goggles. This app for Android always seemed to me to be a gadget, but in fact it has proven to be a pretty convenient tools for things like reading bank notes (the US dollar notes don't have braille, unlike the Canadian one). Or face detection in a cell phone camera to take a picture: the framing guided by voice.
Another use was Google own Google+ hangout. Google hangout is for live conversation using sign language. There is in fact a lot of work done to make the video fluid and good enough for that. Video fluidity was also an argument presented by the Apple marketing manager when talking about iOS and FaceTime. Some fantastic stuff.
Android accessibility is a different story. It seems that there is a large difference between 2.3 and 4.0 in term of support, where 4.0 (Ice Cream Sandwich) is going way further. One of the major change is that now accessibility is required for the Android Google Marketplace lock-in. No more stripped down like it was on the Asus Transformer running 3.2. It is unclear however if the skinning that Samsung Touchwiz or HTC Sense UI will be required to be accessible: as it is now, HTC Sense UI actually is forcing to root the phone and have Cyanogen Mod installed in order to be accessible. Also I had a chance to see Eitan's work in Firefox for Android accessibility.
Things I saw: a demo of Windows 8 on a tablet with IE 10. They have accessibility built into with touch discovery and gesture, and video subtitle and captions. I also happen to have tried for the first time a Windows Phone 7 phone and saw a second one on the plane (bound to SEA). iOS devices seems to dominate and the reason is that their approach to accessibility from the ground up is probably the best on the market for non market-specific devices. And they also support bluetooth Braille readers.
It was good to meet with everybody, Ryan, Jenisson, Laura, Kevin, Sina, Victor, Carol, Matt, Richard, Matt, Eitan, Marco, Rainer, Steven, Henny, Denis, Sylvain, Arnaud, TV, Naomi, James, Alice and the rest of the Google team, and many other fantastic people I possibly forget.
I felt so much energy in that conference. So many good things happening. So many to come.
(February 26, 2012 04:55 PM)
In short, I now have a Nokia n9, and setup a scratchbox for it, and compiled & installed abiword, clawmotia, unison, and libferris for and on the device. If that didn't enlarge your page down key, the longer version now follows ;-)
FWIW my impression of the device is very positive. Hardware wise the biggest issue I have is the inability to add more storage to it. A high gb microsd slotted in would make things a whole bunch nicer, mainly for using the device as a music box on the road. The speed of interaction is very nice, and the swipe interface is very easy to get used to. Just flick an app away to minimize it or flick from another screen edge to close it.
gstreamer works quite nicely for viewing network streams, though there is a deadzone bar on the logical "bottom" of the screen (left of screen in portrait mode). I noticed this bar in abiword too, so I assume it is an issue with going fullscreen for non Qt native apps.
There isn't much to show for unison, as I tend to drive that from the dekstop/laptop end of the connection. Getting it on the device is always a matter for first compiling ocaml and installing that into the scratchbox.
One very pleasant surprise is how snappy clawmotia runs on the n9. Startup time is significantly less than on the n900 and the screen operations like swiping the main controls left to get to the jog shuttle page is now at an acceptably smooth speed. I'll have to work up a video of this in action to show the speed of things...
I got libferris compiled for the n9 too. Using boost::spirit for some of the parsers has dropped one compile time dependency away. I did make both ferris and ferriscreate able to compile in glib2 only mode. You loose one or two apps by doing this, but it also makes the footprint smaller so that I can use it with QML apps without needing to pull in gtk2 from a third party repo just for those apps in ferris itself. Mainly some capplets, gfcreate, and the gfcp and other graphical coreutils reimplementations are lost in building this way.
And what is not complete without a screenshot of things on the device? Sorry for the quality of the picture, I need to work out lighting for some device shots a bit better than this adhoc quick shot. Just to tap into the ferris power a tiny bit I decided to mount an XML file as a filesystem and fcat directly into it.. A few of the fun things I plan are a QML client for index/search using the customized maemo index backend in libferris and using the mounted pulseaudio and mounted gstreamer to implement yet another audio player for the device. The index+search in both these apps should be blisteringly fast, given that I could index an NFS mount with 10x the data I could hold on an n810 and search as you type in real time...
Abiword proved to be the harder thing to compile for the n9. It seems GTK2/3 has fallen off the device so I got gtk2 from a third party repository. The downside is that the app doesn't run entirely fullscreen and has pretty much no finger friendlyness from gtk2 itself. Oh yeah, the virtual keyboard doesn't come up on text entries in gtk2 either. I might be compiling and installing gtk2 incorrectly on the device, so this complaint about device interaction might be my own fault?
I then got libwv and libwmf, following the dependency rabbit down the white hole. Of course my abiword compile has full ODF support in it too! The below screenshot is of one of my sample ODF+RDF documents with the content that links to RDF shown in purple. For more info on RDF in abiword see the abiword talk video from lca 2012
More fun an games to follow, and I'll post a link to a repo with the debs once I work out where I'm going to host the 100mb odd of files. Not all those are for the device, some are mainly for scratchbox such as the dev packages and full ocaml compiler debs.
(February 09, 2012 04:11 PM)
FOSDEM 2012 is just round the corner and, as you might know, LibreOffice will have a DevRoom this year too. And, as it was already publicized, your servant and Eilidh McAdam of libvisio fame will attend too. The goal of this event will be to help you to become a LibreOffice developer, by helping you to get your first contact with the code from inside.
How to prepare for the event?
In order to give as many community members the possibility to speak, the presentations will not take more then 15 minutes each. But we will be there for one-to-one contacts and hacking goodness. If you are interested in contributing to our new Visio import filter, or the upcomming Corel Draw and MS Publisher filters, here is what you can do:
- Find a bug that is bothering you in the current Visio import filter, or some simple feature that the importer currently does not support
- Check out the following libraries:
- master branch of libwpd (
git clone git://libwpd.git.sourceforge.net/gitroot/libwpd/libwpd)
- STABLE-0-2-0 branch of libwpg (
git clone -b STABLE-0-2-0 git://libwpg.git.sourceforge.net/gitroot/libwpg/libwpg)
- master branch of libwps (
git clone git://libwps.git.sourceforge.net/gitroot/libwps/libwps)
- master branch of libvisio (
git clone git://anongit.freedesktop.org/libreoffice/contrib/libvisio), and
- master branch of libcdr (
git clone git://anongit.freedesktop.org/libreoffice/libcdr)
- Build them as system libraries and install them in the same order.
- Then build LibreOffice according to these instructions. The important thing is to use those system libraries that you just built. To do so, be sure you added to the configure flags
With this kind of build, you will be ready to make the most from your Brussels weekend. Nevetheless, you can drop around at our IRC channel
#libreoffice-dev channel at
irc.freenode.net for more information and ideas.
Starting to do it instead of planning to do it ...
... is the best way to enter the FOSS development. That is why your servant and Eilidh will be around to hold your hand with debugging and finding way to implement your favourite features. We will answer your questions about the library design. We will point you to the place in the code where your bug might linger. And for more complicated stuff, we will debug it with you.
Don't expect us to give you a fish, but we will certainly teach you how to catch it by yourself. And in the same token, you will become a contributor inside a community of smart people that is fun to hang and hack with.
See you in Brussels the 4th and 5th of February 2012.
(February 04, 2012 05:19 AM)
A while back, Jaisen Mathai decided to start OpenPhoto, a project dedicated to provide a Free Software hosting solution for photos, to liberate the users from the claws of hosting services like Flickr, Picasa, etc.
This is an idea I have been mulling for a long time, so much that I even started on my own, but it didn't go very far. So when I found out about OpenPhoto, my curiosity got picked. It seemed to fullfill the same goals so I decided instead to look at it.
My first task was to get it to run. The catch is that from the start it was designed to run off Amazon Web Service and their SimpleDB. Not something I wanted. So I started writing the needed code to support MySQL and local filesystem to store the photos. And that's how it started. Then I implemented support for importing metadata from the pictures, automatically, something that I have seen missing in several of the competing services.
The OpenPhoto project is part of WebFWD, Mozilla's Open Innovation program. And it was one of the first project to make use of Mozilla's excellent BrowserID.
The source code is available on github. Feel free to download it, install it, tinker with it. Pull requests are more than welcome. If you don't feel like installing it, you can still go to openphoto.me for the hosted version.
And since I like "dogfooding", I'm running my own instance.
(February 01, 2012 06:19 AM)
tl;dr we need a Gnome computer.
This is not about choice, it is about freedom.
A hardware platform that would be libre, that would run a libre OS, based on Gnome, Linux and GNU.
A hardware platform whose software stack would be vertically integrated for a maximum user experience: working out of the box, as advertised.
And for those who think it is about choice, think again. Choice is dealing with a bazillion different hardware configuration, drivers, etc. Dealing with more poorly written drivers (usually from hardware vendors) or proprietary (hello GPU driver) or even buggy firmware.
Next will come the portable devices: tablet, phones, etc.
(January 31, 2012 04:03 PM)
You might still remember some of my blogs about our new and shiny MS Visio import filter in the upcoming LibreOffice 3.5.0.
But what about 3.6.0? Is it going to be an exciting version too? Well, the answer depends on what kind of things excite you generally, but for sure, there will be a lot of goodness as usual to make the best free office suite even better.
In my free time, I have been working for some time already on the next graphics import filter for LibreOffice. This time it will be a CorelDraw import filter. The horse-power is a library,
libcdr. In the same way as
libcdr reuses the API of
libwpg and thus is easily pluggable into LibreOffice reusing all the ODG generator classes of the current
writerperfect module. The importer is currently part of the git master tree.
You might be already shouting: "Where are the screenshots?" I know that a picture speaks louder then hundred words, and so here you are served:
Simple and more complex shapes in CorelDraw 7
The same shapes imported into LibreOffice Draw.
As you can see, it is an initial implementation, which cannot but get better. If you want to participate in this adventure, you can drop around at our IRC channel
#libreoffice-dev channel at
irc.freenode.net where a community of smart and friendly developers can direct you.
Stay tuned for more nice pictures as this project advances.
(January 21, 2012 05:13 AM)
Since I joined the accessibility team at Mozilla I took on one of the task that was in need to be solved: bringing back accessibility in Firefox on Mac as it has been lagging behind.
Marco already wrote about how things are ramping up and started filing more bugs on what is broken in the build I provided.
With the quick release cycle, I can't really commit on which Firefox version this will be in, but the code is current in Nightly, aka Firefox 12, except that on Mac we don't build with accessibility enabled yet.
(January 08, 2012 06:59 PM)
Abiword now has growing GUI support for editing RDF in ODF documents. Much of this support compliments what is available in Calligra for RDF handling. There are some areas where Calligra has more features and some areas where Abiword now does. Hopefully both will continue to have a large and growing shared feature base.
As some folks will know, ODF allows one or more RDF/XML files to be shipped in the ODF file, and for that RDF to be linking to the document content from the content.xml file. This means that you can explicitly say that a 1/2 inch bolt is from a particular maker and was procured on the 3rd of January 2012 by going to their office at geolocation ?x. Handy when you are reading the document a year down the line and want to know which office you bought the bolt from and the exact length of its thread.
Looking at the below image, one can see the purple underlined pieces of text. Each of these has some RDF associated with it. The citation to Dan Brickley has both contact and location RDF associated with it. Looking at the toolbar, towards the right side you see an "R" to start a change tracked document, and the "RF" button. Sorry about the images there, I draw at the 3 year old level so my icons are not quite polished shall we say. Anyway, the "RF" button selects this reference to an RDF item. So if you are between the "am" in the purple "James" then the whole word will be selected with this button. The ">" and "" buttons then allow you to move to the next and previous reference to the selected RDF item. As you notice another purple James later in the document, this is the second and only other reference to him and you can move between them using these buttons.
These purple links I call "RDF links", which is a bit of a play on hyperlinks or bookmarks. Behind the scenes they are implemented using xml:id values and pkg:idrefs to those from RDF.
A feature added in the last days is the ability to capture and navigate by the relation between two RDF links. This is currently done by selecting a "source" link and then clicking another rdf link and setting the relation to the source. So in the below screenshot I am saying that Mark foaf:knows James. You will also notice the "Find by Relation" option which I can then use to see the people that mark foaf:knows. In the spirit of the foaf definition, I have made this a symmetric relation. So there is no stalking, or "following", if James knows Mark then Mark knows James. Asymmetric relationships are also possible, like son, child, or contains. I am hoping to add this feature to Calligra too in the future as the relations between RDF objects is one of the more powerful features that can be offered by using RDF in a document.
Note that the prev/next RDF item buttons work with relations. If I pick mark and navigate to the James he knows then I can "next" from that james to select the second reference to James. This is one recurring theme to RDF in ODF, that RDF objects like contacts can be cited or linked zero or more times in the text content of the document.
As mentioned above, the converse is also true, and the Dan Brickley text has two logical RDF objects linked to it; Dan's contact information and his location. Handling this multi-object for a single site is a little tricky and in this editing will create a window with both the semantic objects in it to let you edit the RDF abiword knows about. Note that this dialog is actually backed by two (or more) SPARQL queries;
If you are not squeamish about your triples then the "Show RDF" option for an RDF link will let you get right at them and edit away as shown below. There are a few technically cool things about this dialog: firstly the "Restrict to RDF Link" combo box lets you select one or more RDF links that the triples will have to be associated with, and secondly abiword makes sure any edits you make are properly linked to the RDF link you right clicked on. What I mean by this last bit is if you right click the RDF link "alice33" add a new triple "uri:alive myvocab:likes uri:bob" then abiword will add the triple "uri:alice pkg:idref alice33" for you. This is sort of having abiword do what you mean in that you want the new triple to be associated with the link but don't necessarily want to have to explicitly say it all the time. By choosing to edit the RDF for the link you have already explicitly said once that you want these things to be linked. This also applies if you change a subject, uri:alice to uri:amanda will update the pkg:idref values for you. Keep it linked, keep it valid.
Going one level deeper, the above dialog is actually a subclass of a restricted RDF model created using SPARQL. The SPARQL model is read only, and the subclass, RDFModel_XMLIDLimited handles mutations by creating a wrapper object which takes care of the automatic triple relinking mentioned above. Those still awake might like to see the abiword trunk code for src/text/ptbl/xp/pd_DocumentRDF.cpp.
This is part of an ongoing mad hacking sprint that is leading up to a talk at LCA 2012 which starts in a week. Many of the things I mention here are not in trunk yet, and only tested on Linux/GTK+3. Those in Ballarat in a week might like to pop in to the talk given my Martin and myself on Friday the 20th.
(January 02, 2012 03:19 PM)
So, the year changed again and with it come quite often new decisions. Some swear to work out the superfluous kilos, pounds, or whatever standardized measure your country uses, gained too fast during the festivals. If it is your decision, it is for sure good for your body and I wish you success that goes beyond the act of subscribing to a local gym (and never appearing there after first month).
But this could be also a nice time to take a decision that you were procrastinating with for too long. That one is good for your intellect and programming skills (even though you don't consider yourself a programmer yet). What about starting to contribute to a Free and Open Source Software project (FOSS)?
Sounds interesting? So I have one for your. It is having a big and growing community. It can accomodate all levels of skills. And the impact you will have is multiplied by the wide addoption of the product itself.
Well, you must have guessed right by now. I am speaking about the LibreOffice project, your natural entry point into the marvelous world of the FOSS.
Whether you are expert or beginner programmer or C++ is sounding Chinese Traditional for you, just find a way to join channel
#libreoffice-dev channel at
irc.freenode.net in order to meet other developers and visit our Easy Hacks for ideas where to start.
I promis you that a year from now, you will not regret that you have started. Although, it is quite probable that you will pour a tear over an unused year-pass from the local gym.
(December 29, 2011 12:57 PM)
AbiWord has been accepted as a mentoring organization for Google Summer of Code 2011. It should also be noted that AbiWord has also been a mentoring organization in the Google Summer of Code for the years 2006, 2007, 2008, 2009, and 2010 too, making this time the 6th consecutive year. As a developer/mentor/past-student of AbiWord, I thought of sharing the presentation that I prepared to assist students getting into Google Summer of Code and AbiWord here.GSoC 2011 AbiWord
Have a look at the project ideas from AbiWord. List of selected mentoring organizations can be found here.Update: Pls find the latest revised version of this presentation at
(November 15, 2011 03:23 PM)
For those that might care, your servant will be attending this week the ODF Plugfest #7 in Gouda (Netherlands).
I will have on Friday a short presentation of the best free and open source library for parsing Microsoft Visio Documents. The other exciting thing is that after more then 6 years of common collaboration I will get to meet personally one of my
libwpd co-maintainers, Johannes Marcus Maurer also know as "uwog".
What an exciting time before us!!!
(November 15, 2011 05:36 AM)
I may I sort-of praised Youtube and HTML5, allowing me to view some of the YouTube content without having Flash, and in Firefox since Google supports WebM, to some extent.
Here come the time to give some tips.
Given the how buggy is the HTML5 implementation of YouTube, particularly with playlist and users, it is a two step process.
First, you have enable the HTML5 beta: the page will tell you the status. If it is enabled or not, what are the capabilities. If you use Firefox, you need Firefox 4 that supports the new WebM open format.
Second, to fix the UI issues, you have to use Cosmic Panda, the new UI. You enable it from that page.
At anytime you can return to these pages and revert your selection. Also you have to do that per browser - to be honest, since I'm not logged in, I can't really be sure if it sticks for the user.
If you are embedding Youtube video with <embed>, then you are doing it wrong. This is unfortunately what a lot of plugins for CMS to. You need to use the new <iframe>. For that, when you go to the video page, click share, then embed and you'll have the snippet of HTML to paste. This will embed the video properly, using HTML5 if the viewer supports it, with the fallbacks to the usual way if needed.
(November 15, 2011 01:26 AM)
It has been a long time since I last time blogged about the LibreOffice Visio import filter. My silence did not prevent a pretty cool code from falling gradually into our git repository. To the point where now we are working on the last 5% of features that normally take the 95% of development time. But, let us see what happened since my July blog:
First of all, Eilidh was busy as a bee and, in the second half of the Google Summer of Code, implemented support of stylesheets, stencils and basic text. She also debugged and fixed quite a number of imperfections that Valek found. Frankly speaking, this Google Summer of Code was by far the best from my point of view. We managed to achieve a very good fidelity of import only in about 3 and half months. Impressive.
During the LibreOffice HackFest weekend in Munich, I had a time to add a support for uniform splines in
libvisio and to implement the actual import in text on the side of LibreOffice.
The next highlight was the fact that the whole team met in Paris during the LibreOffice Conference 2011. It was delight to meet in person Valek and Eilidh. There is even a photo witnessing this meeting:
| ||Valek, me and Eilidh from left to right|
This conference was not only an occasion to know each other a bit better, but also to improve and add some new features to
libvisio. During boring parties full of non-developer talk, we withdrew with Eilidh to some corner and improved together the text import: paragraph and span properties, text box properties, etc. Later on, Eilidh added initial support for line markers (aka arrows). Recently we implemented emulation of the last Visio primitive that we did not handle before - Infinite Line.
For those that have big piles of Visio documents on their disks, but cannot read on their favourite Linux distribution: Your pain is coming to an end. The LibreOffice Visio Import filter will be part of LibreOffice 3.5 release, which will be the next major release early next year.
And since images speak louder then thousands of words, here are some pics to illustrate our achievements:
|OrgChart.vsd in Visio|| ||OrgChart.vsd in Draw|| || |
| || ||You can see the achievement by comparing with the pictures from my June blog|
|Calendar.vsd in Visio|| ||Calendar.vsd in Draw|| || |
| || ||This picture shows a good mix of the complicated features likestencils with NURBS, text fields, gradients, stencil text, etc.|
If you are impatient and cannot wait anymore, just grab one of the daily builds uploaded by our tinderboxes here and enjoy all that goodness on your own.
(November 14, 2011 04:52 AM)
I just pushed out of the door Geglmm 0.1.6, the C++ bindings for GEGL. Nothing very special, they just needed an update.
(November 13, 2011 09:32 PM)
I just did a quick release for libopenraw 0.0.9. It just include a few fixes and enhancements cherry-picked from master. There is much more going into master including a serious API breakage. If you package libopenraw in a distro, I encourage you to pick this one up.
NEWS - tar.bz2 - gpg signature
(October 29, 2011 06:06 AM)
Today was my last day on iWork™. I'd like to thanks my team for these last two years and wish them the best, it was fantastic.
Monday will be the beginning of new adventures, at Mozilla. I'll be in Toronto the first week, but will be based in Vancouver.
(October 16, 2011 01:00 AM)
Excellent write-up about why C has won the language battle: punk rock languages
Also, if you know C and C++, read the Deep C (and C++) PDF deck of slides, and become surprised (or not).
(October 13, 2011 04:33 AM)
It is hard to write eulogies about people you have never met. Dennis M Ritchie's work has influenced me a lot in my tech field. UNIX and C were two of the main projects he worked on and two of the things from which I have been making a living. If it wasn't for them, I may not be working in software engineering.
Dennis M Ritchie sadly passed away today at 70.
The Economist has a good summary of Dennis Ritchie work. The article is from 2004, before iPhone, iPad and Android, which are the most popular consumer products that are based off UNIX.
I spent my professional life either fiddling with operating systems like AIX, BSD, iOS, Linux, MacOS X, Solaris, based on or derived from UNIX, or writing software in C, C++, Objective-C. Thank you Mr Ritchie for your invaluable contribution to computing.
I thought a fun little scenario for RDF in ODF would be to bounce information from Evolution, through abiword, to calligra, and then drag it back into evolution again. So information goes from ical to RDF, crosses the clipboard as RDF inside of an ODF file with linked text, and then is dragged back into ical format again. I notice a little timezone bug in there, but on the whole things work as one would expect.
(October 12, 2011 10:35 PM)
(September 28, 2011 10:55 AM)
So finally Intel admits what anyone with anything more than superficial knowledge of the platform knew for a long time — MeeGo is dead. I am not surprised at all, I have always expected that MeeGo would not live to see its second birthday, but the waste of human effort is dispiriting.
I am not holding my breath for Tizen either, there is a definitive leitmotif here that yet another change of name cannot but accentuate (HTML5 is all good and well, but there is heck lot more to creating a usable platform for a single device category, never mind multiple categories at once, and MeeGo did not get even near). I suspect the success of Tizen will largely come down to what Intel’s partners can bring to the table, but the very fact none of them want to give it a go alone leaves me feeling skeptical — I would not be at all surprised if we get Episode 4, or, more likely, the final curtain, within 18 months.
Powered by Planet!
Last updated: May 26, 2013 12:10 AM
Copyright (C) 1998-2005, the AbiSource community. All rights reserved.
AbiSource, AbiSuite, and AbiWord are trademarks of Dom Lachowicz. All other product names, company names, or logos cited herein are property of their respective owners.
Site feedback to email@example.com