wtorek, 26 października 2010

Ukrycie Symbiana

Zmiana Prezesa Nokii odejście sporej starej kadry Nokii. Zmiany w Fundacji Symbian, zwolnienie 1200 ludzi zajmujących się Symbianem w Nokii. To tylko pokazuje, że zmieniają się ludzie a kod pozostaje i ktoś musi nim się opiekować.

Organizacyjnie zmiana szefa powoduje, że większość kadry zarządzającej zmienia się. Kierownicy pojawiają się i odchodzą, natomiast ludzie z średniego szczebla nadal robią to co robią. Fundacja Symbian nie potrzebuje wielu ludzi do zarządzania rozwojem Symbiana. Odejście Samsunga czy SonyEricsona z rozwijania Symbiana jest wyrazem braku wykwalifikowanej kadry z ich strony, która miałaby pomagać rozwijać Symbiana. W praktyce przedstawiciele tych firm okazjonalnie pojawiali się na telekonferencjach czy spotkaniach face-to face. Czarny public relations wokół Nokii i Symbiana wystraszył ich skutecznie. Te firmy tak naprawdę dostawały technologię, produkowały sprzęt do niego i nie zawracały sobie głową rozwojem. Natomiast inne podejście mają Japończycy. Dla nich Symbian jest "ukryty" i "zamknięty" co oznacza tylko tyle że firmy Fujitsu, Sharp i DOCOMO ściśle ze sobą współpracują i wypuszczają nowe modele komórek z Symbianem dla nich samych. Jest inny problem dla użytkowników takich japońskich komórek. Użytkownicy japońskich komórek z Symbianem raczej nie potrzebują instalowania aplikacji, bo większość aplikacji działa na zasadzie korzystania z internetu i uruchamiania w przeglądarce internetowej midletów i-mode czy aplikacji FlashLite 1.0 Silne ograniczenia bardzo korzystnie wpłynęły na rozwój tamtejszych aplikacji. Konieczność przebywania w trybie online w internecie z komórkami z Symbianem sprawiło, że Japończycy byli już "przygotowani" na nadejście inteligetnych komórek z iOS czy Androidem.

Ludzie z Fundacji Symbian doszli do wniosku, że skoro ludziom nie podoba się interfejs uzytkownika Symbiana to poinformowali o tym że zmienią go. Problem okazał się bardziej prozaiczny, nie można zmienić interfejsu użytkownika bez napisania na nowo systemu. Pierwsza koncepcja Symbiana^4 polegała na tym, że trzeba by napisać kod interfejsu uzytkownika od nowa co powodowałoby konflikt z istniejącymi aplikacjami. Takie podejście zostało bardzo źle przyjęte przez społeczność użytkowników Symbiana, którzy pamiętają czasy przejścia z S60 2nd na S60 3rd. Programistom Symbiana nie uśmiechało się porzucanie AVKONa. bo przypominało to losy UIQ. Szybki rozwój zespołu odpowiedzialnego za Qt na Symbianie sprawił, że ciężar rozwoju Qt na Symbiana przeniósł się do zewnętrznych firm ściśle współpracujących z Nokią na zasadach kontraktowych (Digia, Tieto, Comarch,  Cybercom). W maju 2010 roku w Nokii nastąpiła pewna zmiana polityki wobec dalszego rozwoju Symbiana. CTO Nokii został Rich Green któremu rewolucyjne zmiany w interfejsie użytkownika nie były mu na rękę, więc zatrzymał tempo rozwoju nad UIEMO przez Orbit Team (Daniel Zucker i Ray Rischpater). Okazało się  że konserwatyzm programistów był tak silny że zmieniono podejście.  Odejście szefa fundacji Lee Williamsa to konflikt nad wizją rozwoju interfejsu użytkownika. Szef fundacji widział potrzebę zmiany w interfejsie użytkownika, to po zmianie szefa Nokii na Stephana Elopa już nie był taki pewny że to zrealizuje. Nie wiem co Scott Weiss zrobi sam bez wsparcia  Elizabeth Dykstra-Erickson i Sara Berg.

Nowe podejście do Symbiana wyszło z założenia, że skoro tyle lat interfejs użytkownika dobrze spełniał swoje zadania (szczególnie na komórkach z klawiszami). Programiści wolą nadal korzystać z AVKONA i jak ostatnio z Qt wybrano strategię ukrywania Symbiana, a w przyszłości ponowne jego zamknięcie do spółki z Japończykami. Rolą fundacji Symbiana będzie tylko informowanie świata o rozwoju Symbiana ale tak naprawdę dalszy rozwój fundacji będzie przypominał rozwój fundacji Eclipse czy fundacji Mozilla.

A jaki był problem prac nad interfejsem użytkownika? Sympatycy Fundacji Symbian mają poważny problem w rozwijaniu różnych projektów na przykład przeniesienia Homescreena z Symbiana^3 do wersji z S60 5th Edition. Te zmagania można było poczytać na  forum dyskusyjnym. Ten wątek jest pasjonujący. Głównym problemem były się zmiany w API jądra Symbiana^3 co uniemożliwiło backportowanie (warto zwrócić uwagę na ten watek i wpisy w bugtraqu) . W tej sytuacji społeczność zainteresowała się tworzeniem nakładki na bazie Qt czyli Orbitem i Homescreenem Symbiana^4. Nie było to interesujące rozwiązaniem jeżeli chodzi o UI i UX. W Nokii zastały dalsze zmiany bo w zespole MeeGo zatrudniono Petera Skillmana jako szefa od UX. Sporo zmian spowodowało "zamrożenie" prac zanim nowi ludzie w Nokii odnajdą się.

Istotne jest też że proces prac nad Qt 4.7 do Symbiana w Nokii N8 dopiero się rozpoczął. Do tej pory Orbit i jak Direct UI opierały się na tym co maiło do zaoferowania Qt.4.6.3 Teraz dzięki nowym możliwościom QtQuick  i jak QtWebKit 2.0 specjaliści od UX mogą na nowo zdefiniować UI. Powoduje to pewien problem zależność UI od aktualnego stanu rozwoju Qt. Jedynym rozwiązaniem jest "ukrycie Symbiana" polega to na tym, że można zostawić AVKONa bez zmian, co pozwoli to na uruchamianie starszych aplikacji. Natomiast użytkownik będzie widział nową nakładkę użytkownika bądź w razie czego ją zmieniał tak jak zmienia się motywy na Symbiana.  Gdyby API HomeScreen było bardzo rozbudowane na poziomie interfejsu API a programiści mogliby mieć dowolność w tworzeniu wyglądu. W praktyce oznacza tylko tyle że załadowaniem plików zasobów sterujących interfejsem użytkownika będzie odpowiadać inny silnik dziedziczący od  API AVKONa. Jest to trudne, ale konieczne i możliwe do zrealizowania co pokazały takie firmy jak TAT (silnik Kastor) czy SPB (nakładka Mobile Shell), bądz Acrodea (silnik Vivid)

Można też zauważyć coś dziwnego: absencję Nokii w pracach nad stworzeniem nowego API który miały stać się API dla nakładek. Japońska firma Acrodea forsuje rozwiązanie zwane Common UI Framework
(więcej na tym wątku forum). Faktyczne przyjęcie propozycji Japończyków w Fundacji Symbian wywołało pewne zaniepokojenie w Nokii (w sumie Nokia wstrzymała się w głosowaniu) Japoński framework Vivid UI miał być obok Qt i TAT Kastora jako podstawa do budowy nakładek na Symbiana.

Ciekawostką jest przejęcie przez firmę HTC francuskiej firmy Abaxia dla której w Mińsku w Białorusi w firmie BRLSoft pracują tacy inżynierowie od UI Symbiana: Organ Modeniz, Alexander Zolotarev Vadim Abrossimov. Bardzo możliwe, że HTC zainteresuje się Symbianem.

wtorek, 3 sierpnia 2010

Szablon aplikacji Qt Quick na Symbiana

Tak jak wcześniej zauwazyłem, nie można uruchamiać aplikacji Qt Quick w sposób skryptowy. Co oznacza że dla Symbiana trzeba napisać szablon dzięki któremu będzie można testować działanie kodu Qt Quick w QML.

Tworzymy folder Szablon ( u mnie to jest na wirtualnym Windows XP w Windows 7 pod c:\Projekty\Szablon). Tworzymy plik projektu main.pro

