Co to jest
Ubuntu One jest usługą synchronizacyjną.
Podstawą jest synchronizacja plików: wszystkie dane umieszczone w
zadanym katalogu (domyślnie ~/Ubuntu One) są synchronizowane z
serwerem Ubuntu a także z innymi podpiętymi do tego samego konta
komputerami.
Na doczepkę zawartością katalogu można zarządzać
(włącznie z ściąganiem i wgrywaniem plików) przez przeglądarkę WWW,
dzięki czemu można się do nich dostać także z innych niż Ubuntu
systemów operacyjnych.
Protokół wygląda na otwarty. Wraz z graficznym klientem instalują
się biblioteki klienckie a także programy command-line. Nieco więcej
o nich - niżej.
Ubuntu One na tym się jednak nie kończy, wyraźnie dążąc także do
obsługi synchronizacji danych na poziomie konkretnych aplikacji. W
tej chwili można synchronizowac kontakty z evolution, zakładki a także
notatki Tomboya (potencjalnie bardzo cenna funkcja, czyniąca z tak
synchronizowanego Tomboya konkurencję dla sieciowych notesów,
osobistych wiki czy nawet list zadań).
Instalacja
Po upgrade do Ubuntu 9.10 graficzny klient Ubuntu One jest
domyślnie zainstalowany (są to pakiety ubuntuone-client oraz
ubuntuone-client-gnome). Uruchomić go można z menu
(Programy/Internet/Ubuntu One) albo poleceniem
ubuntuone-client-applet.
Na pasku pojawia się ikonka rozłączonego dysku, równocześnie w
przeglądarce WWW zostaje otwarta strona logowania Ubuntu One,
wymagająca posiadania konta na Launchpadzie
(developerskim serwerze Ubuntu).
Zakładania konta opisywać nie będę, swoje założyłem dość dawno przy
okazji zgłaszania błędów.
Ciekawostka: logowanie do Ubuntu One odbywa się przy pomocy
OpenID (ale musi być to OpenID z launchpada, nie znalazłem
możliwości użycia własnego).
Launchpadowego OpenID można za to używać do logowania na dowolne
serwisy obsługujące taką formę logowania (np. autoryzować się
launchpadowym hasłem na stackoverflow
czy osnews). Aby sprawdzić swoje id trzeba
wejść na launchpad.net, zalogować się i
kliknąć swój pseudonim w prawym górnym rogu strony. Zostanie
wyświetlona formatka danych konta zawierająca min. pole OpenID
login. Tą wartość wpisujemy jako swój identyfikator.
Na jednej z maszyn miałem z powyższym ekranem problem - po każdym zatwierdzeniu
pojawiał się ponownie. Jak się okazało, winne było ustawienie plików cookie,
które akceptowałem tylko z odwiedzanego serwisu. Po włączeniu zgody na wszystkie
cookie autoryzacja przebiegła poprawnie.
Następny krok - upoważnianie klienta (komputera) do dostępu do
sieciowego dysku Ubuntu One - także odbywa się przy pomocy
standardowego protokołu: OAuth.
Poza estetyką ma to rozwiązanie praktyczną zaletę: podłączające się
komputery nie muszą zapisywać launchpadowego hasła a jedynie
autoryzacyjny token OAuth. Dlatego by taki dostęp odebrać (np. po
zgubieniu netbooka) wystarczy w webowym interfejsie usunąć
upoważnienie dla danego komputera (odpowiednia lista jest w zakładce
Account). Nie ma potrzeby zmieniania hasła, nie ma potrzeby
rekonfigurowania innych podłączonych maszyn.
Dodatkowo, na maszynie klienckiej ów token zapisywany jest w bazie
kluczy (zabezpieczonej hasłem logowania). To akurat sprawia pewne
problemy (konsolowy klient odpalany przez ssh nie może się do bazy
kluczy dostać, ogólnie - całość jest ściśle związana z uruchomionym
GNOME).
Na koniec trzeba jeszcze kliknąć Połącz (albo w menu kontekstowym
apletu albo w nautilusie wyświetlającym zawartość
katalogu ~/Ubuntu One).
Uwaga: aplet ma dwa menu, jedno otwierane lewym klawiszem myszy
(łączenie/rozłączanie) a drugie prawym (preferencje, otwarcie
strony webowej, zakończenie). Niewygodne i mylące.
Używanie
Po skonfigurowaniu, po prostu korzystamy z synchronizowanego
katalogu - kopiując doń pliki, edytując je bezpośrednio itp.
Aplet od czasu do czasu sygnalizuje przeprowadzanie synchronizacji.
Poprawnie wykrywane są zarówno operacje w nautilusie, jak konsolowe
(pliki tworzone cp czy edytowane vi też są poprawnie kopiowane).
Można się też rozłączyć (czy to explicite, klikając opcję Rozłącz, czy to
odpinając się od sieci), wszystkie dane pozostają i można ich używać,
synchronizacja nastąpi po powtórnym połączeniu.
Niestety ... działa to kapryśnie. W ciągu paru godzin używania
kilkakrotnie musiałem klikać Rozłącz i Połącz by wymusić
synchronizację, która sama z siebie nie chciała nastąpić. Mam też
wrażenie, że synchronizacja w ogóle nie działa gdy desktop jest
zablokowany. Robiłem prosty eksperyment (oba komputery z podłączonym,
działającym Ubuntu One synchronizowanym z tym samym kontem):
- blokowałem ekran na desktopowym komputerze (Zablokuj ekran),
- przesiadałem się na laptopa,
- logowałem się z laptopa na desktop po ssh,
- tworzyłem (na zablokowanym desktopie) plik w katalogu Ubuntu One.
Mimo kilkunastu minut oczekiwania plik ten nie został zsynchronizowany
na laptopa ani na serwer Ubuntu. To samo w drugą stronę - pliki stworzone na
laptopie poprawnie pojawiły się w interfejsie webowym ale nie pojawiły
się na desktopie. Nie mam pewności, czy chodzi tu o blokadę ekranu, może
za krótko czekałem albo brak synchronizacji wynikał z jakichś błędów ale
mimo paru prób nie udało mi się zobaczyć udanej synchronizacji w tych warunkach.
A obrazki parę godzin temu wrzucone na laptopa (i widoczne także w interfejsie webowym czyli
obecne na serwerze Ubuntu) ciągle na zablokowany desktop nie trafiły.
Dla porównania: pliki wrzucone do katalogu Dropboksa
zsynchronizowały się (w obie strony) w przeciągu sekundy.
Zresztą, Dropbox góruje zdecydowanie też samą szybkością
synchronizacji, tak po zalogowaniu (notyfikację o zakończeniu
synchronizacji danych dropboksowych oglądam zazwyczaj jeszcze zanim
aplet Ubuntu One w ogóle zdoła się uruchomić) jak w trakcie pracy.
Jest też gruba różnica funkcjonalna - Ubuntu One nie obsługuje
wersjonowania plików, pamięta tylko ostatnią, najnowszą wersję.
Przypomnę, że Dropbox przechowuje historię zmian i pozwala
odzyskać starszą wersję (np. po przypadkowym skasowaniu lub
uszkodzeniu pliku).
Udostępniania plików innym nie testowałem.
Ustawienia
Ubuntu One ma okienko preferencji - standardowo uruchamiane z
kontekstowego menu apletu, jeśli tej nie widać, dostępne w formie
polecenia ubuntuone-client-preferences.
Jest mało frapujące:
O ile ograniczanie pasma może mieć czasami sens, o tyle pozostałe dwie
opcje uważam za zwyczajnie zbędne. Zagadkę co oznacza pamiętaj
ostatni stan w ustawieniu czy łączyć po zalogowaniu pozostawię
czytelnikom, za to ikona na pasku, choć chciałem by się pokazywała
zawsze, jest wyjątkowo kapryśna i nieraz już mi znikała.
Brakuje tu za to konfigurowania częstotliwości synchronizacji, nie ma
też opcji zmiany lokalizacji synchronizowanego katalogu.
To ostatnie próbowałem ćwiczyć (nazwa Ubuntu One nie trafiła mi do
przekonania), zakładając katalog gdzie indziej, kopiując dotychczasową
zawartośc i przerabiając Ubuntu One na symlink do właściwej
lokalizacji. Uruchomiony aplet sobie z tą sytuacją nie poradził, po prostu
przestał działać nie sygnalizując błędów (musiałem go ubić i uruchomić
ponownie), co więcej - po ponownym uruchomieniu musiałem od nowa
przejść proces autoryzowania komputera, który pojawił się na liście
maszyn z nowym, innym haszem (dodatkowy ciąg cyfr identyfikujący
udział).
Później odkryłem inną, sensowniejszą metodę (której jednak już
nie ćwiczyłem). W pliku /etc/xdg/ubuntuone/syncdaemon.conf
jest między innymi ustawienie:
root_dir.default = ~/Ubuntu One
Nie próbowałem zmieniać, z default wnioskuję, iż trzeba by to
zrobić przed pierwszym uruchomieniem apletu (na danym koncie).
Plik syncdaemon.conf jest dość interesującą lekturą. Wygląda na to, że
można tam zhardcodować dane autoryzacyjne OAuth (obchodząc w ten
sposób konieczność używania bazy kluczy i być może zyskując możliwość
używania Ubuntu One w bardziej serwerowych zastosowaniach) - patrz
parametr oauth.metavar. Widać też dużą ilość ustawień debuggingowych
(kilka rodzajów logów, profiling, monitor zużycia pamięci) - wyraźny
ślad intensywnych prac developerskich.
Poza środowiskiem graficznym
Po zainstalowaniu pakietu ubuntuone-client-tools:
$ sudo apt-get install ubuntuone-client-tools
pojawiają się programy u1sync oraz u1sdtool. Dokumentacja w formie
stron man jest dość szczątkowa ale ten pierwszy wygląda na narzędzie
do aktywowania synchronizacji na dowolnie wybranym katalogu i - być
może - jej używania bez GUI (tu pasuje też realizujący podstawową funkcjonalność
ubuntuone-syncdaemon - aplet jest tylko nakładką monitorującą jego działanie).
Nie będąc pewny co i jak ma tu działać, bałem się wykonywać przy
pomocy u1sync i u1sdtool aktywne operacje, pasywne
(--list-shares itp) natomiast albo niczego nie znajdowały albo
zgłaszały błędy. Trzeba poczekać ale widać, że narzędzia
konsolowe także mają być rozwijane.
Wreszcie, elementem instalacji są także biblioteki -
python-ubuntuone-client oraz python-ubuntuone-storageprotocol.
Daje to pewne nadzieje na pisanie alternatywnych programów
klienckich czy - szerzej - nietypowe zastosowania Ubuntu One.
Jak już z powyższego można się domyślić, Ubuntu One jest
zaimplementowane w Pythonie (nawet aplet jest aplikacją Pythonową -
pygtk, tylko dodatek do nautilusa jest biblioteką dzieloną). Dla
mnie szczególnie interesująca jest następujący wiersz kodu:
from twisted.internet import gtk2reactor
Tak, mamy tu aplikację zrobioną w parokrotnie przeze mnie wspominanym frameworku
Twisted.
Może być to interesujący kod do poczytania (ech, w wolnej chwili).
Konflikty
Ze względu na opisywany wyżej problem opóźniającej się synchronizacji
miałem kłopot z pełnym przetestowaniem konfliktu, czyli równoczesnej
edycji tego samego pliku na dwóch maszynach. Zdecydowałem się
na wariant uproszczony, tj. test konfliktu między lokalną edycją
a uploadem do interfejsu webowego. W tym celu:
- stworzyłem nowy plik w katalogu Ubuntu One i poczekałem, by się
zsynchronizował (weryfikując jego obecność w interfejsie webowym),
- rozłączyłem Ubuntu One (odpowiednią opcją w menu apletu),
- przeedytowałem ten plik na jeden sposób (na boku) i wgrałem via interfejs
webowy przy pomocy opcji Upload (i zweryfikowałem, że wgrał się poprawnie),
- podedytowałem ten sam plik w katalogu Ubuntu One,
- połączyłem Ubuntu One z powrotem.
Efekt? Nie było żadnej informacji o konflikcie, wygrała ta druga
wersja (prawdopodobnie dlatego, że była późniejsza). Niedobrze.
Przypomnę, że Dropbox w takiej sytuacji tworzy kopię (moj_plik
(ramanujan's conflicted copy 2009-11-10).txt), pozwalając obejrzeć
oba pliki i w ten czy inny sposób rozwiązać problem bez utraty danych.
Planowałem jeszcze inne próby (np. skasowanie pliku z jednej i edycja
z drugiej strony) ale jak widać Ubuntu One w ogóle nie próbuje sobie
z konfliktami radzić.
Przy próbie ściągania plików interfejs webowy wielokrotnie traktował
mnie następująco:
Problem dotyczy chyba tylko ściągania, przy innych operacjach błędów
nie widziałem. Za to przy download jest bardzo częsty, zwłaszcza
późnym wieczorem (prawdopodobnie czas większej aktywności użytkowników
w USA).
Synchronizacja notatek
Dla odmiany spróbowałem synchronizacji notatek Tomboya - potencjalnie
najbardziej dla mnie interesującej funkcji (obecnie używam trochę Zima
ale Tomboy z synchronizacją byłby poważną konkurencją).
Proces konfiguracji to po prostu:
- uruchomienie Tomboya (Programy/Akcesoria/Notatnik Tomboy),
- wybranie Preferencje z kontekstowego menu jego ikony,
- wybranie w zakładce Synchronizacja opcji Tomboy Web i zachowanie domyślnie podsuwanego adresu
https://one.ubuntu.com/notes,
- przejście w przeglądarce akceptacji dostępu OAuth (tu z niewiadomych powodów nie jest, jak to było przy plikach, podsuwana nazwa maszyny).
Zrzuty wszystkich ekranów po kolei są na stronie tutoriala.
W tym wypadku nie ma automatycznej synchronizacji. Robimy ją
explicite, wybierając z menu Tomboya (prawy klawisz na ikonce apletu)
opcję Synchronizuj. Pojawia się okienko z informacją o trwającym kopiowaniu a
następnie podsumowanie.
Oczywiście mamy tu tylko synchronizację Tomboya z aktualnie używanej
maszyny z notatkami na serwerze, by zsynchronizować innego Tomboya
musimy powtórzyć operację na tamtej maszynie.
Pod spodem jest to API.
Notatki można edytować także bezpośrednio w webowym interfejsie.
Jest dość spartański (nie ma żadnego wyszukiwania w notatkach czy ich
organizacji) ale tekst pojedynczej notatki edytuje się dość poręcznie.
Także tutaj nie ma żadnego rozwiązania ewentualnych konfliktów, późniejsza
zmiana wygrywa.
Dopisek po dłuższych testach: interfejs webowy nie obsługuje notatników (Tomboyowych kontenerków
do grupowania notatek) - w ogóle nie ma w nim takiego pojęcia. Między komputerami
notatniki synchronizują się poprawnie.
Synchronizacja kontaktów z evolution i zakładek firefoksa
Na zabawę tymi funkcjami nie znalazłem na razie czasu - zresztą,
problem synchronizacji zakładek rozwiązałem w sposób, z którego jestem bardzo zadowolony.
Ciekawostka techniczna: w ramach mechanizmu do synchronizacji kontaktów pojawia się nazwa
CouchDB. Mamy tam tak naprawdę lokalną implementację książki adresowej
w lokalnym CouchDB i synchronizację tego ostatniego z serwerem Ubuntu.
Smakowite, bardzo mnie ciekawi, jak efektywnie będzie to działało.
CouchDB jest używane w Ubuntu One szerzej, także przy przechowywaniu plików
czy notatek ale w przypadku kontaktów (a chyba także zakładek) jest
najbardziej widoczne.
Podsumowanie
Ubuntu One nie stanowi w tej chwili - jako narzędzie
synchronizacji plików - żadnej konkurencji dla Dropboksa.
Ustępuje mu wszystkim - funkcjonalnością, wydajnością, niezawodnością,
jakością interfejsu (nie wspominając już o przenośności). Jest to
ewidentnie produkt w fazie beta i wiele pracy trzeba włożyć by
dogonił konkurencję (nie tylko Dropboksa, przyzwoitych sieciowych
dysków jest wiele). Sama preinstalacja to mało, zresztą - aktywacja
wymaga rejestracji na launchpadzie, przejścia logowań OpenID i OAuth,
w efekcie ... uruchomienie preinstalowanego Ubuntu One wymaga więcej
klikania niż zainstalowanie Dropboksa.
Większe perspektywy widzę dla Ubuntu One w obsłudze synchronizacji
danych aplikacji - czego zaczątkiem są opisywane notatki, zakładki czy
kontakty (i co w wielu wypadkach wymaga granulacji na poziomie
rekordów/elementów a nie całych plików). Tutaj wymagana jest ścisła
integracja z desktopem (i wiedza co na nim działa) i trudno byłoby
komukolwiek z Ubuntu konkurować. A dobra synchronizacja danych między
aplikacjami desktopowymi byłaby cechą bardzo pożądaną (przecież to jej
brak napędza popularność aplikacji przeglądarkowych).
Projekt jest też naprawdę interesujący technicznie, do tego
wykorzystuje otwarte standardy, kod aplikacji jest dostępny jako
open-source. Mam zamiar zerkać na jego rozwój.
A synchronizowanego Tomboya spróbuję trochę poużywać.
Dobry tekst. Sam używam Dropboksa. Dla mnie plusem jest to, że działa (są gotowe do instalacji paczki) na innych dystrybucjach. W pracy używam Ubuntu, w domu Fedory. Do tej pory nie doznałem żadnych zgrzytów - wrzucam i zapominam. Zmieniam komputer - cyk - wszystko zsynchronizowane.
Fajnie, że podlinkowałeś swój starszy o synchronizacji zakładek. Zainstalowałem sobie ReadItLater - ale to chyba jeszcze nie to. Do tej pory wysyłałem sobie linki mailem :)
Jeśli RiL Ci nie podchodzi, możesz jeszcze spróbować rzucić okiem na diigo. To jest takie połączenie delicious (tagowana baza linków), readitlater (oznaczanie rzeczy do przeczytania) i anotacji stron (zaznaczanie kluczowych fragmentów, dopisywanie uwag). Mi nie do końca odpowiadał interfejs plus brakowało mi delicyjkowych podpowiedzi ale narzędzie ciekawe.
Jest też InstaPaper, to już niemal to samo co RiL ale z innym interfejsem.
Opisywane problemy z brakiem synchronizacji być może są celowe, a wynikają z dosyć prozaicznej sprawy - oszczędności energii.
Mam zamiar zwrócić się do Ciebie jak do niezależnego rzeczoznawcy ;-)
A co byś powiedział na przeanalizowanie narzędzia do pracy grupowej Collanos?
Ten program (na wiele systemów operacyjnych) posiada ciekawą funkcję synchronizacji dokumentów bez pośrednictwa serwera: odbywa się to przez połączenie P2P po autoryzacji w systemie Collanos.
Jestem ciekaw Twojej opinii o tym narzędziu.
Nie znałem tego dotychczas.
Po przejrzeniu opisu:
Zapewne kiedyś zerknę, choć nie obiecam że niebawem.
Doskonały opis. Sam z ciekawością spoglądam na Ubuntu One od samego początku (byłem beta testerem) i widać, że usługa rozwija się w dosyć żwawym tempie. Mam nadzieję, że tempo zostanie utrzymane i będziemy mieli alternatywę dla Dropboksa, który jak słusznie zauważyłeś, jest w tej chwili najlepsza aplikacja do synchronizacji
P.S. Ubuntu One to produkt firmy Canonical, nie ma czegoś takiego, jak firma Ubuntu.
Ja bym bardziej trzymał kciuki za wątek aplikacyjny bo to może być naprawdę ciekawe. Co do gonienia dropboksa - imo największa dziura to kwestia rozstrzygania konfliktów a w dalszej mierze choćby minimalnego wersjonowania.
Wiem i właśnie się zastanawiam, jakim cudem to napisałem ;-) Zdaje się najpierw było autorów Ubuntu ale mi nie brzmiało.
Ale już niech zostanie, skojarzenia budzi właściwe.