Đồng bộ hoá Evolution và google calendar

Evolution (http://projects.gnome.org/evolution/) là bộ chương trình quản lý email và lịch làm việc trên nền linux. Ban đầu do hãng novell phát triển như một công cụ thay thế M$ Outlook khi cho linux, nay evolution là một phần của dự án Gnome, chương trình email-clients yêu thích nhất của mình.
Google calendar là dịch vụ quản lý lịch làm việc của google thì chắc ai cũng biết. Và nhu cầu phát sinh là làm sao đồng bộ 2 cái lịch của evolution và google với nhau vì mình bình sinh không thích dùng browser quá nhiều.

Trong phiên bản 2.24 evolution đã có một tuỳ chọn tạo calendar từ google calendar, tính năng này do Ebby Wiselyn (http://ebbyw.wordpress.com/) viết trong dịp google summer of code, sử dụng bộ Google Data API để lấy dữ liệu về cho evolution. Tuy tính năng này sau đó đã được tích hợp vào evolution nhưng hiện nó không còn được phát triển do google đã hỗ trợ khá tốt chuẩn calDav (http://en.wikipedia.org/wiki/CalDAV) nên việc đồng bộ hoá sẽ chuyển sang sử dụng chuẩn này.

Ta bắt đầu bằng việc tạo một calendar mới trong evolution: Nhấn nút chọn calendar sau đó File -> New -> Calendar
Trong bảng tiếp theo, chỉnh như trong hình:

nhớ thay user@gmail.com bằng địa chỉ email đúng và phải check ô Use SSL

Sau đó ta còn phải làm một bước nữa để chắc chắn mọi thứ hoạt động do bản evolution hiện tại còn tồn tại một bug, ta tắt evolution bằng lệnh:

evolution --force-shutdown

Sau đó vào gconf-editor và tìm tới khoá: apps/evolution/calendar/sources
Tìm đến khoá tương ứng của calendar vừa tạo, nó sẽ là một chuỗi xml bùi nhùi viết liền trên một hàng, rất là khốn khổ cho con mắt, ráng kiếm cho được mục relative uri và sửa dấu @ đầu tiên của nó thành %40. Sau đó ta khởi động lại sẽ thấy mọi việc đã ổn.

Lưu ý:
– các bước trên chỉ áp dụng cho calendar mặc định, nếu google calendar của bạn chứa nhiều hơn một calendar, bạn phải tạo nhiều calendar trong evolution, đường dẫn đến mỗi calendar của google khác nhau, bạn có thể tham khảo hướng dẫn của google dành cho sunbird http://www.google.com/support/calendar/bin/answer.py?answer=99358#sunbird
– Nếu bạn gặp lỗi "No such calendar" khi lưu appointment từ evolution lên google calendar, khả năng là bạn đang gặp rắc rối về timezone. Mặc dùng google ghi ngoài mặt rõ ràng là (GMT +07:00) Ha Noi nhưng bên trong nó lại lưu là Asia/Sai Gon (Bà già nó chứ). Trong khi đó thì tự lâu Evolution đã cập nhật cái tên cũ mèm đó thành Asia/Ho Chi Minh. Sự khác nhau này là nguyên nhân của việc "No such calendar". Cách giải quyết tạm thời (trong lúc chờ Hà Nội được đưa vào danh sách là chuyển timezone của cả 2 thằng sang chỗ nào đó cũng GMT+7 mà 2 đứa có thể hiểu nhau, Bangkok hay vientane gì đó cũng được.
Know issues:
– Chưa thể cập nhật task.
– Chưa có nút refresh, sẽ phải chờ nó tự refresh hoặc khởi động lại evolution.

PS: Rất cảm ơn git master, một thành viên của nhóm phát triển evolution, đã tận tình giải đáp thắc mắc của kẻ vô danh không quen biết này.