# jakich bibliotek Qt chce się uzyć
QT       += core gui declarative
# nazwa aplikacji 
TARGET = Szablon
# informujemy że tworzymy aplikację Qt na Symbiana
TEMPLATE = app
# pliki żródlowe 
SOURCES += main.cpp
# pliki nagłowkowe
HEADERS  +=
# pliki designera Qt
FORMS    +=
# inne pliki używane w Qt (szczególnie pliki QML)
OTHER_FILES = main.qml
# plik zasobów zawierajacy pliki QML
RESOURCES = main.qrc 
# informacje które są potrzebne dla kompilatora dla Symbiana
symbian {
# plik ikonki programu 
ICON = icon.svg
# biblioteki potrzebne do zablokowania położenia aplikacji w orientacji poziomej
LIBS += -lcone -leikcore -lavkon
}
Tworzymy plik zasobów main.qrc
<RCC>
<qresource prefix="/">
<file>main.qml</file>
</qresource>
</RCC>

Zrobimy plik main.qml z kodem QML

import Qt 4.7
 
Rectangle {
    anchors.fill: parent; color: "black"
 
    Rectangle {
        anchors.centerIn: parent
        width: 100; height: 40; radius: 5; color: "lightgray"
 
        Text { anchors.centerIn: parent; text: "Koniec"; color: "black" }
 
        MouseArea {
            anchors.fill: parent
            onClicked: Qt.quit()
        }
    }
} 

Na koniec pozostał kod wykonywalny z main.cpp

#include <QtGui/QApplication>
#include <QDeclarativeView>
#include <QDeclarativeContext>
#include <QDeclarativeEngine>
#include <QGraphicsObject>

// biblioteki potrzebne do zablokowania zmiany orientacji
#ifdef Q_WS_S60
    #include <eikenv.h>
    #include <eikappui.h>
    #include <aknenv.h>
    #include <aknappui.h>
#endif

// funkcja main uruchamiająca aplikację
int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
   // kod AVKON blokujący orientację 
#ifdef Q_WS_S60
 CAknAppUi* appUi = dynamic_cast<CAknAppUi*> (CEikonEnv::Static()->AppUi());
    TRAP_IGNORE(
        if(appUi) {
               appUi->SetOrientationL(CAknAppUi::EAppUiOrientationLandscape);
        }
    );
#endif
    QDeclarativeView view;
// będzie nam to potrzebne jak zechcemy uzywać innych bibliotek importowanych takich jak
// moduły WebView czy Particles
   view.engine()->addImportPath("./imports");          
// pobieramy plik z zasobów
     view.setSource(QUrl("qrc:/main.qml"));
// ustawiamy tryb zmiany rozmiaru
    view.setResizeMode(QDeclarativeView::SizeRootObjectToView);

#if defined(Q_WS_S60)
// ustawiamy na sztywno obszar gdzie będzie rysowane 
    view.setGeometry(QRect(0,0,640,360));
// wykonujemy pełne wyświetlenie
    view.showFullScreen();
#endif
// aplikacja ma zostać uruchomiona
    return app.exec();
}

Do plików w tym folderze trzeba dodać jakaś ikonkę SVG 44x44 z programu inkspace i nazwać ją icon.svg

Pozostało więc popracować nad kompilacją Uruchomiłem Start -> Programy-> Qt for Symbian by Nokia v4.7.0-beta2 (S60) -> Qt for Symbian Command Prompt i wpisałem

cd c:\Projekty\Szablon

następnie zrobiłem pliki potrzebne do komplikacji wpisując

gmake

następnie robię kompilację pod emulatora

make debug-winscw

uruchamiam emulatora

make run

zamykam emulatora i sprzątam po emulatorze poleceniem

abld reallyclean winscw udeb

następnie ustawiam pod kompilację na komórkę

make release-gcce

po skompilowaniu trzeba zrobić paczkę

make sis QT_SIS_OPTIONS=-u

zrobiłem nie podpisaną paczkę i trzeba ją podpisać

signsis -s szablon.sis szablon.sisx c:\key\imobile.cer c:\key\imobile.key

Instalujemy to na komórce i na koniec pozostaje posprzątanie po kompilacji

abld reallyclean gcce urel

a może jednak lepiej będzie używać polecenia do czyszczenia wszystkiego (łącznie z paczkami)

make distclean

Na zakończenie przyszła mi myśl, że prawdziwego programistę można poznać po tym jak sprząta po sobie.

niedziela, 1 sierpnia 2010

Qt Quick na Symbianie

Za jedną z najciekawszych technologii uważam QtQuick. Jest to nowy język opisu interfejsu graficznego wzorowany na CSS 3. Składa się z biblioteki Declarative i z języka QML. Ale mnie najbardziej zastanawiało jak będzie można programować w tym pod Symbianem. Przeczuwałem że mogą być problemy z tego powodu że Qt Quick tak naprawdę nie potrzebuje kompilacji kodów, więc przypominało mi to sytuację z programowaniem na Pythona czy m-shell. Wystarczy skompilować program qmlviewer i prawie wszystkie programy Qt Quick uruchamiać przez niego. Ale pomyślałem że takie rozwiązanie to przeczy zasadom bezpieczeństwa w Symbiaznie. Zaintrygowany  postanowiłem sprawdzić jak to rozwiązano.

Ściągnąłem Qt 4.7 beta 2 na Symbiana i zainstalowałem to na wirtualnym Windows XP.pod taką ścieżką C:\Qt\4.7.0.b2. Postanowiłem sprawdzić jak pójdzie mi kompilacja z linii poleceń.
Jest w menu Start -> Programy-> Qt for Symbian by Nokia v4.7.0-beta2 (S60) -> Qt for Symbian Command Prompt. Uruchomiłem to ale zaciekawiony byłem co to za skrót i okazało się że wykonuje on takie działanie: C:\WINDOWS\system32\cmd.exe /K C:\Qt\4.7.0.b2\bin\qtenv.bat Pojawiło mi się czarne okno do  wpisywania z linii poleceń. Napisałem tak

cd C:\Qt\4.7.0.b2\tools\qml

byłem już w folderze programu qml wpisałem

qmake

Wygenrowało mi pliki abld.bat, makefile i jak *.mmp. Postanowiłem najpierw zobaczyć jak dziala w emulatorze i wpisałem

make debug-winscw

zrobiło mi binarną wersję na emulatora i pozostało mi uruchomić. Wpisałem

make run

po jakimś czasie emulator uruchomił się z tym programem. Ale zreflektowałem się że w emulatorze nie mam plików z QtQuick. Zamknąłem emulator i przegrałem zawartość z folderu C:\Qt\4.7.0.b2\examples\declarative\animation do folderu C:\S60\devices\S60_5th_Edition_SDK_v1.0\epoc32\winscw\c\animation i uruchomiłem jeszcze raz emulator poleceniem

make run

i uruchomił mi sie program co sprawiło że mogłem wybrać ścieżkę do uruchomienia c:/animation/basic/color-animation.qml i zadziałało. No to teraz skompiluję qml na moją komórkę XM5800
Najpierw doinstalowywałem na kartę pamięci komórki następujące biblioteki w tej kolejności
C:\Qt\4.7.0.b2\qt_installer.sis
C:\Qt\4.7.0.b2\qt.sis
C:\Qt\4.7.0.b2\qtwebkit.sis
C:\Qt\4.7.0.b2\qt_demos.sis
C:\Qt\4.7.0.b2\fluidlauncher.sis

Po zainstalowaniu pomdlałem że znajdę jakieś programy typu oparte na QML. i zalazłem w folderze QtDemos takie jak qmlcalculator, qmlclocks, qmldialcontrol, qmleasing, qmlflickr, qmlphotoviewer, qmltwitter. Gdy uruchomiłem  qmldialcontrol to zauważyłem że zmiana położenia komórki blokuje program. doszedłem do wniosku że te programy wykorzystujące QML są jakby osadzone. To spróbuję skompilować na komórkę QML. Wróciłem do okna linii poleceń i wpisałem

make  release-gcce

i skompilowało się. Pozostało zrobić paczkę i wpisałem, żeby zrobiło mi paczkę bez podpisu

set QT_SIS_OPTIONS=-u

a potem

make sis

i pojawił się taki komunikat:


Auto-patching capabilities for self signed package.

Patching package file and relevant binaries...

Executing elftran -vid 0x0 -capability "NetworkServices ReadUserData" /S60/devic
es/S60_5th_Edition_SDK_v1.0/epoc32/release/gcce/urel/qmlviewer_patched_caps.exe

NOTE: A patched package should not be used for distribution!

Processing qmlviewer_release-gcce.pkg...
Created  qmlviewer_unsigned.sis.


Wygląda na to że nie można używać programu qmlviewer w dystrybucji.
Podpisałem swoim certyfikatem

signsis -s qmlviewer_unsigned.sis qmlviewer.sisx c:\key\imobile.cer c:\key\imobile.key 

