Avogadro 0.9.1 Released

We continue our push forward with Avogadro with the release of Avogadro 0.9.1 on 16 February. There are lots of new features that made it in recently and we are still stabilizing many of them. This release has featured lots of experimentation with CPack, along with me getting more familiar than perhaps I ever wanted to with Windows packaging. CMake makes things easier but there are some things it cannot fix, such as the manifest issues we hit.

Nanotube

This is the second of our final beta series before our 1.0 release. We hope to make a release roughly once a month until we release Avogadro 1.0. During this period some new features will be added. Our main focus will be on improving the API, fixing crashers, ensuring all platforms have stable packages with full functionality and improving fault tolerance. To this end we will be adding to our (currently) quite small test suite and making use of CDash in order for all developers to be able to see issues on all targeted platforms.

Since the release I found a few small bugs and so already want to make a new release. I fixed a bug when calculating electron density cubes from formatted checkpoints - it was one stray line of code! There is a super cell builder that can do rebonding on the super cell in the works and I recently committed some code to use relative paths to find our plugins. This seems to work really well and with a little tinkering should allow us to run off a USB stick without installation.

While working on our Windows build I realized I have been neglecting our Linux build a little. So I have an avogadro.desktop file and some mime type files to give us a menu entry and associate with some file types. I may not have chance to finish them up and commit until I get back on Sunday.

On that note I will likely be offline until Sunday/Monday. I have my first big job interview tomorrow - wish me luck! Like several people on Planet KDE I am currently in the market for a job. I am going to be all mysterious and not give any more details, other than to say I am excited and nervous!

Friday the 13th...

So it is Friday the 13th... At about 5am this morning my server emailed me to tell me one of its disks was down... It is all RAID1 (apart from swap) and so it is mostly OK. I think having half its swap removed upset it quite a bit though, and so almost all services died. I think they are all back up and running again, but if you emailed anything in the last day or so you might want to resend it.

This week has not been my finest - hopefully next week will be much better! Here's hoping nothing else went terribly wrong this week, and that it is just the disk and not the whole server that is having trouble. So much to do, I did not need this.

Avogadro Featured by Qt Software

I am very pleased to announce that Avogadro was recently featured by Qt Software on their Qt In Use page. I worked with Alexandra Leisse at Camp KDE on getting the page ready and we recently got the rest of the screenshots and videos prepared.

Check out the Avogadro Qt page and some of the features we were able to implement very rapidly thanks to the great API provided in Qt 4. The Avogadro development team is very pleased to be featured by Qt. Many of the features in Avogadro would not have been possible to implement in such short timescales without Qt. As I said on that page, we have made extensive use of the Qt plugin framework to dynamically load almost all functionality at runtime.

There are a few problems with our Windows installer, which was originally a hand crafted NSIS installer. There is a preview of a new CPack generated installer. You can get it here if you are cannot wait to try it on Windows. It lacks Python support right now as that brings in quite a few extra dependencies I have not had time to compile on my Windows virtual machine yet.

Manifest Hell...The New DLL Hell?

I am going to shock you all and admit that I am not a Windows programmer! I do however know quite a bit about cross-platform development and have now learnt the joy that is the manifest in Windows development. It seems that DLL hell is now a thing of the past, all hail manifest hell. A week ago I was not aware of these wonderful little files and this post is an attempt to document what I learned while packaging Avogadro for Windows.

After listening to Bill's talk at Camp KDE I was convinced that it really was a good idea to use CPack to package Avogadro. So when I got back home I spent a day or two getting a Windows development environment set up for Avogadro. We have several dependencies such as Qt and this post documenting a bug in the Visual Studio 9 service pack. So I edited the manifest and lied about the version of the DLLs - it believed me.

Next I found that none of our plugins would load. They are Qt plugins that implement most of the functionality in Avogadro. I found a very long thread on this subject, the crux of which is that the embedded manifests are causing Windows to look for the runtime libraries in the plugin directory. Copying them did indeed work but was not optimal. I found that by adding set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} /MANIFEST:NO") to our CMakeLists.txt manifests were no longer made for our plugins (which are loadable modules).

So all is quite well with our Windows build now I think. If you would like to try out a new Windows installer, then please download it from here and let me know if it works for you. I have tested it on Windows 2000 and XP virtual machines. This is not the final installer, I need to add some extra data files for OpenBabel and ensure I got the other dependencies right.

If anyone with more Windows experience knows of better solutions please let me know. CPack is absolutely awesome, it seems a shame that the deployment of applications is made so difficult. I know that plugins are not as widely used and so hopefully this post will add to the collective knowledge indexed by Google.

New Avogadro Screencast and Updates

I made a new Avogadro screencast earlier today, trying new formats and preparing a showcase of features in the recent 0.9.0 release. Unfortunately, due to an API change in Eigen this release only builds with eigen-2.0_beta6. The sources in git work with the recently released eigen-2.0, and I will try to make a new release in the near future.

The video shown above, is also available on YouTube, but the encoding does not look as good as on blip.tv. It shows off several of the features present in the current Avogadro release. There are a few issues with the Windows installer, which is another reason to put a small bug fix release out soon.

I have been putting my newly acquired Qt takes to compile in a Windows virtual machine, I do have a working Windows build environment now. I got CDash working for our project, even without unit tests it is great for flagging build errors/warnings on multiple platforms. I also have CPack generating our NSIS based Windows installer now. There are a few rough edges remaining that I hope to iron out soon, but I think our packaging just got a lot easier - thanks to Bill and Kitware.

Things have been really hectic since I got back from Camp KDE. Had a great time, met lots of really interesting people, did not sleep very much (need to take ear plugs next time) and found my Eee PC with KDE 4.2 (rc at the time) worked great the whole week, and it is so light.

When I got back I found out that our espresso machine broke, and the electronics shop declared it a lost cause earlier today :-( This has meant a serious espresso shortage since my return! Why do they always concentrate on redundant power systems for the clusters, but not redundant espresso systems for the researchers???

So really busy right now, hopefully good news coming soon on several fronts - keep your fingers crossed! I am loving KDE 4.2, CMake and Qt but in dire need of espresso products ;-)