I played a bit with Gammu and my phone (Sony-Ericsson K750i) yesterday, and I found yet another firmware bug. Enabling call line identification over cable (or any connection) makes phone hang when you receive call. Don't know why it is not able to look up number, when it already shows it on the display…
Converting locales data
I already announced that Gammu translations were converted to gettext. Reasons for conversion were written already some time ago. Now I'd like to write about some technical details on conversion.
First I thought the conversion will be simple. Just convert one text file format to other. Unfortunately there were lots of typos in old translations, which I had to fix, because gettext is much stricter about syntax. This itself would be also good reason to switch - old localisations had several types of errors, most frequently bad escaped quotes or messed format strings. This sometimes lead to Gammu crash, because it confuses printf like functions.
Another thing which was broken in old translation were duplicates of some strings. There were about 20 duplicate messages, which only added work to translators and were never used, because Gammu used first string which matched.
After I spot common mistakes, it was quite easy to write conversion script which would handle them. It is written in Python and uses its ConfigParser module to read old localisations. Using already done modules makes thinks a lot easier :-). After reading them, they are fixed to avoid syntax errors in gettext and written in gettext format to new file. All this in 123 lines of code (well, many of this are comments and string constants).
PS: You can download conversion script here, maybe it will be usable also for some other project.
Gammu localisation online
I today managed to convert current translation data to gettext format. Thanks to conversion to gettext, we can now use many standard tools to translate Gammu. One of such tool which is already used for Wammu is Pootle.
I added Gammu po files to my installation and you can now translate online! Currently all languages are open, but if somebody want to manage some language on his own, feel free to write me. Also any requests for adding new language should go to my email.
Wammu website improvements
I finally managed to make screenshots page on wammu.eu. Now you can see small thumbnails directly on first page and it really looks like screenshots page :-).
Meanwhile also Gammu Phone Database got some improvements, but you should not notice anything there (besides added BenQ manufacturer).
Gammu switched to gettext
I finally managed to convert Gammu to use standard gettext for localisation. It was quite nice play with regular expressions, but I had to do only few manual edits afterwards.
Now the second part remains - converting of current translations to po files. Anybody has experiences with this?
As soon as conversion is done, you will be able to translate Gammu online at http://l10n.cihar.com.
Wammu has own domain - wammu.eu
Yesterday I decided to register wammu.eu domain for Wammu. One of reasons was that almost all other wammu.* variants are already taken by speculants and this name sounds good enough. The other reason is to give Wammu better accessible website. The old URL was not bad, but domain name sounds better :-). Also separate domain will allow later to have different CMS and/or design of Wammu pages, what is something I'd like to see, but don't have skills for that.
So please use http://wammu.eu for linking to Wammu. The old URLs are redirected to new location and they will stay redirected for long.
If there are any problems on new website, please notify me.
Gammu future
Maybe it's time to write down what I plan in Gammu in future. Please note that this is not short-term plan (it is unlikely that something of this will be in next stable release), it is just list of thinks I'd like to have in future.
- API improvements - Current ABI which changes whenever there is change in internal structure sucks. The current code will get wrappers Gammu_DoSomething(statemachine, params), which will allow to have ABI compatible as long as the function exists.
- Unicode storage - There were good reasons in past not to use wchar_t but I thing all them have gone. Switching to wchar_t would allow Gammu to easily communicate with rest of the world and Gammu won't have to contain duplicates of many functions from standard libc.
- Localisation - Gettext is much more flexible than current localisation system and well known format gives translators ability to use many tools.
- Drop autotools support - CMake build system looks much cleaner than anything I was able to achieve with autotools. Right now it still requires some stabilisation, but it is anyway equal replacement.
- Version control - I'd like to switch to Subversion, which is widely used and widely known. However I have not yet found way how to import my current revisions in Bazaar to Subversion, any conversion I tried so far crashed.
Anybody interested in these steps? Don't hesitate to tell me or write to gammu-users mailing list.
Release often
In time when I was working on Wammu 0.18, I realized, that making release not very often is bad thing. You usually get same reports over the development period and telling people that you have fixed it, but not yet in any released version, doesn't make them happy.
As you can see from past weeks, I switched to making releases as often as possible. I will try to add new features quickly after release and then give the code some time for stabilisation (well, this would need a bit more testers than I currently have). I'd like to avoid delay longer than month between releases, if there is something to release (I doubt there will be any major changes in python-gammu in near future).
Gammu test version 1.10.1
I just released new version of Gammu, you can download it from download server. There is quite a lot of changes:
- Fixed encoding of name for Nokia phones.
- Fixed connecting to PostgreSQL with empty password.
- Fixed infinite loop in --monitor (bug #75).
- Fixed behaviour on Bluetooth disconnect.
- Fixed handling of files with special chars on OBEX.
- OBEX driver correctly detects models.
- Native OBEX connections (blueobex and irdaobex) should work also with unknown models.
- Simplified searching of channels using Bluez stack.
- RF searching now better detects OBEX channels.
- Fix format strnings for 64-bit architectures (bug #77).
- Cleanup documentation structure.
- Moved locales out of documentation.
- Fixes locales and documentaion install in CMake (bug #76).
- Fixed retrieving messages with some phones who index them from zero like CG79 (bug #20).
- Ignore error when there is too much members in group in phone (bug #3).
- Compilation fixes for OpenBSD with libutf8 (bug #10).
- Handle another error while reading 6510 phonebook (bug #49).
- Fix international number handling in vCard (bug #71).
Gammu bug squashing
Today I decided to go through open Gammu bugs and try to fix some of them. There were trying many trivial bugs, which I'm now fixing, the harder ones will there stay for some other time or other volunteer (feel free to take some!).
There are still some issues remaining, but I will go through rest today and tomorrow and make testing release after that. So far ChangeLog length looks quite impressive :-).