Po zainstalowaniu tego okazało się że nie działa tak jak bym się spodziewał. Uruchamia się ale nie można wybrać żadnego pliku QML a nagłówek tytułowy wskazuje na plik zasobów content/Browser.qml, który nie mógł zostać uruchomiony z powodu restrykcji z dostępem do plików w Symbianie. Zrozumiałem że po zaprogramowaniu plików QML trzeba będzie pakować je w pliki zasobów oraz osadzać je jakby wewnątrz programu. Ale jak? Pewną wskazówkę dawały mi przykłady

C:\Qt\4.7.0.b2\demos\embedded\qmlcalculator
C:\Qt\4.7.0.b2\demos\embedded\qmlphotoviewer
C:\Qt\4.7.0.b2\demos\embedded\qmltwitter

Testowałem tworzenie takich paczek z powyższymi przykładami. Wyglądało to obiecująco ale nie do końca.
Nie wiem jak będę tworzył pliki QML z kodowaniem unicode (utf-8), bo przykłady dotyczą kodowania Latin1. Zauważyłem też że przestają przykłady działać jak zmieni się orientację W sumie to można już myśleć o pisaniu kolejnego artykułu o tym jak zaprogramować własną aplikację Qt Quick, pomimo że to jest jeszcze wersja beta 2 i będziemy jeszcze czekać na wersję Qt 4.7 RC

sobota, 31 lipca 2010

Programowanie Symbiana pod Windows 7

Zainstalowałem całe środowisko programistyczne na Symbiana, ale okazało się że nie działa tak jakbym się spodziewał. Szczególnie kompilacja z poziomu Carbide.C++ nie kompilowała kodu. Emulator epoc.exe wywalał się. Polecenie devices wymagałoby zmieniania ręcznego pliku konfiguracyjnego. W tej sytuacji zrozumiałem że potrzebna mi będzie maszyna wirtualna z Windows XP.

Użytkownicy wersji Windows 7 Proffesional, Ultimate i Enterprise mogą zainstalować tak zwany tryb XP. Ten tryb opiera się na zainstalowaniu oprogramowania Windows Virtual PC i jak uaktualnienia do trybu XP. Więc w takim przypadku pod Windows 7 Home Premium sam zainstalowałem Windowsa XP na Windows Virtual PC Po zainstalowaniu Windowsa XP musiałem ściągać ponad 90 poprawek Następnym krokiem było skonfigurowanie wirtualnej maszyny o dodatek RemoteApp

Poszukałem w internecie ActivePerl-5.6.1.635-MSWin32-x86.msi i ściągnąłem. Po zainstalowaniu sprawdziłem czy mam zainstalowane co wystarczyło mi zrobić z linii poleceń wpisać polecenie

perl.exe -version

This is perl, v5.6.1 built for MSWin32-x86-multi-thread...

Kolejny krok to instalacja na wirtualnym XP środowiska wykonawczego Javy czyli JRE ze strony Oracle i po zainstalowaniu wpisałem z linii poleceń

java.exe -version

i otrzymałem coś takiego

java version "1.6.0_21"
Java(TM) SE Runtime Environment (build 1.6.0_21-b07)...

Następnie zasinstalowałem SDK S60 5th Edition SDK for Symbian OS
(zakładając ze jesteśmy zarejestrowani w Forum Nokia). Instalując SDK trzeba się upewnić że wirtualny Windows XP obsługuje na dysku partycje NTFS i jest uruchomiony jako 32-bitowy. Podczas instalacji jesteśmy proszeni o zainstalowanie CSL Arm Toolchain.

Po zainstalowaniu SDK zacząłem sprawdzać czy wszystko jest we właściwym miejscu w zmiennych środowiskowych. Wpisałem z linii poleceń

devices

pojawiło sie

S60_5th_Edition_SDK_v1.0:com.nokia.s60 - default

Następnie wpisacełem z linii poleceń epoc.exe U mnie to uruchamiało się i znikało. Pomyślałem że to problem ze nie mogę jeszcze uruchamiać emulatora bo nie mam zainstalowanego Carbide.C++

Więc ściągnąłem Carbide.C++ a następnie zainstalowałem. Po instalacji potrzebowałem poprawne skonfigurować Carbide.C++ Pierwszą rzeczą to było aktualizacja do wersji 2.6 z menu i wybrałem Help -> Check for updates. Po zainstalowaniu aktualizacji trzeba było zrobić restart Carbide.C++. Następną rzeczą było uruchomienie ustawień konfiguracyjnych
C:\Symbian\Tools\ADT_1.4\Carbide.c++\x86Build\env_switch\env_update.exe
i jak zainstalowanie kompilatora Nokii dla emulatora.

Uruchamiając IDE trzeba pozmieniać pewne domyślne ustawienia. Z menu wybierałem Windows -> Preferences. Pojawiło się okno Preferences, gdzie po lewej stronie miałem takie drzewko i wybierałem stamtąd węzeł Carbide.c++ i podwęzeł Platform Filtering Preferences.
Przy EKA2 Platforms pozostawiłem tylko Emulation (WinSCW) i GCCE (wszystko co ma w nazwie ARM odznaczyłem). Następnie sprawdziłem czy Carbide.C++ wykryło odpowiednią wersję S60 SDK to wybierałem węzeł SDK Preferences i tam zobaczyłem że Carbide dobrze wykrył S60 5th Edition SDK for Symbian OS. Zamknąłem i uruchomiłem z menu Carbide File -> New -> Symbian OS C++ Project i pojawiło się okno z którego wybrałem węzeł S60 -> GUI Application i przeszedłem krok po kroku wszystkie okna kreatora. Jak kreator zrobił całą strukturę folderów to w menu wybrałem Project -> Build Configuration -> Manage... i pojawiło się okno Add/Remowe Carbide Build Configuration i zaznaczyłem tylko Emulator Debug i Phone Release.
Zanim zacząłem kompilację to ustawiłem zakładkę Console na aktywną i wybrałem z menu Projekt Build All Configurations. Wtedy Carbide.c++ skompilował kod na wersję na komórkę oraz zrobi paczki w folderze sis a także zrobił wersję binarną dla emulatora. Komunikaty podczas kompilacji obserwowałem w zakładce Console. Uruchomiłem emulator przez wybranie z menu Run ->Run. Po kilku minutach uruchomił mi się emulator ale nale przestał działać. Trzeba liczyć się z tym że przy każdym uruchamianiu emulatora pojawiał się komunikat Alertu zabezpieczeń systemu Windows o pozwolenie na uruchamianie aplikacji w emulatorze. Więc wyłączyłem firewall wirtualnego Windowsa XP. Po przeszuakniu Forum Nokia przyczyny tego problemu doszedłem do wniosku że trzeba będzie sprawdzić komunikaty jakie zapisuje emulatror w pliku epocwnd.out Wszedłem w menu Start -> Uruchom i wpisałem %temp% Po znalezieniu pliku epocwnd.out przeanalizowałem go i wysłałem zapytanie na Forum Nokia to dostałem uwagę żebym wyłączył sterownik karty dźwiękowej.
Wszedłem w ustawienia Virtual PC dla wirtualnego Windowsa XP i przy ustawieniach intergacji odfajkowałem udostępnienia Audio. Zrobiłem restart wirtualnego PC i po tych zmianach wpisałem znowu z linii poleceń epoc.exe to tym razem uruchomił się bez problemu. Dokonałem rejestracji emulatora. Uruchomiłem Carbide.C++ i emulator zadziałał.
Denerwowało mnie że przy starcie Carbide.C++ informował mnie że nie może połączyć się z komórką. W tej sytuacji zainstalowałem Nokia PC Suite w wirtualnym Windowsie XP. Gdy podłączyłem Nokię XM 5800 to z menu wirtualnego Windowsa XP trzeba było wybrać USB ->Nokia 5800 Dołącz. W tej sytuacji komórka była już przygotowana do debugowania.

Zaciekawiło mnie jak będzie wyglądała kompilacja z linii poleceń. Uruchomiłem z linii polecen:

cd C:\S60\devices\S60_5th_Edition_SDK_v1.0\S60CppExamples\Note\group

potem wpisałem

bldmake bldfiles

i zrobił się plik abld.bat

Następnie wpisałem

abld build gcce urel

co powinno było mi zrobić kompilacje binarną na komórkę. Jak wszystko poszło w porządku to wpisuję

cd C:\S60\devices\S60_5th_Edition_SDK_v1.0\S60CppExamples\Note\sis

a potem

makesis note_gcce.pkg

zrobił się plik note_gcce.SIS

