OpenOffice vs. LibreOffice?

CyberNet News has a nice coverage of StarOffice / OpenOffice.org / LibreOffice history.

  • August 1999 – Sun Microsystems buys a company (StarDivision) and gets StarOffice.
  • October 2000 – An open source version of StarOffice, called OpenOffice.org, was released.
  • … almost 10 years goes by with several major and successful OpenOffice.org releases.
  • January 2010 – Oracle buys Sun Microsystems.
  • September 2010 – Some members that worked on OpenOffice.org started “The Document Foundation” due to concern over the future of OpenOffice.org now that Oracle owns it. The concerns were understood since Oracle took the OpenSolaris project, which had been around for nearly 20-years, and discontinued open development of it.
  • January 2011 – OpenOffice.org 3.3 released.
  • January 2011 – LibreOffice 3.3 was released (based on OpenOffice.org 3.3). This is the first stable version of the product.
  • April 2011 – Oracle announces that it will no longer be supporting development of OpenOffice.org.
  • June 2011 – Oracle announces that they will contribute OpenOffice.org (the trademark and the code) to the Apache Software Foundation.
  • June 2011 – LibreOffice 3.4 released.
  • February 2012 – LibreOffice 3.5 released.
  • May 2012 – Apache OpenOffice 3.4 released. Note that it’s not called “OpenOffice.org” anymore, and is instead called “Apache OpenOffice”.

Fixing RT3 on Fedora 10

We upgraded our development server to Fedora 10 over the weekend.  Among other things, it runs RT3 – excellent support, issue management, and bug tracking tool.  Once the upgrade was over, we ended up with a semi-working setup of RT3.  The emails were going through just fine, but the web interface was giving out a blank screen with no content or errors or warnings.

Googled a bit, but that didn’t help a lot.   Went through server logs and found an out of memory shout from Storable.pm:

2325:Callback called exit at 
../../lib/Storable.pm (autosplit into ../../lib/auto/Storable/thaw.al) 
line 415.

Googled for that, but it turned out that quite a few people have the problem with this module running out of memory.  And not only in RT3.

So I left it where it was and had some good night sleep.  And it helped.  In the morning, englightment came in, and I tried reloading the page with cookies and cache cleaned.  It worked.  And then it didn’t work again.  Cleaning cookies was helping for a couple of page views.  So I dived back into the RT_Config.pm file to see my options.  There it was.

=item C<$WebSessionClass>
C<$WebSessionClass> is the class you wish to use for managing Sessions.
It defaults to use your SQL database, but if you are using MySQL 3.x and
plans to use non-ascii Queue names, uncomment and add this line to
F<RT_SiteConfig.pm> will prevent session corruption.
=cut
# Set($WebSessionClass , 'Apache::Session::File');

Once I enabled Apache::Session::File, the problem went away.  We are now back to work, enjoying the new web 2.0 round corners interface, pastel colors, and more.

On software testing

The software is checked very carefully in a bottom-up fashion. First, each new line of code is checked, then sections of code or modules with special functions are verified. The scope is increased step by step until the new changes are incorporated into a complete system and checked. This complete output is considered the final product, newly released. But completely independently there is an independent verification group, that takes an adversary attitude to the software development group, and tests and verifies the software as if it were a customer of the delivered product. There is additional verification in using the new programs in simulators, etc. A discovery of an error during verification testing is considered very serious, and its origin studied very carefully to avoid such mistakes in the future. Such unexpected errors have been found only about six times in all the programming and program changing (for new or altered payloads) that has been done. The principle that is followed is that all the verification is not an aspect of program safety, it is merely a test of that safety, in a non-catastrophic verification. Flight safety is to be judged solely on how well the programs do in the verification tests. A failure here generates considerable concern.

The above was written by R. P. Feynman, in Feynman’s Appendix to the Rogers Commission Report on the Space Shuttle Challenger Accident, 1986. More than 20 years ago. Much recommended reading.

Found via Richard Feynman, the Challenger Disaster, and Software Engineering.

mp3 collection maintenance

I have a rather large MP3 collection.  The directories and files are named correctly more or less, but ID3 tags used to be a mess until very recently.  Two applications helped me to bring some order in that mess.

EasyTag, a GUI application, that helped me to fix lots of broken and add lots of missing comments to my MP3 files.  The smart thing about this program is that it can figure out a lot of data from the names of the files and directories, and that it can grab and replicate partial data from within the albums.

The second program that I wanted to mention, I just found out about today (thanks to Michael Stepanov’s delicious bookmarks).  It’s called tag2utf.  It’s a little Python script that converts the encoding of ID3 tags from koi8 or cp1251 (two most widely used Russian encodings) to utf8.  It’s very easy to install (the only requirement my system needed was python-eye3d library, which exists in Fedora repository) and use.  Just run it from the command line with no parameters and it will recursively look in the current directory for any files that have ID3 tags in non-utf8 encoding.  It will then give you a choice of two encodings to select from (koi8 or cp1251), a “skip” option, and a “manual” option.  All you will have to do is take a quick look at the files, and chose to either convert them from one of the two options, skip them or convert manually one by one.  You will have to make this choice for every directory with non-utf8 files.  Optionally, you can specify on the command line which directories to scan.  In case you need to convert from some other non-Russian encoding to utf8, the script is trivial to modify.