Następnie zrobiłem folder c:\key gdzie trzymam certyfikaty developerskie od chińczyków

wróciłem do okna i z linii poleceń napisałem

signsis -s note_gcce.sis note_gcce.sisx c:\key\imobile.cer c:\key\imobile.key

otrzymałem plik note_gcce.sisx do zainstalowania w komórce.

Na koniec pozostało wyczyszczenie tego co wygenerowałem podczas kompilacji

cd C:\S60\devices\S60_5th_Edition_SDK_v1.0\S60CppExamples\Note\group\

i wpisałem

abld reallyclean gcce urel

Pozostało sprawdzenie czy działa kompilacja pod emulator i wpisałem

abld build winscw udeb

następnie wpisałem

epoc.exe

i uruchomił mi się emulator

poszukałem programu Note i odpaliłem i zadowolony zamknąłem emulator

i pozostało posprzątanie więc wpisałem

abld reallyclean winscw udeb

tym poleceniem wyinstalowałem z emulatora program.
Mając już dobrze zainstalowane SDK i skonfigurowane środowisko programistyczne to mogłem już myśleć o programowaniu na Symbiana. Zamknąłem wirtualnego Windowsa XP w poczuciu dobrze zrobionej roboty.

niedziela, 25 lipca 2010

Ludzie Nokii

Nokia ogłosiła 22 lipca dane o sprzedaży w drugim kwartale 2010. Podsumowując wyprodukowała 24 mln inteligentnych komórek co przyniosło jej 3429 mln Euro przychodów przy założeniu, że średnia cena inteligentnej komórki to 143 Euro. Wnioski? Pierwszy raz przychody z sprzedaży inteligentnych komórek były większe niż ze zwykłych. Co najważniejsze Nokia utrzymała swój poziom udziałów na rynku inteligentnych komórek, pomimo złej passy medialnej wokół Symbiana i coraz silniejszej konkurencji (Android, RIM) oraz coraz mniejszej sprzedaży w Ameryce Północnej.

Natomiast przez internet przeszły plotka puszczona przez amerykańską prasę o szukaniu nowego szefa Nokii przez radę zarządzająca. Okazało się że ta plotka miała swoje podstawy w wydanej niedawno po fińsku książce Uusi Nokia. Autorem tej książki jest Johani Risku. Ten człowiek w Nokii był szefem zespołu który tworzył interfejs S60 dla Symbiana w latach 2001-2002. W Nokii pracował do sierpnia 2009. Obecnie prowadzi własną firmę. Ta książka jest bardzo cenna i pokazuje aktualny stan w jakiej się znalazła Nokia. Autor nawet założył bloga dla tej książki (po fińsku). Najciekawszy artykuł o tej książce napisał Andrew Orlowski z brytyjskiego The Register.

W firmie Nokia widać na dłoni cechy które są charakterystyczne dla koorporacji. Przerost biurokracji. Czy ktoś zna tych ludzi z Nokii? Takich jak: Marko Ahtisaari (odpowiada ze design i UX), Petteri Alinikula (szef laboratorium w Helsinkach), Timo Ali-Vehmas (odpowiada za współpracę w branży), Mark Durrant (odpowiada za PR), James Harper (odpowiada za marketing technologii), Sari Ståhlberg (odpowiada za UX z Accessibility), Jo Harlow (odpowiada za marketing inteligentnych komórek w US), Dilip Kenchammana (odpowiada za Qt w Nokii), Kari Tuutti (koordynuje kampaniami reklamowymi), Henry Tirri (szef badaczy w Nokii), Juha-Pekka Sipponen (odpowiada za produkcję zwykłych komórek), Mark Ollila (odpowiada za App Wizard Ovi), Axel Meyer (odpowiada za projekty inteligentnych komórek z serii N), John Loughney (odpowiada za rozwój Maemo OS), Ukko Lappalainen (odpowiada za rozwój biznesowych telefonów), Alex Lambeek (odpowiada za marketing zwykłych komórek), Janne Jakobsen (szefowa działu multimedialnych inteligetnych komórek), Quinn Jacobson (lider badaczy od GPS), Ari Jaaksi (odpowiada za rozwój MeeGo), Michael Halbherr (odpowiada za Ovi Map razem z Gil Teissier), John Clarke (szef działu IT), Péter Boda (naukowiec odpowiedzialny za interfejs użytkownika za pomocą gestów), Nikki Barton (odpowiedzialna za interfejs użytkownika w cyfrowych mediach), Rebecca Allen (artystka, szefowa centrum badawczego-multimedialnego Nokii w Hollywood), Purnima Kochikar (szefowa Forum Nokia).

Wygląda na to że Ci menadżerowie odpowiadają w pewien sposób za to gdzie teraz jest Nokia? Tak ci którzy teraz są na szczycie kariery w Nokii, staja się bardzo zachowawczy, Nokia ma największy potencjał badawczo rozwojowy, setki patentów. Wystarczy spojrzeć na listę naukowców czym się zajmują się. Pomimo tego sporo wynalazków czy idei nie zostało zaimplementowanych. (na przykład elementy 3D w interfejsie użytkownika czy interfejs NFC w smartfonach). Im większa biurokracja i skomplikowana budowa inteligentnych komórek powoduje problemy z komunikacją

Sam Risku przytacza anegdotkę w której poprosił o to żeby okno dialogowe było mniejsze o 5 mm. to dostał odpowiedz, że nie mogą znaleźć kodu który by pozwalał na zmniejszenie okna dialogowego bo to wymaga przeszukania 2 milionów linii kodu. Dzisiaj to wywołuje uśmieszek politowania wśród programistów Symbiana takich jak Jan Ole Suhr a nawet Chris Redpath znalazł kod który za to odpowiada w ciągu 5 min co wywołało podziw.

Innym przykładem było to że tworząc serwisy internetowe Ovi menadżerowie do końca nie wiedzieli jak to rozwijać, gdy kierownictwo Nokii nie potrafiło korzystać z mobilnego internetu. Co tłumaczy taką długą stagnację w rozwijaniu przeglądarki internetowej w komórkach Nokii

Cechą biurokracji jest zbieranie wszelkich danych i analizowanie je. Często serwisy internetowe Nokii są tak zaprojektowane że użytkownicy muszą przechodzić testy A/B witryny internetowej, użytkownicy mają do wypełniania jakieś skomplikowane formularze.

Jeden z problemów w Nokii jest "narzucenie" projektantom designu filozofii Contextual Design wg Karen Holtzblatt, która zakładała dogodzenie użytkownikowi podczas projektowania. To ma sens w wzornictwie przemysłowym, ale nie ma zastosowania do innowacji. Bo jak produkt innowacyjny może zostać przetestowany przez użytkowników jak jego nie znają? Podobnie zauważył że lepszy efekt daje zawężenie portfolio i dostarczenie do sprzedaży wyspecjalizowanych produktów, co już Nokia prawie zrealizowała. Natomiast nadal pozostaje problem wypuszczania do sprzedaży podobnych do siebie modeli co sprawia że potencjalni klienci mają problem z wyborem właściwego modelu dla siebie. W świecie technologii klienci nie lubią mieć wyboru. Wolą jak ktoś im to poleci czy zarekomenduje.

Bardzo duże niebezpieczeństwo dla Nokii wynika z inercji. Brakuje przyspieszania. Często wewnętrzne projekty są anulowane bo nie nadążają z czasem, a do nowych projektów menadżerowie nie są przekonani. Skutkuje to sytuacją w której nie wykorzystuje się potencjału pracowników.

Od 2006 roku za działania marketingowe Nokii przejmowały firmy, które z marketingiem wysokich technologii nie miały do czynienia. Spowodowało co że masowa reklama Nokii bardziej przypominała reklamę produktów spożywczych. Często też brakowało spójnej koncepcji jak mają wyglądać serwisy internetowe, gdzie jak wspomniałem ciągle eksperymentowano.

Risku zasugerował stworzenie nowego stanowiska Chief Innovation/Creative/Design Officer który byłby równy rangą CEO. Problem w zarządzaniu Nokią wynika też w tym ze w latach 2003-2008 amerykańscy udziałowcy Nokii próbowali za bardzo wpływać na styl pracy w Nokii. Silnie postuluje żeby na tym stanowisku został ktoś kto jest Finem i zna od środka Nokię. Ale wskazuje też na istnienie Zasady Petera która mówi, że w organizacji hierarchicznej każdy awansuje aż do osiągnięcia własnego progu niekompetencji.