Both tools are excellent pieces of software.  It took me practically no time at all to fix my mp3 collection.  Now I can search it better, and all files display nicely in any mp3 player.  Brilliant stuff!

SugarCRM deployment efforts

Since we started working on SugarCRM in the office, one of the hardest tasks that we had was solving the deployment issue.  On one hand, SugarCRM comes with some really nice GUI tools, such Studio and Module Builder.  On the other hand, the system is large and complex and should be developed and tested in a separate, non-production environment.

We’ve spent a lot of effort over the last couple of month trying to solve the puzzle.  The problem is that there is a tricky combination of files updates and database changes, some of which can be just copied over while others have to be executed from the destination machine’s administration.

So, what we did first was complete separation of environments.  Each developer had his own machine on which he could install and configure as many instances of SugarCRM as he saw fit.  Also, each developer had a separate branch in the Subversion, so that he could work on his own stuff without being afraid to run into conflict with anyone.

After that, we created a development server with a checkout of common trunk.  For extra insurance, we did a checkout from a system user, who does not have any write permissions in the repository.  In this case, even if someone will accidentally try to commit from the development server, we would be sure that it fails.

Now, each developer had to merge his changes into trunk, and then test them on the development server.  This procedure is very similar to the production deployment and consisted of two parts.  Firts part was updating all the relevant files (a bit more on this in a moment) with svn update.  Second part was logging into SugarCRM and doing Admin -> Repair -> Quick Repair and Rebuild.

The graphical tools that come with SugarCRM are powerful, but a bit confusing.  The biggest confusion for me was (and maybe still is) between Module Builder and Studio.  Studio can be used to customize core modules that are shipped with SugarCRM.  The results of these customizations are stored in custom/modules directory, and when loaded into the database, can be observed in _cstm tables (for example, accounts_cstm).  This is where new custom fields and things like that are going.  Module Builder is a tool which can help you customize existing modules or build the new ones. The confusion here is because both of these tools can be used to do the same things.  But with Module Builder you’d be working closer to the core system and modifying “original” functionality.  You can build your own modules too, by the way.  The results of the Module Builder work with go into modules/ directory, and changes in the database will take place in the original tables.  One thing to remember though, is that you’ll need to push Save & Deploy button every time you are finished with changes in Module Builder.  This is like compiling and building a module.  If you forget this step, then your module will hang in its source somewhere around custom/modulebuilder directory.

Another thing to keep in mind is the sillyness of the machine trying to figure out another machine.  Meaning that Subversion will often have issues trying to figure out the changes from the last commit, and these issues would be often caused by a lot of automatically generated code by SugarCRM.  In most of these problematic cases, Subversion will just merge the changes, and this would often result in a broken system.  I’ve found at least two reasons behind these: small context size that Subversion uses (3 lines or so) confuses it sometimes, bringing it to a wrong place in the file to do the merging; and rather messy automatically generated stuff by SugarCRM – unnecessary reordering and mixed (DOS and UNIX) ends of lines in a single file.  These problems are mostly related to vardef files (vardef.php and anything *def.php) and language dictionaries (anything with *en_us*php, or whatever your locale is).  The solution we are using at the moment is simple, although a bit heavy on the manual work – instead of merging the changes and checking them every time we simply remove old versions of files and add the new ones in two separate commits.  These way Subversion treats the files as completely different ones and real removes and re-creates them instead of trying to merge.

We follow exactly the same procedure now to deploy to the production server.  We just merge code from trunk/ to branches/stable , commit, then update the files on the production server, and then do the Quick Repair and Rebuild.

The thing about Quick Repair and Rebuild is that it takes the update definitions of your forms and layouts and rebuilds compiled templates.  It also compares the structure of the database with the update definitions in the files and, if needed, updates the database scheme too.  Sometimes you’d get an error of missing table (usually custom tables with _cstm suffix) – just create an empty table manually.  Put a couple of standard fields like id_c, date_modified, and date_entered.  After that, field modifications should be OK.  In case you run into a problem with updates to several fields at once, make sure that SugarCRM put a semicolon (;) at the end of each SQL statement that it shows you in a popup window.  For some weird reason, sometimes it just works, and sometimes it tries to execute several queries without separating them one from another.

So far the setup seems to be working for us just fine, but I’m sure that we’ll have a few changes here and there.  I’ll let you know once we find any better way of doing things.  In the meantime, here are some links that might help your development efforts:

Wakoopa – one of those things that I don’t get

There are things that are as obvious as daylight.  There are things that I need to research and think over to understand.  And there are things that feel like I’ll never understand.  Wakoopa is one of them.

I first heard about Wakoopa back in April when I was in Amsterdam, at The Next Web 2008 Conference.  Wakoopa is a European social network that unites people who want to share the information about software they use.  If you are one of them, all you need to do is register at the network and download client software to install on your computer.  Once you are done, Wakoopa will track which software you use and how (often).  It will then upload these information to the social network, where you will be able to find other people who use the same software (advice? shared experience?) as well as other software that people similar to you use (expanding horizons?).

The booth of Wakoopa startup was one of the busiest at the conference.  And the company went through a few investment rounds, one of which I just read about in The Next Web blog.

And I still don’t get it.

First of all, I have the feeling that software moves to the web.  Not all of it and not as fast as I’d like it to, but the future seems to be pretty much web-based.  Secondly, those people who are technically literate enough to find, download, and install Wakoopa, are, I belive, literate enough to figure out their issues with current software and find similar software if need be, using nothing by Google and IRC.  Thirdly, there is this evergrowing privacy concern, that itches every time words “tracking” and “sharing” are used. Fourthly, there is the question of licensed software vs. pirated software, which needs to be addressed by way too many Windows users (primary target for Wakoopa software and social network).  Fifthly, there are likely to be quite a few conflicts between people at work and corporate sysadmins. Sixthly, …

With all that, I can still see that there will be a few people here and there who would probably like to participate in this experiement.  But, the thing that I don’t quite understand is how this experiment became so large.  I mean, there are millions of investment, thousands of users, and lots and lots of hype.  I don’t get it.  Anyone care to explain? Or guess maybe?


P.S.: Not that I am jelous of Wakoopa or anything.  They are doing something that apparently has a lot of demand, so I wish the best of luck to them.

How much for WordPress?

The other day Bloggin Pro posted a question “Would You Pay for WordPress and How Much?“.  Of course, I’ve already mentioned that I have no problem paying for WordPress.  How much?  Well, I think that around $50 per installation is a fair price.  But that is not for me to decide.

I thing I keep thinking about though.  A big part of what WordPress is, is it’s freedom. Anyone can get it. Anyone can use it for whatever they want.  Anyone can modify it.  And a lot of people do.  If WordPress will ever become commercial software, it will greatly decrease the amount of people who use it, test it, and develop for it.  And with that, the value of WordPress will stop growing as it is now.  Once the value of it will stop growing as it is now, a lot of people will reconsider their answer to the question “Are you prepared to pay for WordPress?”.

Gladly, Matt and the rest of the Automattic gang seem to clearly understand that.

Toolbox : WordPress, CakePHP, SugarCRM, RT

Over the last couple of years I’ve been working a lot with these four applications – WordPress, CakePHP, SugarCRM, and RT.  Each of these is beautiful in its own way.  Each of these tools is an Open Source Software. Each of these tools has a large community. Each of these tools has a free and commercial support and development. Each of these can be used in a number of ways to solve a whole range of problems.  Let me briefly introduce each one of them.

Continue reading “Toolbox : WordPress, CakePHP, SugarCRM, RT” »

Annoying software

Slashdot is running the post about annoying software.  The fact that Slashdot crowd mostly consists of computer geeks is sort of a guarantee for some interesting comments.

With my Fedora 9 saga I had to review and try a lot of new software.  Needless to say, I found quite a few annoying bits.  Here is a brief list, just to give you an idea:

  • Clock applet in Gnome. It shows calendar with Sunday being first day of the week.  If you don’t like it, you’ll have to recompile your locale to change it. This one is cancelled out though by an excellent support of Google Calendar (or, for that matter, any other web published calendar).
  • Metacity window manager in Gnome. Window titles are displayed in the middle.  This is really annoying for those of us who are used to seeing them on the left.  There is no option to change this setting either in GUI or in GConf.
  • Pidgin new message notification. I once had it popping up nice looking bubbles, but I don’t remember how I managed to do it.  I also don’t remember how I managed to break it.  And I have no idea to bring them back.  I really miss them though.
  • WordPress 2.5 post editing screen. It has been much reworked in the latest version and looks and feels so much better. However, the list of categories was moved from a really convenient location on the right of the screen to a really inconvenient location at the bottom of the screen.
  • FileZilla FTP manager. This one drives me nuts with server connections.  It either disconnects every 40 seconds when being idle.  Or it keeps multiple connections open forever and most FTP servers block me out temporary.
  • Request Tracker (RT3). Works perfectly with queues and tickets, but annoys the heck out of me when I need to do something with users.  Users aren’t first level citizens, like tickets.
  • SugarCRM. Excellent business tool, with lots of small annoyances, like not being able to set default user role, disable theme selector everywhere, change logos to company ones, lock down the functionality, etc.  Most of these are easily fixable.  But some aren’t as trivial as they may sound or seem.
  • Google Reader. This one annoys me a bit (but often) when I want to leave a few items in the feed unread and go deeper into archives.  Somehow it keeps marking everything I passed as read.

Now, what piece of software were you annoyed with recently?