Sporo dostało się kadrze zarządzającej Nokii. Mary McDowell była szefową działu strategii programistycznej, ale sama nic na tym nie znała się. Trzeba było przejąć firmę Symbian i Trolltech. I zapewnić im dużą niezależność. Tero Ojanperä który jest na stanowisku CTO to jednak Nokia nie wprowadziła żadnych innowacyjnych technologicznie produktów od 2008, najgorsze jest to że nie ma wiarygodności w branży multimedialnej. Właściwie największym przykładem niekompetencji wg Risku jest Marko Ahtisaar. Wystarczy przejrzeć jego wpisy na Twiterze pod nickiem @moia Właściwie to on odpowiada za to ze nic nie dzieje w interfejsie użytkownika. Olli-Pekka Kallasvuo jest uważany za dobrego menadżera, ale czuć jego niekompetencję gdyby miał zarządzać inżynierami. Najbardziej medialną osobą Nokii jest Anssi Vanjoki, (raczej to też ma związek z jego aktywnością charytatywną wśród osób z niedosłuchem). Jedyne co można mieć zastrzeżenie do niego to czy jest w stanie być elastyczny i szybko dostosowywać się do szybko zmieniających się wymagań rynku.

Ponieważ media amerykanskie są nieprzychylne Nokii to w tej sytuacji były pracownik Nokii Tomi T Ahonen na swoim blogu napisał artykuł Obituary for OPK: Wall Street is a Cruel Mistress - Nokia searching for CEO. W tym artykule wspomniał 6 czynników które mają wpływ na negatywny wymiar spojrzenia na Nokię ze strony amerykańskich mediów.
Sytuacja Nokii w 2006 była taka miała inna konkurencję: Motorolę z jej telefonem Rokr i SonyEricssona z serią Walkman. Inteligentne komórki wtedy miały zastosowanie główne biznesowe.
Nokia postanowiła wejść na rynek amerykański z Symbianem. Symbian był wtedy tworzony na zasadzie partnerstwa pomiędzy udziałowcami. Innym słowem wtedy Nokia nie miała wpływu na to jaki jest Symbian. Idea Finów była taka żeby współpracować przy Symbianie, na efekty współpracy nie trzeba było długo czekać. W 2006 roku Nokia miała 48% udziałów w produkcji inteligentnych komórek i cały rynek miał wtedy wyprodukować 80 mln inteligentnych komórek. W 2007 roku Apple rozpoczęło masową marketingowe działania związane ze sprzedażą iPhone. Nokia wtedy sprzedawała z powodzeniem N95. Stało się coś dziwnego. Marketing Apple zrobił swoje, ludzie na giełdzie amerykańskiej przestali interesować się Nokią. Wtedy amerykańskie media często pisały o końcu rozwoju RIM Blackberry (co nie było prawdą). Okazało się że mało kto liczył się z faktami. Okazało się ze nagle potrzebny byłby ktoś kto byłby dla Nokii showanamen. CEO Nokii nie nadawał się do tej roli. Styl zarządzania Finów to współpraca i działanie w ciszy i spokoju z dala od mediów.

Dzisiejszy sukces dużo zależy od działań w sferze Public Relations. Nokia potrafiła sprzedawać dużo tanich komórek po 25 dolarów w biednej Afryce czy najtańsze modele inteligentnych komórek po 200 dolarów i jeszcze mieć zyski Nokia wprowadziła ekologiczne procesy produkcji komórek co jakoś to medialnie nie trafia do analityków. Analitycy często zapominali że porównując Apple z Nokią to porównywali rynek dóbr luksusowych z rynkiem dóbr pierwszej potrzeby. Wywołuje to silną presję na dostarczenie przez Nokię inteligentnych komórek o jeszcze lepszych parametrach. Nawet gdy technologicznie Nokia była lepsza od iPhone to media często brały argument z tego ile ludzi korzysta z internetu do przeglądania stron internetowych i na podstawie tego argumentu formułowano osądy że Nokia straci pozycję lidera. W Nokii mało kto przywiązywał wagę do przeglądania internetu w inteligentnej komórce.

Kolejny problem analityków to przekonanie że produkcja inteligentnych komórek jest bardzo dochodowa. Owszem początkowo Nokia miała wysoką marże (21% w 2007 a w 1Q 2010 zaledwie 4%). Ale trzeba pamiętać że Nokia to nie odniosła strat w produkcji zwykłych komórkach (i Samsung też) Motorola i jak SonyEricsson globalnie poniosły straty i jak spadek udziałów. Lata 2008-1009 to lata kryzysu Nokia właściwie przetrwała te czasy za cenę mniejszych zysków. HTC, Motorola, SonyEricsson, Palm miały duże straty. W sumie największe straty podczas kryzysu miały działy tworzące rozwiązania dla operatorów telekomunikacyjnych (NokiaSiemens Networks miała duże straty, ale Nokia postanowiła jeszcze przejąc analogiczny dział od Motoroli. Tak więc w tej branży liczącym się konkurentem Nokii pozostał Ericsson. To oznacza że Nokia w czasach kryzysu zamiast zajmować się wprowadzaniem programów oszczędnościowych czy redukcją załogi tylko dlatego żeby mieć lepsze zyski Nokia poprzez przejmowanie firm takich jak Symbian, czy Trolltech inwestuje w ludzi i w technologie. To jest główna różnica w stylu zarządzania Finów od Amerykanów.

Media i analitycy (szczególnie amerykańscy) wręcz nienawidzą Symbiana. Skoro Microsoft, RIM, Apple, Google, Palm mają własny system operacyjny to dlaczego Nokia dalej popiera Symbiana? Odpowiedz jest prosta bo ten system operacyjny nie wymaga mocnych procesorów i sprawia że produkcja inteligentnych komórek jest tańsza, a co za tym idzie dłuższe działanie baterii. Reakcją Finów na iPhone było rozpoczęcie prac nad Symbianem S60 5th edition, który na rynek wszedł w 4Q 2008. Cały rok 2009 to czas na przygotowanie do udostępnienia kodu źródłowego Symbiana^3. Nokia wprowadzając otwarty model zarządzania nad kodem źródłowym pośrednio pozbywa się potencjalnych zysków. Nokii zależy na współpracy niż na rywalizacji. Przykładem jest przejęcie działu od biznesowych rozwiązań Symbiana przez Accenture od Nokii. Samsungowi taka rola do końca nie odpowiada i postanowił zainwestować w włąsny system operacyjny. Udostępnienie kodu źródłowego jest strategią długoterminowa, głownie mającą na celu rozbrojenie przeciwników którym nie podoba się Symbian. Jeżeli nie podoba się komuś w tym systemie to może włączyć się do społeczności i razem z nimi poprawić to co nie podoba się. W dłuższej perspektywie dojdzie do powstania firm tworżących wyspecjalizowane dystrybucje Symbiana (np: komercyjne wsparcie dla architektury Atom na x86). To co różni Symbiana od Androida jest to że zarządzanie kodem źródłowym jest jawne, dotyczy to głownie tego że programiści wiedzą czego mogą się spodziewać w następnych wersjach Symbiana. Dlaczego Symbian jest taki dobry to prawie nikt o tym nie pisze?

W tym dochodzimy do sedna problemu. Mało ludzi chce pisać o Symbianie, gdy wszyscy krytykują go. Trzeba rzeczywiście dobrze poznać ten system operacyjny zanim zacznie o nim pisać. A co dopiero pisać o programowaniu na nim. Wychodzę z założenia, że należy dobrze poznać to co się ma, niż iść za modą i wymieniać modele komórek na nowsze. Ponieważ Symbian jest mało znany w Ameryce Północnej,powoduje to że blogosferze amerykańskiej powstaje sporo mitów o tym systemie operacyjnym. Brak instytucjonalnego wsparcia ze strony Nokii powoduje frustrację wielu sympatyków OS Symbian i ich zniechęcenie. W takiej sytuacji Nokia skoncentrowała się na rozwijaniu Forum Nokia społeczności dla programistów. Szybko doszło do sytuacji w której setki ludzi którzy cheliby zacząć programowanie na Symbiana natrafiali na barierę krzywej uczenia się.
Brak wsparcia w samodzielnym uczeniu się Symbiana i fakt że dokumentacja Symbiana jest raczej dla tych którzy znają Symbiana, a książki do nauki Symbiana są napisane takim stylem akademickim co nie sprzyja dobrej opinii dla Symbiana. To co powinno nastawienie do Symbiana dużo zależy od blogerów i nieformalnych działań w środowisku programistów Symbiana. Polecam czytanie takich blogów jak Nokia Developers, czy blogi pisane przez Vishala Dharankara, czy Hendy Irawana. Bardzo dużym zainteresowaniem cieszy się inicjatywa Symbian Developer Cooperative, która chce skupiać ludzi profesjonalistów zajmujących się Symbianem. Są to jednak strony znane tylko w wąskim gronie ludzi, głównie programistów a nie wśród ludzi zajmujących się analizą rynku inteligentnych komórek. Ci analitycy i dziennikarze powinni czytać takie blogi jak Mobile Phone Development pisany przez Simona Judge, czy Communities Dominate Brands pisany przez Tomi T Ahonena bądź blog VisionMobile

Zazwyczaj problemy z amerykańskimi operatorami sprawiają że Nokia przez długie lata miała słabą pozycję w Ameryce Północnej. Trzeba pamiętać że o sukcesie inteligentnych komórek bardzo duży wpływ mają operatorzy i to oni często decydują o tym co mają wybierać ich klienci. OPK powinien często podróżować do Stanów Zjednoczonych dużo spotykać się z kadrą zarządzającą od amerykańskich operatorów telekomunikacyjnych i udzielać dużo wywiadów mediom amerykańskim. Stworzyć w Stanach Zjednoczonych centrum marketingowe w którym każdy kto chciałby na przykład nauczyć się programowania na Symbiana miałby tam darmowe lekcje i spotkania. Bardzo dobrą koncepcję byłoby organizowanie "Tour Nokia" cyklicznych objazdów z wykładami o tym czym jest Symbian. Owszem jest to kosztowne logistycznie. Myślę że warto zrobić "big comeback" Nokii w Stanach Zjednoczonych i skoncentrować się na wartości merytorycznej (a nie tylko części artystycznej).

Porażką Nokii był model N97. Nokia nie chciała dać wyłączność operatorom tylko sprzedawać bezpośrednio klientom. Tą samą drogą poszedł Google z Nexusem One i też poniósł klęskę w dystrybucji. Jest bardzo mało ludzi którzy chcieliby sami od razu kupić nowy model komórki. Trzeba pamiętać że że większość ludzi preferuje płacić raty za inteligentną komórkę w abonamencie. Inny problem polegał na tym że N97 sprzedawano pod hasłem marketingowym "zabójca iPhona". Zresztą to okazało się że to nie miało pokrycia z rzeczywistością. Użytkownicy iPhona często korzystali z przeglądarki internetowej która była często aktualizowana. Natomiast użytkownicy N97 nie mieli takiego komfortu. Wymusiło to na Nokii wprowadzenie planu aktualizacji przeglądarki internetowej OSS Browser. I zaproponowanie programistom tworzenie aplikacji internetowej na bazie QtWebKit. Ale niesmak pozostał.

Randall Arnold autor bloga Tabula Crypticum w swoim artykule How Nokia can retake the US Market… and more wskazuje na czynniki które mogą przyczynić się do powrotu Nokii na rynek amerykański. Obecność pasjonatów i ich wspieranie. Częste organizowanie spotkań dla programistów i firm w których pracują. Aktywizacja medialna w postaci masowej reklamy filmów dla profesjonalistów. Niechaj masowo inwestują w markę Qt czy Nokia bądź Symbian w świadomości amerykańskich firm i przedsiębiorców. Nokia ma uczyć ludzi korzystania z ich komórek a nie tylko pokazywać co mogliby zrobić z ich komórkami. Produkty na rynek amerykański powinny mieć nazwy zwyczajowe a nie tylko skróty. Zrobić nowy branding tak jak z modelami Vertu. W przypadku słabego zainteresowania na rynku amerykańskim dobrym rozwiązaniem jest subsydiowanie "klona" E71 i N900. Wsparcie ze strony Intela powinno pomóc Amerykanom wybierać ich swoje produkty i wypromować Intela jako "ojca" MeeGo, a Nokię potraktować jakby tylko producenta. Aktywniej prowadzić komunikację medialną w sytuacjach kryzysowych. (np: dlaczego nikt z rady zarządzającej Nokii nie potwierdził czy zaprzeczył plotce o tym że akcjonariusze chcą zmiany CEO). Zmniejszyć skutki działania biurokracji w zarządzaniu firmą ba często kadra zarządzająca nie ma do końca dobrego obrazu tego czym zajmuje się firma.

Najważniejsza rada od Randalla Arnolda to zaprzestanie prowadzenie polemik z niezadowolonymi klientami i reagowanie szybko na zaistniałe problemy. Często jest tak że ludzie nie umieją korzystać z komórek. Dlaczego ludzie mają tyle problemów z centrami naprawy komórek? Sensownym rozwiązaniem jest wprowadzenie programu wymiany komórek w centrach naprawy komórek, niż naprawianie samych komórek. Można sobie wyobrazić jak ktoś uszkodzi komórkę to oddaje komórkę a z serwisu naprawy czy od operatora dostanie nową komórkę. Nokia musi nauczyć się i operatorów też zarządzać skutecznie recyclingiem i komórkami z serwisów i ze zwrotów od klientów. Dużym plusem takiego programu jest to ludzie będą mieli motywację do pozbywania się starych komórek Nokii, a one same po "naprawie" mogą dalej trafić do dalszej oficjalnej sprzedaży. Skuteczny sposób na zadowolonych klientów.

Niestety tak to już jest że łatwo krytykować i wskazywać słabe strony. Rzadko ktoś zada wysiłek przemyślenia i opisze przyczyny oraz poda rozwiązanie. Dlatego uwagi ludzi którzy byli w Nokii (ale już teraz nie są) są bardzo cenne.

czwartek, 8 lipca 2010

Symbian^3 to potęga programistyczna do sześcianu

Prawie wszystkie informacje o Symbianie ^3 tak naprawdę dotyczą tylko tego kiedy Nokia wypuści swój model  inteligentnej komórki z tym systeme operacyjnym. Prawie nikt nie pisze o tym co nowego dla programistów wprowadzono w Symbianie^3. Obecnie mamy 3 główne źródła informacji dla programistów Symbiana ^3: Nokia Qt SDK, Nokia Symbian^3 SDK oraz Symbian Foundation Symbian^3 PDK.
Nokia Qt SDK zawiera w sobie Qt Mobility 1.0 co pozwala programistom już teraz programować możliwości Symbiana^3 w Qt. Myślę, że najciekawsze będzie jak programiści wypuszczą Qt Quick pod Symbiana i nowszą wersję QtWebkit 2.0 (z pełną obsługa HTML5 i CSS3 jako Webkit 528) w wydaniu Qt 4.7 Dodatkowo jeszcze będzie można będzie zdalnie kompilować kod na różne platformy i w tym na Symbiana^3. Głównym źródłem dokumentacji dla programistów jest Qt Reference Documentation. Qt dla Symbiana zawiera tylko cześć tego co jest możliwe do wykorzystania przez programistów Symbiana C++

Nokia Symbian^3 SDK to właściwa dokumentacja API wszystkich technologii które wchodzą w skład Symbian^3. W tym artykule skupię się na tym co nowego jest w Symbian^3

FreeWay to pozwala programistom na stworzenie aplikacji typu firewal czy hotspot. One-Click Connectivity to wbudowana funkcjonalność pozwalająca na szybkie łączenie się i przełączania się pomiędzy punktami dostępu. USB On-The-Go (OTG): pozwala na podpinanie masowych pamięci przez port USB inteligentnej komórki. AVRCP (Audio/Video Remote Control Profile) v1.4 pozwala na zdalne sterowanie urządzeniami Bluetooth w tym przypadku ma się dostęp do playlisty urządzenia. Obsługuje już obecnie pełny zestaw poleceń AT to co często było kiedyś używane w telekomunikacji do zdalnego sterowania urządzeniami. Ciekawsze możliwości są w zakresie obsługi geolokalizacyjnych API: Management Object (MO) for A-GPS, Application Processor Engine (APE) Centric Location Architecture. Location Based Services (LBS) SUPL Positioning Module (PSY) pozwala na bazie CelID okręslić położenie i przesłać dane SUPL v2.0. Wsparcie dla chipsetów GPSCost5.0D i GPSCost4.0D GPS pozwoliło stworzyć nowe A-GPS Nokia Positioning Engine (NPE) a także LBS SUPL Radio Resource LCS Protocol (RRLP) jako nowy sposób określania położenia wg stacji bazowych nowej generacji Aplikacje geolokalizacyjne bedą mogły wykorzystywać dane wg standardu Secure User Plane Location v 2.0.

W zakresie multimediów sprzętowo dodano API dla : Mobile TV DVB-H Receiver HAI, który pozwala na dostęp do telewizji mobilnej w sposób programistyczny. Jest też Fusion Player Application który jest główną aplikacją multimedialną w Symbianie. Niskopoziomowy dostęp do dźwięku jest możliwy dzięki API OpenMAX IL, który stanowi podstawę programistyczną do Multimedia Device Framework (MDF) do obsługi wyższego API: Thin Adaptation of A3F DevSound, który jest wysokopoziomową biblioteką do obsługi dźwięków. Kolejną nowością jest Image Processor library, który jest wysokopoziomowym API do obsługi obróbki obrazu głównie zdjęć. Camera API Extensions: zawiera wysokopoziomowe API do obsługi aparatu fotograficznego dzięki czemu będzie można tworzyć programy dla aparatu fotograficznego na przykład tworzące dopowiednio zdjęcia do dalszej obróbki HDR Symbian^3 posiada też zapis video wg kodeka H264, a także umożliwia zapis do dużych rozmiarów plików 3GP, 3G2 i MP4. Można też programistyczne dzięki Video Subtitle CRP ustawiać napisy w filmach video. Jest też wsparcie dla Dolby Digital Audio 5.1 co w praktyce oznacza możliwość podłączenia komórki do zestawu Hi-Fi poprzez port HDMI. Podobnie można poprzez ten port podłączyć się do telewizora i oglądać filmy czy prezentację z plików graficznych. Nie jest dla mnie pewne jak inne aplikacje mogłyby być wyświetlane przez HDMI na telewizorze. Istotne dla multimediów jest to że istnieje API Metadata Utility Library, dzięki któremu umożliwia odczyt czy edycję metadanych w pikach multimedialnych.

Z interfejsu użytkownika stworzono 6 ekranów na podgląd widgetów HomeScreen. Ponieważ za grafikę w pełni odpowiada procesor graficzny to do obsługi UI dodano nowe efekty i przejścia Nie wiadomo czy będzie można je zaprogramować we własnej aplikacji. Dodano takie możliwość powiększania 2 palcami, kinetyczne scrolowanie. Rozbudowano nowy interfejs do tworzenia motywów. Dzięki odtwarzaczowi telewizji mobilnej można oglądać telewizję nadawaną DVB-H (720pp przy 12 Mbps 30 kl/s). Przeglądarka plików graficznych oparta jest na Extended ICL JPEG API. Można też programistyczne odtwarzać i transmisję Radio FM. Dużą ciekawostką jest współdzielenie transmisji wideo w normalny sposób dla dzwoniącego, nie trzeba używać protokołu videokonferencji bo za całe zadanie odpowiada Multimedia Comms Engine API, które jeszcze nie jest udokumentowane podobnie jak Video Telephone API.

Wprowadzono istotne zmiany w podstawach działania systemu Symbian. Writable Data Paging (WDP) pozwala na dynamiczne zapisywanie pamięci RAM na dysku C co powoduje szybsze działanie wielu aplikacji w trybie wielowątkowym. W praktyce to oznacza że ilość pamięci RAM będzie tylko używana do aktywnej aplikacji Pozostałe aplikacje w tle dynamicznie będą zapisywane na dysku. Przypomina to działanie pliku stronicowania w Windows XP. Przepisano kod Symbiana tak żeby można było wykorzystać wielordzeniową architekturę taką jak ARM Cortex A9 zawierające rozwiązanie typu Symmetric multiprocessor (SMP). Serwer obsługujący system plikowy stał się 64-bitowy co pozwala na obsługę plików większych niż 2 GB.

Dodano nowy silnik Browser Application v7.2 (znany jako WebRuntime 7.2 bazujący na Webkit 528), który zawiera następujące cechy: silnik przeglądarki, możliwość dopasowywania funkcjonalności przeglądarki, możliwość programowania wtyczek, nawigacja dotykiem, dostęp do lokalnej zawartości, dopasowywanie strony WWW do rozmiarów wyświetlacza, Optical Finger Navigation (OFN), obsługa zawartości FlashLite 3.1, integracja z wyszukiwarkami, lepsze komunikaty z zakresu bezpieczeństwa, aktualizacja Platform Service API, wsparcie do wizualnego trybu przełączania się (prawdopodobnie chodzi o to że przełączanie się pomiędzy oknami przeglądarki), lepsza wydajność dzięki JIT i sprzętowej obsłudze grafiki i renderingu strony WWW.

Przystosowano Java Runtime do pracy w Symbianie^3. Oficjalne teraz to nazywa się Mobile Runtime for Java Application. Jest dokument omawiający zmiany jakie zaszły w Java Runtime 2.1 for Symbian (JRT2.1) Główne zmiany to: uruchamianie innych aplikacji i midletów, zaimplementowanie w LCDUI pojedynczego dotknięcia, wsparcie sprzętowe przy wyświetlaniu grafiki, robienie zrzutów ekranu, obsługa schowka, dodanie własnej grafiki wyświetlanej podczas uruchomienia midletu.

Natomiast trochę dziwnie postępują z Pythonem for Symbian. Ustalono, że użytkownik komórki sam zadecyduje o tym czy zechce aktualizować do swojej komórki runtime Pythona. Na razie przeniesiono kod źródłowy do repozytorium fundacji Symbian. Natomiast całe centrum rozwojowe nad Pythonem znajduje się na Garage Maemo. Dopóki nie zrobią PySide pod Symbianem

Dla programistów rozbudowano API o nowe możliwości. Programowanie w Symbianie wymagałobiegłej znajomości makr czy deksyptorów pojawiła się nowa biblioteka której zadaniem jest ułatwienie programistom lepsze zarżadzanie pamięcią - EUser High Level (EUserHL) Library API. Programiści mogą programować w C++ a szczególnie w bibliotekach IOStream i STL (Standard Template Library) oraz Boost co zostało opisane w Standard C++ Library (STLport v5). Do obróbki dokumentów XML programiści maja nowe 2 API: XML DOM Engine and XPath API i jak Libxm2 Library API

W Symbianie^3 domyślnym API do zarządzania trwałością danych w aplikacjach staje się biblioteka SQLite  która pozwala to na tworzenie bardziej wyrafinowanych klientów różnych aplikacji biznesowych dzięki wbudowanej obsłudze języka SQL

Standardy grupy Khronos mają coraz większe znaczenie. Dzięki temu że podsystem grafiki zawsze wymaga wsparcia mobilnych procesorów grafiki GPU to stało się możliwe w pełni zaimplementowanie API jak OpenGl ES 2.0 dla grafiki trójwymiarowej i jak OpenVG dla sprzętowej obsługi grafiki wektorowej a także zaimplementowano interfejs EGL, którego zadaniem jest przejecie od niskopoziomowego API Symbiana programowania sposobu wyświetlania. Na bazie tych standardów stworzono nowy silnik renderujący OpenWF co stanowi wysokopoziomową API dla OpenGL ES, OpenVG i jak EGL. Właściwie dopiero teraz programiści Symbiana dostali jawne API na którym mogą tworzyć własny GUI dla swojej aplikacji a w przyszłości przejść z AVKON na jakiś własny system interfejsu użytkownika. W S60 to też jest możliwe stworzenie nakładki na ten GUI i aplikacje Symbiana mogą inaczej wyglądać, przykładem jest silnik Kastor firmy TAT.

W Symbianie^3 zmienił się wygląd pulpitu użytkownika tzw HomeScreen Rozbudowano nowe API do obsługi interfejsu HomeScreen o: E-mail Widget API (pozwala obsługiwać pocztę z poziomu pulpitu) Extended Content Publisher API (pozwala na publikację zawartości na pulpicie), Home Screen Widget Publisher API (pozwala na zarządzanie widgetami na pulpicie) Location Centre Utility API (pozwala na uruchamianie aplikacji i zarządzanie nimi z poziomu pulpitu).

Pozostawienie frameworka AVKON (S60 GUI) jest podyktowane tym, żeby uruchamiać wszystkie programy, które były pisane pod S60 3rd i S60 5th a programiści mieli jak najmniej pracy z przeniesieniem funkcjonalności "jednego dotyku" w Symbianie^3. Więcej o przystosowaniu kodu ze Symbiana^1 do Symbiana^3 można przeczytać w artykule Modifying applications to support single-tap

To co sprawia że Symbian^3 wyprzedza konkurencję o lata świetlne to obsługa nowych protokołów komunikujących się pomiędzy urządzeniami. Do tej pory efektywny sposób programowania komunikacji pomiędzy urządzeniami w sposób bezprzewodowy opierał się na Bluetooth. Nowe rozwiązania w tym temacie to wykorzystanie NFC i WiFi Direct a do obsługi urządzeń komunikujących się między sobą w Symbianie^3 Zaimplementowano UPnP i Zeroconf. Najciekawsze możliwości maja programiści którzy chcieliby wykorzystać NFC. Zawiera to takie interfejsy programistyczne jak: NFC Discovery API (służy do subskrypcji tagów i wiadomości NDEF), NFC Tag Extension API (dostarcza implementację do obsługi rożnych rodzajów tagów NFC), NDEF API (obsługa wiadomości NDEF w tagach), NFC Peer-to-Peer API (dostarcza obsługę protokołu LLCP do komunikowania się pomiędzy urządzeniami NFC), NFC Content Handler API (komponent ECOM obsługujący wiadomości NDEF).

To co sprawia że programowanie na Symbiana stanie się przyjemniejsze to jest wsparcie do biblioteki Qt. Jest szansa że spora cześć programów pisanych pod Linuxem KDE może zostać przepisana na Symbiana i MeGoo. Właściwie taka "symbioza" pomiędzy tymi systemami operacyjnymi jest bardzo korzystna dla ekosystemu programistów Symbiana. Lekki edytor QtCreator 2.1 prawdopodobnie stanie się najpopularniejszym edytorem C++ wśród programistów Symbiana. Natomiast Carbide.C++ 3.0 bardziej będzie nadawało się do programowania kodu na wszystkie wersje i wykorzystaniem prac nad tworzeniem interfejsu użytkownika w Designerze UI. natomiast kolorystykę i styl aplikacji będzie można przygotować w Carbide UI

Symbian Foundation Symbian^3 PDK to jest wersja Symbiana^3 z kodem źródłowym i z kompletnym wsparciem narzędziowym Największą zmianą jest wdrożenie środowiska do emulacji Symbiana na bazie QEMU tzw: Syborg co pozwala że programy skompilowane pod platformę ARM mogą zostać uruchomione pod platformą Windows.

Całkiem niedawno ukazał się raport Mobile Developer Economics 2010 Jest tam na stronie 12 tabelka w której podano na jakiej platformie programiści preferowali: Symbian preferowało 45% programistów Jave Mobile (J2ME) 50% programistów Mobile Web (i widgety) 40% programistów a FlashLite to 20% programistów W sumie programistów na Symbiana można znaleźć w Azji i w Europie w dużych firmach. Najciekawsze w tym badaniu wyszło że programowanie na Symbiana nie jest takie trudne w porównaniu z innymi platformami.(na stronach 53-54 raportu)

piątek, 2 lipca 2010

Statystyki Nokii

Ostatnio brałem udział w polemicznych dyskusjach na temat Nokii i Symbiana. Często bardzo dziwiłem się że ludzie nie potrafią dobrze czytać raportów i wyciągają z nich niewłaściwe wnioski. Ponieważ to co się liczy to są fakty dotyczące sprzedaży ilości inteligentnych komórek. Dodatkową informacja może być informacja o lokalizacji sprzedaży.

Spróbujemy popatrzeć na rynek w latach 2007- 2010 wtedy właściwie nas interesuje ilość sprzedanych komórek z Symbianem. Pomimo że tego w raportach nie ma wprost. To da się wyciągnąć dość ciekawe wnioski. Tutaj opublikowałem swoje podsumowanie tych danych

Sytuacja medialna Nokii jest nie do pozazdroszczenia. Potwierdza się informacja o tym że fundusze inwestycyjne Sorosa grają spekulacyjne na akcjach Nokii, Pierwsze informacje o tym że przychody Nokii są poniżej spodziewanych z powodu słabego euro było zamieszczone informacji, że przychody działu Devices Sevices są niższe niż 6,7 mld euro. Szkoda, że nikt nie zrobił analizy jak wygląda sytuacja w poprzednich latach w raportach.  Skoro przychody w ciągu 2009 roku z tego działu były powyżej 6 mld euro to zejście na poziome 5 mld euro w 2Q 2010 zł to naprawdę oznacza tylko, że firma będzie miała mniejsze zyski. Nawet jak okaże się że znowu Nokia sprzedała 20 mln smartfonów w drugim kwartale 2010. To nic nie ma wspólnego z tym że Apple sprzedało w ciągu 3 dni 1,7 mln iPhonów 4. W Ameryce miliony ludzi chce przejść ze zwykłych komórek na inteligentne. Tam łatwiej im kupić komórki z Androidem czy iOS. Popatrzmy jeszcze inaczej. Z moich szacunków wynika w 2 kwartale 2010 że: RIM sprzedał 10 mln, Android miał  15 mln aktywacji a Apple sprzedało 3 mln iPadów i 12 mln iPhonów. Po sprzedaniu takiej dużej ilości to okaże się, że znowu globalnie Nokia najwięcej sprzedaje komórek z Symbianem. Ponieważ komórki z Symbianem stają się coraz tańsze, a co za tym idzie bardziej dostępne niż cała reszta smarfonów za cenę mniejszych zysków.

Trzeba powiedzieć wyraźnie Nokia jest liderem w sprzedaży inteligentnych komórek.
Nokia w ciągu 3 lat sprzedała 200 milionów komórek z Symbianem. W ramach serii N sprzedano 92 miliony egzemplarzy, natomiast w ramach serii E sprzedano 35 miliony egzemplarzy.  Od 2007 roku Nokia wyprodukowała  1444 milionów komórek pod własną marką.

Nawet jak przychody będą nieco mniejsze, a spekulanci grali na akcjach Nokii, a szefowie Apple czy Google mogą chwalić się wielkością sprzedaży, to jednak jest coś dziwnego,

Zauważyłem medialne zjawisko propagandowe, które nazwałbym "wojną o śmierć Symbiana". Jest to objaw reakcji amerykańskich analityków i badaczy rynku którzy z perspektywy amerykańskiego rynku widząc coraz mniejsze udziały w rynku amerykańskim komórek Nokii zaczynają pisać teksty nieprzychylne Nokii i pod adresem systemu operacyjnego Symbian. Bardzo doskonale w to udało się zaangażować emocje milionów ludzi. Spowodowało to że w dyskusjach o komórkach Nokii zaczęły brać pejoratywne emocje. W tej sytuacji gdy rosną oczekiwania użytkowników pojawia się frustracja. W większości przypadków frustracja ta była spowodowana niewiedzą, bądź nie pogodzeniem się z ograniczeniami tych urządzeń. Zauważyłem bardzo częstą sytuację, że bezkrytycznie powiela się pewne schematy myślowe byleby pasowało do tezy, że Symbian i Nokia już nie rozwijają się tak jak ich konkurencja. W takiej sytuacji gdy w obiegu jest pełno nieprawdziwych, bądź niedopowiedzeń powoduje to, że ludzie w takie informacje zaczynają wierzyć a niewiedza robi swoje. Amerykańcy blogerzy w poczuciu bezradności z cała sytuacją medialną zaczynają coraz mocnej krytykować Nokię. Przykładowe teksty z ostatniego miesiąca:
The Mass Exodus of Symbian Bloggers..
Symbian-Guru.com Is Over
An Open Letter to Nokia for 2010
7 Ways Nokia Can Win Again
Nokia, Please Kill Symbian
Nokia N8 to be final Symbian N Series device, all MeeGo from here on out
Nokia and the new age of mobile development
Where is Nokia’s Steve Jobs? Not available, just yet
Nokia Loses Battle for Apps as IPhone, Android Snare Developers
Symbian-Guru is dead, are there any Nokia advocates left?

 W Polsce na blogu pasjonatów technologii SpiderWeb sporo pojawiło się artykułów inspirowanych medialną atmosferą. Ponieważ powielały one poglądy z angielskojęzycznych artykułów zupełnie nie pasujące do specyfiki w Polsce. Często pokazywałem w komentarzach uwagi wskazujące na tendencyjność autorów artykułów. Zapraszam do przeczytania moich komentarzy pod tymi artykułami.

Nokia musi pozbyć się przeszłości
Ovi Store Nokii – czy ktoś to jeszcze pamięta?
Dlaczego Nokia traci programistów?
Alternatywny świat złudzeń Nokii
Adobe wydał Flash Player 10.1 dla komórek, ale zapomnij, że go użyjesz
Szkolne błędy Nokii 
Koniec ery Symbiana. Nokia oddaje rynek smartfonów konkurencji

Stan faktyczny Nokii jest taki, że jako firma ma dochody i jak sprzedaje dużo więcej inteligentnych komórek niż poprzednich latach. Kiedy Apple wyprodukuje 200 mln iPhonów? Kiedy Google osiągnie 200 mln aktywacji Androida? Nokia wyprodukowała przez ostatnie 3 lata 200 mln inteligentnych komórek. Wartość na giełdzie to w dzisiejszych czasach bardziej zależy od dobrego PR i obecności na rynku amerykańskim jeżeli firma jest notowana na giełdzie nowojorskiej.