Why Openmoko/it

From Openmoko

(Difference between revisions)
Jump to: navigation, search
(New page: {{Languages|Why_Openmoko}} Questo articolo discute il perchè dell'esistenza del progetto Openmoko e mostra come Openmoko sia l'alternativa ‘open’ alle varie piattaforme proprietarie ...)
 
m (linkfix)
 
(4 intermediate revisions by one user not shown)
Line 15: Line 15:
 
Il primo di cui parliamo è Symbian OS, considerato Windows del mondo mobile. Più del 75 % degli smartphones venduti oggi funzionano grazie a Symbian ed è ovviamente il sistema con il maggior numero di applicazioni sviluppate. E' sostenuto da aziende leader come Nokia, Motorola e Sony. Ma ci sono dei difetti ben evidenti in Symbian.
 
Il primo di cui parliamo è Symbian OS, considerato Windows del mondo mobile. Più del 75 % degli smartphones venduti oggi funzionano grazie a Symbian ed è ovviamente il sistema con il maggior numero di applicazioni sviluppate. E' sostenuto da aziende leader come Nokia, Motorola e Sony. Ma ci sono dei difetti ben evidenti in Symbian.
  
 +
*'''Un sistema proprietario:'''Symbian è un sistema operativo proprietario sviluppato da Symbian Ltd, e la cosa peggiore di ciò è che utilizza programmi Open come GCC, Java, Perl e molti altri nel suo SDK, ma non condivide le migliorie che applica al proprio software con la comunità.
  
*'''A proprietary OS:''' Symbian is a closed source OS developed by Symbian Ltd, and perhaps the worst thing about it is that it uses open programs like GCC, Java, Perl and many others in its SDK, but doesn’t share its code base or support any open source OS for its application development.
+
*'''Un ambiente di sviluppo ristretto:''' Symbian supporta solo Windows come ambiente di sviluppo delle proprie applicazioni. Non ci sono SDK ufficiali che permettono di essere usati su Linux o su Mac OS X. L'ironia della sorte è che la maggior parte delle applicazioni Symbian non funzionerebbero senza il supporto di programmi Opensource.
  
*'''A restricted development environment:''' Symbian only supports Windows for application development. There is no official SDK that can be used with Linux or Mac OSX. What is ironic is that most of Symbian’s SDK components will fail without the supporting open source programs.
+
*'''Bassa compatibilità con le versioni precendenti:'' Ciascuna nuova versione presentano cambiamenti voluti nel codice in modo da impedire la recompilazione dei programmi già esistenti. Gli sviluppatori devono così riscrivere ogni volta il software quando esce una nuova versione di Symbian.
  
*'''Poor backward compatibility:''' Every new version of the OS breaks the code. You can’t just recompile the code and run the application on a new platform. You need to re-write the whole application to support the code.
+
*'''Requisiti di sistema a basso tasso di longevità:''' I telefoni Symbian richiedono dei requisiti di sistema molto moderni. Ogni versione successiva richiede molte volte l'aggiornamento o la sostituzione del telefono. Uno smartphone costruito 2 anni fa può essere considerato spazzatura confrontato ai requisiti minimi di Symbian.
  
*'''High-end systems requirements:''' Symbian phones require a pretty decent hardware configuration to run properly. Even if you do have that, you may come across messages like “Out of Memory”. I am sure that many of our readers using Nokia smart phones are already aware of this.
+
*'''Difficile da programmare:''' Anche se offre un ricco set di API, ci sono molte difficoltà nella programmazione Symbian. Potresti dire che Symbian supporta molti linguaggi di programmazione, ma ricorda -se davvero vuoi programmare in Symbian devi sapere che il Symbian C++ è molto differente dagli standard C++, e possiede una curva d'apprendimento molto lunga e difficile.
  
*'''Difficult to program:''' Even though it offers a rich set of APIs, these are difficult to program. You may say that Symbian supports many programming languages, but remember — if you really want to program, you must know that Symbian C++ is very different from the standard C++, and hence has a very steep learning curve.
+
*'''Interfacce utente confuse:''' Symbian usa due diverse e incompatibili piattaforme per l'interfaccia utente- chiamate, S60 (Series 60) e User Interface Quartz (UIQ). Per gli sviluppatori è un bel rompicapo combinarle e per iniziare a sviluppare devi conoscere i dettegli specifici di ognuna.
  
*'''Confused UI platforms:''' Symbian uses two confusing and mutually incompatible UI platforms— namely, S60 (formerly Series 60) and User Interface Quartz (UIQ). For developers, this means that even though you are developing for Symbian, you need to learn UI specific details in order to be up and running.
+
*''Basso supporto per gli sviluppatori:''' A partire da Symbian 9, la compagnia ha iniziato a guardare con diffidenza i cosiddetti "third-party developers", gli sviluppatori indipendenti. La maggior parte delle caratteristiche dei telefoni sono disponibili ai soli iscritti al programma Symbian Signed. Se non sei membro del programma Symbian Signed non sarai mai in grado di inserire nelle tua applicazioni alcune caratteristiche core del sistema.  
  
*'''Poor developer support:''' Starting with Symbian 9, the company has started punishing third-party developers. Most of the phone features are open only to subscribers of Symbian Signed. If you are not a member of the Symbian Signed programme, then you won’t be able to make use of many core features of the OS.
+
*'''Blocco versione:''' Symbian non supporta l'upgrade a versioni successive del sistema. Dovrai rimanere con la versione in uso sul tuo dispositivo , anche se sono stati scoperti dei bug pericolosi o dei malfunzionamenti.  
  
*'''Version lock:''' The OS doesn’t support OS upgradation—if your machine has got Symbian 9.1, it will remain as it is as long as you use it. You won’t be able to upgrade it to a later version of the same OS. So you are bound to live in the Stone Age unless you spend a fortune on getting a new device with a newer OS.
+
*'''Symbian è solamente un OS mobile:''' Non potrai usare le tue abilità che già conosci per sviluppare in Symbian, in altre parole, non potrai usare quello che imparerai sviluppando Symbian in altre occasioni.
 
+
*'''Symbian is a mobile-only OS:''' You can’t use your existing skills to build on it. Or, in other words, you can’t use your Symbian skills anywhere else.
+
  
 
===Windows Mobile===
 
===Windows Mobile===
  
Considering Symbian drawbacks, Symbian is not exactly like Windows on the desktop, even though it is doing quite well. Windows is better than Symbian in some ways. It has got better developer support and has a plethora of developer documentation available. Visual Studio is an excellent IDE for it. But there are a few things I don’t like about Windows Mobile too.
+
Considerando i vari difetti di Symbian, possiamo dire che non è proprio come WIndows nel mondo desktop, anche se si avvicina molto. Windows è comunque meglio di Symbian in qualche modo. Possiede un buon supporto per gli sviluppatori e possiede una ricca documentazione. Visual Studio è un'ambiente di sviluppo molto buono. Ma ci sono alcune cose che non ci piacciono riguardo a Windows Mobile.  
  
*'''Microsoft vendor lock:''' Nothing is worse than a vendor lock-in, where the keys of the locks are with Microsoft.
+
*'''Microsoft vendor lock:''' Non c'è niente di peggio di vendor lock. Se acquistiamo un telefono compatibile con Windows Mobile ,ma ha possiede un altro OS, non potremmo comprare una versione da installare.
*'''Closed source:''' I don’t need to stress on this, do I?
+
 
*'''Microsoft’s partiality:''' When it comes to a Microsoft product, there is always a reasonable amount of partiality. One example is in Windows Mobile 6, where some of the improvements to email and the calendar application require that you have Exchange Server 2007. The situation is exactly like that on the desktop, where you can’t have DX 10 if you don’t have Vista. Remember all those anti-trust cases that Microsoft is facing?
+
*'''Software proprietario:''' Non c'è bisogno di stressarvi su di questo, no?
*'''Poor API support:''' Not all the Windows APIs are available for third party use. You may need to sign an NDA with Microsoft before you want to fully unleash the OS’s potential.
+
 
 +
*'''Predominio Microsoft:''' Microsoft sviluppa oltre che Windows, molte altre tecnologie e prodotti. In Windows e in particolare a Windows Mobile si viene obbligati ad utilizzare questi prodotti senza avere una vera scelta. Per esempio, in Windows Mobile 6 sono stati fatti molti miglioramenti al sistema email e calendario, ma erano applicate solo ad Exchange Server 2007. O, per esempio, non puoi usare le DirectX 10 se no hai Windows Vista. Questi sono solo alcuni dei trust di Microsoft, storie che sono state discusse dai vari anti-trust e dalla Commissione Europea.
 +
 
 +
*'''Scarsa disponibilità delle API:''' Non tutte le API di WIndows sono disponibili agli sviluppatori di terze parti. Potresti dover accettare un NDA con Microsoft prima di vedere una tua applicazione sfruttare l'ultima API di Windows Mobile.
  
 
===iPhone===
 
===iPhone===
Apple's iPhone is very popular, we must take that into consideration as well. iPhone is not exactly a mobile application platform – rather, it is a product name. And, unfortunately, as of today, there is nothing much in store for the developers and end users. Let’s list the disadvantages here as well:
 
  
* '''Apple’s insane vendor lock:''' This phone is locked in to Apple and the cellular company, and you as the user, end up paying both.
+
L'iPhone in questi ultimi tempi sta riscuotendo un successo record. iPhone non è esattamente una piattaforma mobile, ma è un nome commerciale. Ecco qui le pecche del sistema:
  
==Why Openmoko is the best==
+
*'''Apple total vendor lock:'''Il telefono e il sitema sono bloccati totalmente ad Apple. In più molte compagnie telefoniche impongono anche il SIM Lock rendendolo inutilizzabile con altri operatori.
Linux is the best way to program. All that still stands true, as Openmoko is all about programming on Linux itself. And here’s why I think so:
+
  
* '''Open source:''' It is truly open source—not only in terms of software, but also in terms of hardware. You get to see all the nuts and bolts behind your excellent phone.
+
==Perchè Openmoko è la scelta giusta==
* '''Built from open source:''' Openmoko is an amazing collection of already popular open source programs to build a mobile development platform.
+
* '''Cross-platform development:''' Moving forward, Openmoko SDK will support Windows and Mac too, thus giving you the option to develop on your choice of platform.
+
* '''Easy application development:''' Since it makes use of popular technologies, it’s pretty easy to get up and running with Openmoko in a very short period of time. All Linux programmers will feel at home, as Openmoko makes use of popular open source components like GTK, X server, ALSA and so on.
+
* '''Low on hardware requirements:''' It doesn’t require a very high-end configuration to run on.
+
* '''Great developer support:''' Even though the project is in its infancy, it already has got great community support. Apart from this, all the components used in building Openmoko have their own communities. So, there may already be someone to help you out.
+
* '''A very rich API:''' Openmoko has got a very rich set of APIs. A few have been developed exclusively for Openmoko, while the others are simply derived from other projects. Openmoko enables you to use your existing skill set to create the phone applications that you want to.
+
  
==The Openmoko Architecture==
+
Linux è la via migliore per la programmazione. E infatti Openmoko è basato su Linux. Ed ecco il perchè Openmoko è la scelta giusta:
The Openmoko architecture is simple, yet very powerful. Most of it is based on already-available open source technologies. However, new technologies have also been developed exclusively for the platform. Openmoko consists of the following major components:
+
 
 +
*'''Opensource:''' E' totalmente opensource, sotto ogni punto di vista. Infatti non solo il software, ma anche l'hardware sono completamente Opensource.
 +
 
 +
*'''Costruito dall' Opensource:''' Openmoko è basato su solide basi Linux e possiede già un bagaglio di applicazioni Opensource molto popolari sulla quale si sta costruendo lo sviluppo del dispositivo.
 +
 
 +
*'''Sviluppo multi-piattaforma:''' L'SDK di Openmoko è supportato per Linux ovviamente, ma anche per Windows e Macintosh, permettendoti il massimo di libertà.
 +
 
 +
*'''Semplice sviluppo di applicazioni:''' Openmoko fa uso di tecnologie Opensource famosissime e utilizzatissime. Tutti i programmatori Linux si troveranno a casa dato che sono implementate tecnologie quali GTK, X server, ALSA e così via.
 +
 
 +
*'''Bassa richiesta hardware:'''Openmoko richiede dei componenti hardware molto modesti per il suo funzionamento.
 +
 
 +
*'''Ottimo supporto per sviluppatori:''' Chiunque abbia seguito il progetto fin dai suoi albori può confermare come la comunità offra un grosso supporto sia agli utenti che agli sviluppatori. C'è sempre qualcuno pronto ad aiutarti per risolvere i tuoi problemi.
 +
 
 +
*'''Un ricco set di API:''' Openmoko possiede  un ricco set di API, di cui alcune scritte esclusivamente per il progetto Openmoko, mentre altre derivate da vari progetti Opensource. Openmoko ti permette quindi di usare le tue abilità Linux per sviluppare quello che sarà la piattaforma mobile del futuro.
 +
 
 +
==L'architettura Openmoko==
 +
 
 +
L'architettura Openmoko è molto semplice, ma molto potente. La maggior parte dei componenti è basata su tecnologie Opensource già esistenti. Comunque sono state sviluppate anche tecnologie unicamente per il progetto Openmoko. Openmoko è composto principalmente dai seguenti componenti
 
[[Image:Software1.jpg]]
 
[[Image:Software1.jpg]]
  
* '''Linux kernel 2.6 and associated device drivers:''' The project makes use of the vanilla kernel 2.6 series, patched against Openmoko-specific patches. The patch set includes additional support for various embedded devices like USB, SD, touch screen, and communication drivers. All these drivers reside in the kernel space, and are loaded at boot time.
+
*'''Linux kernel 2.6 e relativi driver:''' Il progetto fa uso del Vanilla kernel 2.6 series, modificato appositamente. Le modifiche includono supporto aggiuntivo per i vari device utilizzati come USB, SD, Touch Screen, Wifi, GSM, GPRS, GPS. Tutti questi driver sono inseriti nel kernel e caricati durante il tempo di boot.
* '''Linux Core (or system) services:'''
+
*'''Linux Core services:'''
 +
 
 +
** '''udev:''' E' il gestore dei componenti e tutti i nodi nel /dev filesystem. udev garantisce uno standard per l'interazione dei vari componenti.
 +
** '''blueZ''' E' lo stack ufficiale per la gestione del Bluetooth in Openmoko. Si basa su LinuxBluetooh. Gestisce tutte le attività bluetooth del dispositivo.
 +
** '''Dbus:''' Garantisce un framework IPC (inter-process communication). In altre parole, Dbus permette alle applicazioni di comunicare l'una con l'altra,
 +
** '''GSM:''' E' composto da GSM (il core per il modulo GSM), GSMd (il demone che gestisce il funzionamento GSM) e libgsm (un API per comunicare con il GSM subsystem).
 +
** '''GPS:''' E' composto da GPS (il core per il modulo GPS) e da GPSd (il demone che gestisce il funzionamento del sistema GPS)
 +
 
 +
* '''L'interfaccia utente (UI)'''
  
** '''udev:''' It acts as the device manger and maintains all the device nodes in a pseudo /dev filesystem. udev provides a standard way for device components to interact.
+
**'''kdrive:''' E' il server X per le piattaforme mobile ed embedded, è eseguito direttamente su un dispositivo frame-buffer e supporta OpenGL.
** '''blueZ:''' It is the official LinuxBluetooth stack that is responsible for all Bluetooth related activities in Openmoko.
+
**'''matchbox:''' E' un windows menager per piattaforme embedded. Matchbox è diventato molto popolare dopo la sua recente adozione nel progetto Nokia's Linux Tablet e nel progetto One Laptop Per Child.
** '''Dbus:''' This provides an IPC (inter-process communication) framework. In other words, Dbus allows applications to talk to each other.
+
**'''GTK:''' Un toolkit croos-piattaforma per widget. GTK è utilizzato anche in GNOME.
** '''GSM:''' It consists of GSM (the core GSM module), GSMd (a daemon to manage the GSM backend) and libgsm (an API to communicate with the GSM subsystem).
+
**'''ALSA:''' Advanced Linux Sound Architecture (ALSA) garantisce le funzionalità audio. ALSA è gia popolare nei sistemi Linux e parte del kernel standard.
** '''GPS:''' It consists of GPS (a core GPS module) and GPSd (a daemon to manage the GPS backend).
+
**'''Qtopia:''' E' il robusto e a livello commerciale della piattaforma per cellulari e PDA sviluppata da Trolltech.
  
* '''The user interface (UI)'''
+
* '''Il framework per le applicazioni:'''
**'''kdrive:''' It is the thin X server for embedded platforms, which runs directly on a frame-buffer device and supports OpenGL.
+
**'''matchbox:''' It is a window manager for embedded platforms. Matchbox has been very popular with its recent adoption in Nokia’s Linux tablet and the One Laptop Per Child project.
+
**'''GTK:''' This cross-platform widget toolkit is popular due to its truly open source nature and wide cross-platform support. GTK sits behind the popular desktop environment GNOME. UPDATE: Qt is now supported widget.
+
**'''ALSA:''' The Advanced Linux Sound Architecture (ALSA) provides the audio functionality. ALSA is already very popular in Linux systems and is now part of the standard kernel.
+
**'''Qtopia:''' It is the robust and commercial-grade mobile phone and PDA platform from Trolltech, and arguably much more than just a GUI toolkit.
+
* '''The application framework:'''
+
**'''Core (libmokocore):''' This provides the core functionality to the framework, such as the switching device, reading/ writing data, application-toapplication signalling, etc. It makes use of the Dbus and Gconf packages.
+
**'''.Net (libmokonet):''' It provides the core networking functionality to the framework. It makes use of libgsm, bluez-lib and libgps.
+
**'''UI (libmokoui):''' It provides the UI programming capabilities to the platform and makes use of GTK and ALSA (for applications interacting with audio devices). The standard GTK has been customised to provide a rich mobile application-development experience.
+
**'''PIM (libmokopim):''' Provides the core PIM (personal information management) capabilities. It makes use of the embedded Evolution data server.
+
* '''Applications:'''
+
**'''X11 applications:''' Standard X11 applications linked to libX11.
+
**'''Finger applications:''' Includes the dialler, menu, media player, etc.
+
**'''Stylus applications:''' Includes contacts, messages, search applications, etc.
+
**'''Third-party applications:''' Various heavy-duty applications like Web browsers, instant messaging applications, etc.
+
  
Subsequent to this quick introduction to the upcoming Openmoko platform, in forthcoming articles I’ll show you how to build and run Openmoko applications. The experience is like hacking the world’s best phone environment at your workbench—and yes, nobody is going to sue you! Dont forget to post in your comments at kunaldeo at gmail.com
+
**'''Core (libmokocore):''' Garantisce le funzionalità del framework, come lo switching fra componeti, scrittura e lettura dati, ecc... Fa uso dei pacchetti Dbus e Gconf.
 +
**'''.Net (libmokonet):''' Garantisce le funzionalità di network del framework. Usa libgsm, bluez-lib e libgps.
 +
**'''UI (libmokoui):''' Garantisce le funzionalità delle UI alla piattaforma ed usa GTK ed ALSA. Lo standard GTK è stato modificato per garantire una ricca esperienza di sviluppo per le applicazioni mobile.
 +
**'''PIM (libmokopim):''' Garantisce il core PIM (Personal Information Management). Usa un'implementazione del server dati Evolution.
  
--[[User:Kunaldeo|Kunaldeo]] 10:54, 30 June 2008 (UTC)
+
==In Breve==
  
==But what if somebody important calls?==
+
Questa è solo una breve guida alla piattaforma Openmoko. Openmoko è perfetto come banco di lavoro per utenti Linux e programmatori. Non offre quindi ancora le caratteristiche che gli utenti base desiderano (fotocamera, Edge/3g)  e non possiede ancora una stabilità che ne può garantire l'utilizzo in situazioni d'emergenza. Ma questo è l'inizio di una rivoluzione nel mondo mobile. Unisciti a noi nel suo sviluppo e contribuisci alla crescita di Openmoko. Insieme stiamo forgiando il futuro del mondo dei dispositivi mobile.
The reader should still be aware that Openmoko is not the fully polished product
+
Potrai trovare altre informazioni utili in questo wiki.
as some of the other phones on the market. However, with your help...
+
Con il tuo aiuto Openmoko può diventare una realtà importante.
 +
Guarda la sezione [[Distributions]] per vedere le varie distribuzioni realizzate per il progetto Openmoko. Se non sei di Linux, una distribuzione è praticamente come una sistema operativo, solo che nel mondo Linux le basi e le tecnologie sono le stesse (framework, API, ecc...). Cambiano solamente alcune caratteristiche e alcune differenze nella UI.
  
[[Category:Distributions| ]]
+
[[Category:Distributions/it]]

Latest revision as of 13:57, 9 October 2009


Questo articolo discute il perchè dell'esistenza del progetto Openmoko e mostra come Openmoko sia l'alternativa ‘open’ alle varie piattaforme proprietarie in commercio.

Al giorno d'oggi esistono diverse piattaforme mobile sul mercato. La situazione è molto simile all'ambiente dell'informatica desktop, dove ci sono diversi sistemi operativi come GNU/Linux, BSD, Mac OS X, Windows e molti altri. Per la maggior parte degli utenti avanzati e degli sviluppatori, Linux è la scelta migliore. Nel mondo mobile ci sono diversi sistemi operativi come Symbian, Windows Mobile, Blackbarry e Linux. Ma nessuna di queste sono realmente ‘open’. Sorpreso di vedere Linux nell'elenco? Linux nel mondo mobile è presente in diverse forme e misure, non molto compatibili l'una con l'altra. Per esempio, molti terminali LG utilizzano delle versioni di Linux scritte ad hoc da LG. Anche altre aziende fanno lo stesso, per esempio Motorola ecc... Per queste versioni di Linux però, non sono disponibili le sorgenti e le API con le quali gli sviluppatori e gli utenti avanzati possono divertirsi e controllare in tutti gli aspetti il dispositivo. Queste versioni di Linux si comportano esattamente come le altre piattaforme proprietarie.

Noi stiamo sviluppando una piattaforma mobile basata su Linux chiamata Openmoko, un progetto che combina l'essenza dell'Opensource con una ricca interfaccia di applicazioni. Openmoko è la reale conversione della versione desktop di Linux nel mondo dei dispositivi mobile. E' stato costruto con uno X-server standard, GTK, ALSA, Dbus e così via. Tecnologie ben note agli utenti e sviluppatori Linux. Il bello del progetto Openmoko è il fatto di possedere anche di un hardware completamente Opensource. Openmoko ha creato una piattaforma per lo sviluppo completo delle tecnolgie mobile. Tutti gli hacker troveranno il loro sogno farsi realtà!

Contents

[edit] Cosa non va nelle altre piattaforme ?

Ecco perchè crediamo che Openmoko sia la scelta giusta tra le tante oggi disponibili.

[edit] Symbian OS

Il primo di cui parliamo è Symbian OS, considerato Windows del mondo mobile. Più del 75 % degli smartphones venduti oggi funzionano grazie a Symbian ed è ovviamente il sistema con il maggior numero di applicazioni sviluppate. E' sostenuto da aziende leader come Nokia, Motorola e Sony. Ma ci sono dei difetti ben evidenti in Symbian.

  • Un sistema proprietario:Symbian è un sistema operativo proprietario sviluppato da Symbian Ltd, e la cosa peggiore di ciò è che utilizza programmi Open come GCC, Java, Perl e molti altri nel suo SDK, ma non condivide le migliorie che applica al proprio software con la comunità.
  • Un ambiente di sviluppo ristretto: Symbian supporta solo Windows come ambiente di sviluppo delle proprie applicazioni. Non ci sono SDK ufficiali che permettono di essere usati su Linux o su Mac OS X. L'ironia della sorte è che la maggior parte delle applicazioni Symbian non funzionerebbero senza il supporto di programmi Opensource.
  • 'Bassa compatibilità con le versioni precendenti: Ciascuna nuova versione presentano cambiamenti voluti nel codice in modo da impedire la recompilazione dei programmi già esistenti. Gli sviluppatori devono così riscrivere ogni volta il software quando esce una nuova versione di Symbian.
  • Requisiti di sistema a basso tasso di longevità: I telefoni Symbian richiedono dei requisiti di sistema molto moderni. Ogni versione successiva richiede molte volte l'aggiornamento o la sostituzione del telefono. Uno smartphone costruito 2 anni fa può essere considerato spazzatura confrontato ai requisiti minimi di Symbian.
  • Difficile da programmare: Anche se offre un ricco set di API, ci sono molte difficoltà nella programmazione Symbian. Potresti dire che Symbian supporta molti linguaggi di programmazione, ma ricorda -se davvero vuoi programmare in Symbian devi sapere che il Symbian C++ è molto differente dagli standard C++, e possiede una curva d'apprendimento molto lunga e difficile.
  • Interfacce utente confuse: Symbian usa due diverse e incompatibili piattaforme per l'interfaccia utente- chiamate, S60 (Series 60) e User Interface Quartz (UIQ). Per gli sviluppatori è un bel rompicapo combinarle e per iniziare a sviluppare devi conoscere i dettegli specifici di ognuna.
  • Basso supporto per gli sviluppatori:' A partire da Symbian 9, la compagnia ha iniziato a guardare con diffidenza i cosiddetti "third-party developers", gli sviluppatori indipendenti. La maggior parte delle caratteristiche dei telefoni sono disponibili ai soli iscritti al programma Symbian Signed. Se non sei membro del programma Symbian Signed non sarai mai in grado di inserire nelle tua applicazioni alcune caratteristiche core del sistema.
  • Blocco versione: Symbian non supporta l'upgrade a versioni successive del sistema. Dovrai rimanere con la versione in uso sul tuo dispositivo , anche se sono stati scoperti dei bug pericolosi o dei malfunzionamenti.
  • Symbian è solamente un OS mobile: Non potrai usare le tue abilità che già conosci per sviluppare in Symbian, in altre parole, non potrai usare quello che imparerai sviluppando Symbian in altre occasioni.

[edit] Windows Mobile

Considerando i vari difetti di Symbian, possiamo dire che non è proprio come WIndows nel mondo desktop, anche se si avvicina molto. Windows è comunque meglio di Symbian in qualche modo. Possiede un buon supporto per gli sviluppatori e possiede una ricca documentazione. Visual Studio è un'ambiente di sviluppo molto buono. Ma ci sono alcune cose che non ci piacciono riguardo a Windows Mobile.

  • Microsoft vendor lock: Non c'è niente di peggio di vendor lock. Se acquistiamo un telefono compatibile con Windows Mobile ,ma ha possiede un altro OS, non potremmo comprare una versione da installare.
  • Software proprietario: Non c'è bisogno di stressarvi su di questo, no?
  • Predominio Microsoft: Microsoft sviluppa oltre che Windows, molte altre tecnologie e prodotti. In Windows e in particolare a Windows Mobile si viene obbligati ad utilizzare questi prodotti senza avere una vera scelta. Per esempio, in Windows Mobile 6 sono stati fatti molti miglioramenti al sistema email e calendario, ma erano applicate solo ad Exchange Server 2007. O, per esempio, non puoi usare le DirectX 10 se no hai Windows Vista. Questi sono solo alcuni dei trust di Microsoft, storie che sono state discusse dai vari anti-trust e dalla Commissione Europea.
  • Scarsa disponibilità delle API: Non tutte le API di WIndows sono disponibili agli sviluppatori di terze parti. Potresti dover accettare un NDA con Microsoft prima di vedere una tua applicazione sfruttare l'ultima API di Windows Mobile.

[edit] iPhone

L'iPhone in questi ultimi tempi sta riscuotendo un successo record. iPhone non è esattamente una piattaforma mobile, ma è un nome commerciale. Ecco qui le pecche del sistema:

  • Apple total vendor lock:Il telefono e il sitema sono bloccati totalmente ad Apple. In più molte compagnie telefoniche impongono anche il SIM Lock rendendolo inutilizzabile con altri operatori.

[edit] Perchè Openmoko è la scelta giusta

Linux è la via migliore per la programmazione. E infatti Openmoko è basato su Linux. Ed ecco il perchè Openmoko è la scelta giusta:

  • Opensource: E' totalmente opensource, sotto ogni punto di vista. Infatti non solo il software, ma anche l'hardware sono completamente Opensource.
  • Costruito dall' Opensource: Openmoko è basato su solide basi Linux e possiede già un bagaglio di applicazioni Opensource molto popolari sulla quale si sta costruendo lo sviluppo del dispositivo.
  • Sviluppo multi-piattaforma: L'SDK di Openmoko è supportato per Linux ovviamente, ma anche per Windows e Macintosh, permettendoti il massimo di libertà.
  • Semplice sviluppo di applicazioni: Openmoko fa uso di tecnologie Opensource famosissime e utilizzatissime. Tutti i programmatori Linux si troveranno a casa dato che sono implementate tecnologie quali GTK, X server, ALSA e così via.
  • Bassa richiesta hardware:Openmoko richiede dei componenti hardware molto modesti per il suo funzionamento.
  • Ottimo supporto per sviluppatori: Chiunque abbia seguito il progetto fin dai suoi albori può confermare come la comunità offra un grosso supporto sia agli utenti che agli sviluppatori. C'è sempre qualcuno pronto ad aiutarti per risolvere i tuoi problemi.
  • Un ricco set di API: Openmoko possiede un ricco set di API, di cui alcune scritte esclusivamente per il progetto Openmoko, mentre altre derivate da vari progetti Opensource. Openmoko ti permette quindi di usare le tue abilità Linux per sviluppare quello che sarà la piattaforma mobile del futuro.

[edit] L'architettura Openmoko

L'architettura Openmoko è molto semplice, ma molto potente. La maggior parte dei componenti è basata su tecnologie Opensource già esistenti. Comunque sono state sviluppate anche tecnologie unicamente per il progetto Openmoko. Openmoko è composto principalmente dai seguenti componenti Software1.jpg

  • Linux kernel 2.6 e relativi driver: Il progetto fa uso del Vanilla kernel 2.6 series, modificato appositamente. Le modifiche includono supporto aggiuntivo per i vari device utilizzati come USB, SD, Touch Screen, Wifi, GSM, GPRS, GPS. Tutti questi driver sono inseriti nel kernel e caricati durante il tempo di boot.
  • Linux Core services:
    • udev: E' il gestore dei componenti e tutti i nodi nel /dev filesystem. udev garantisce uno standard per l'interazione dei vari componenti.
    • blueZ E' lo stack ufficiale per la gestione del Bluetooth in Openmoko. Si basa su LinuxBluetooh. Gestisce tutte le attività bluetooth del dispositivo.
    • Dbus: Garantisce un framework IPC (inter-process communication). In altre parole, Dbus permette alle applicazioni di comunicare l'una con l'altra,
    • GSM: E' composto da GSM (il core per il modulo GSM), GSMd (il demone che gestisce il funzionamento GSM) e libgsm (un API per comunicare con il GSM subsystem).
    • GPS: E' composto da GPS (il core per il modulo GPS) e da GPSd (il demone che gestisce il funzionamento del sistema GPS)
  • L'interfaccia utente (UI)
    • kdrive: E' il server X per le piattaforme mobile ed embedded, è eseguito direttamente su un dispositivo frame-buffer e supporta OpenGL.
    • matchbox: E' un windows menager per piattaforme embedded. Matchbox è diventato molto popolare dopo la sua recente adozione nel progetto Nokia's Linux Tablet e nel progetto One Laptop Per Child.
    • GTK: Un toolkit croos-piattaforma per widget. GTK è utilizzato anche in GNOME.
    • ALSA: Advanced Linux Sound Architecture (ALSA) garantisce le funzionalità audio. ALSA è gia popolare nei sistemi Linux e parte del kernel standard.
    • Qtopia: E' il robusto e a livello commerciale della piattaforma per cellulari e PDA sviluppata da Trolltech.
  • Il framework per le applicazioni:
    • Core (libmokocore): Garantisce le funzionalità del framework, come lo switching fra componeti, scrittura e lettura dati, ecc... Fa uso dei pacchetti Dbus e Gconf.
    • .Net (libmokonet): Garantisce le funzionalità di network del framework. Usa libgsm, bluez-lib e libgps.
    • UI (libmokoui): Garantisce le funzionalità delle UI alla piattaforma ed usa GTK ed ALSA. Lo standard GTK è stato modificato per garantire una ricca esperienza di sviluppo per le applicazioni mobile.
    • PIM (libmokopim): Garantisce il core PIM (Personal Information Management). Usa un'implementazione del server dati Evolution.

[edit] In Breve

Questa è solo una breve guida alla piattaforma Openmoko. Openmoko è perfetto come banco di lavoro per utenti Linux e programmatori. Non offre quindi ancora le caratteristiche che gli utenti base desiderano (fotocamera, Edge/3g) e non possiede ancora una stabilità che ne può garantire l'utilizzo in situazioni d'emergenza. Ma questo è l'inizio di una rivoluzione nel mondo mobile. Unisciti a noi nel suo sviluppo e contribuisci alla crescita di Openmoko. Insieme stiamo forgiando il futuro del mondo dei dispositivi mobile. Potrai trovare altre informazioni utili in questo wiki. Con il tuo aiuto Openmoko può diventare una realtà importante. Guarda la sezione Distributions per vedere le varie distribuzioni realizzate per il progetto Openmoko. Se non sei di Linux, una distribuzione è praticamente come una sistema operativo, solo che nel mondo Linux le basi e le tecnologie sono le stesse (framework, API, ecc...). Cambiano solamente alcune caratteristiche e alcune differenze nella UI.

Personal tools


Questo articolo discute il perchè dell'esistenza del progetto Openmoko e mostra come Openmoko sia l'alternativa ‘open’ alle varie piattaforme proprietarie in commercio.

Al giorno d'oggi esistono diverse piattaforme mobile sul mercato. La situazione è molto simile all'ambiente dell'informatica desktop, dove ci sono diversi sistemi operativi come GNU/Linux, BSD, Mac OS X, Windows e molti altri. Per la maggior parte degli utenti avanzati e degli sviluppatori, Linux è la scelta migliore. Nel mondo mobile ci sono diversi sistemi operativi come Symbian, Windows Mobile, Blackbarry e Linux. Ma nessuna di queste sono realmente ‘open’. Sorpreso di vedere Linux nell'elenco? Linux nel mondo mobile è presente in diverse forme e misure, non molto compatibili l'una con l'altra. Per esempio, molti terminali LG utilizzano delle versioni di Linux scritte ad hoc da LG. Anche altre aziende fanno lo stesso, per esempio Motorola ecc... Per queste versioni di Linux però, non sono disponibili le sorgenti e le API con le quali gli sviluppatori e gli utenti avanzati possono divertirsi e controllare in tutti gli aspetti il dispositivo. Queste versioni di Linux si comportano esattamente come le altre piattaforme proprietarie.

Noi stiamo sviluppando una piattaforma mobile basata su Linux chiamata Openmoko, un progetto che combina l'essenza dell'Opensource con una ricca interfaccia di applicazioni. Openmoko è la reale conversione della versione desktop di Linux nel mondo dei dispositivi mobile. E' stato costruto con uno X-server standard, GTK, ALSA, Dbus e così via. Tecnologie ben note agli utenti e sviluppatori Linux. Il bello del progetto Openmoko è il fatto di possedere anche di un hardware completamente Opensource. Openmoko ha creato una piattaforma per lo sviluppo completo delle tecnolgie mobile. Tutti gli hacker troveranno il loro sogno farsi realtà!

Cosa non va nelle altre piattaforme ?

Ecco perchè crediamo che Openmoko sia la scelta giusta tra le tante oggi disponibili.

Symbian OS

Il primo di cui parliamo è Symbian OS, considerato Windows del mondo mobile. Più del 75 % degli smartphones venduti oggi funzionano grazie a Symbian ed è ovviamente il sistema con il maggior numero di applicazioni sviluppate. E' sostenuto da aziende leader come Nokia, Motorola e Sony. Ma ci sono dei difetti ben evidenti in Symbian.


  • A proprietary OS: Symbian is a closed source OS developed by Symbian Ltd, and perhaps the worst thing about it is that it uses open programs like GCC, Java, Perl and many others in its SDK, but doesn’t share its code base or support any open source OS for its application development.
  • A restricted development environment: Symbian only supports Windows for application development. There is no official SDK that can be used with Linux or Mac OSX. What is ironic is that most of Symbian’s SDK components will fail without the supporting open source programs.
  • Poor backward compatibility: Every new version of the OS breaks the code. You can’t just recompile the code and run the application on a new platform. You need to re-write the whole application to support the code.
  • High-end systems requirements: Symbian phones require a pretty decent hardware configuration to run properly. Even if you do have that, you may come across messages like “Out of Memory”. I am sure that many of our readers using Nokia smart phones are already aware of this.
  • Difficult to program: Even though it offers a rich set of APIs, these are difficult to program. You may say that Symbian supports many programming languages, but remember — if you really want to program, you must know that Symbian C++ is very different from the standard C++, and hence has a very steep learning curve.
  • Confused UI platforms: Symbian uses two confusing and mutually incompatible UI platforms— namely, S60 (formerly Series 60) and User Interface Quartz (UIQ). For developers, this means that even though you are developing for Symbian, you need to learn UI specific details in order to be up and running.
  • Poor developer support: Starting with Symbian 9, the company has started punishing third-party developers. Most of the phone features are open only to subscribers of Symbian Signed. If you are not a member of the Symbian Signed programme, then you won’t be able to make use of many core features of the OS.
  • Version lock: The OS doesn’t support OS upgradation—if your machine has got Symbian 9.1, it will remain as it is as long as you use it. You won’t be able to upgrade it to a later version of the same OS. So you are bound to live in the Stone Age unless you spend a fortune on getting a new device with a newer OS.
  • Symbian is a mobile-only OS: You can’t use your existing skills to build on it. Or, in other words, you can’t use your Symbian skills anywhere else.

Windows Mobile

Considering Symbian drawbacks, Symbian is not exactly like Windows on the desktop, even though it is doing quite well. Windows is better than Symbian in some ways. It has got better developer support and has a plethora of developer documentation available. Visual Studio is an excellent IDE for it. But there are a few things I don’t like about Windows Mobile too.

  • Microsoft vendor lock: Nothing is worse than a vendor lock-in, where the keys of the locks are with Microsoft.
  • Closed source: I don’t need to stress on this, do I?
  • Microsoft’s partiality: When it comes to a Microsoft product, there is always a reasonable amount of partiality. One example is in Windows Mobile 6, where some of the improvements to email and the calendar application require that you have Exchange Server 2007. The situation is exactly like that on the desktop, where you can’t have DX 10 if you don’t have Vista. Remember all those anti-trust cases that Microsoft is facing?
  • Poor API support: Not all the Windows APIs are available for third party use. You may need to sign an NDA with Microsoft before you want to fully unleash the OS’s potential.

iPhone

Apple's iPhone is very popular, we must take that into consideration as well. iPhone is not exactly a mobile application platform – rather, it is a product name. And, unfortunately, as of today, there is nothing much in store for the developers and end users. Let’s list the disadvantages here as well:

  • Apple’s insane vendor lock: This phone is locked in to Apple and the cellular company, and you as the user, end up paying both.

Why Openmoko is the best

Linux is the best way to program. All that still stands true, as Openmoko is all about programming on Linux itself. And here’s why I think so:

  • Open source: It is truly open source—not only in terms of software, but also in terms of hardware. You get to see all the nuts and bolts behind your excellent phone.
  • Built from open source: Openmoko is an amazing collection of already popular open source programs to build a mobile development platform.
  • Cross-platform development: Moving forward, Openmoko SDK will support Windows and Mac too, thus giving you the option to develop on your choice of platform.
  • Easy application development: Since it makes use of popular technologies, it’s pretty easy to get up and running with Openmoko in a very short period of time. All Linux programmers will feel at home, as Openmoko makes use of popular open source components like GTK, X server, ALSA and so on.
  • Low on hardware requirements: It doesn’t require a very high-end configuration to run on.
  • Great developer support: Even though the project is in its infancy, it already has got great community support. Apart from this, all the components used in building Openmoko have their own communities. So, there may already be someone to help you out.
  • A very rich API: Openmoko has got a very rich set of APIs. A few have been developed exclusively for Openmoko, while the others are simply derived from other projects. Openmoko enables you to use your existing skill set to create the phone applications that you want to.

The Openmoko Architecture

The Openmoko architecture is simple, yet very powerful. Most of it is based on already-available open source technologies. However, new technologies have also been developed exclusively for the platform. Openmoko consists of the following major components: Software1.jpg

  • Linux kernel 2.6 and associated device drivers: The project makes use of the vanilla kernel 2.6 series, patched against Openmoko-specific patches. The patch set includes additional support for various embedded devices like USB, SD, touch screen, and communication drivers. All these drivers reside in the kernel space, and are loaded at boot time.
  • Linux Core (or system) services:
    • udev: It acts as the device manger and maintains all the device nodes in a pseudo /dev filesystem. udev provides a standard way for device components to interact.
    • blueZ: It is the official LinuxBluetooth stack that is responsible for all Bluetooth related activities in Openmoko.
    • Dbus: This provides an IPC (inter-process communication) framework. In other words, Dbus allows applications to talk to each other.
    • GSM: It consists of GSM (the core GSM module), GSMd (a daemon to manage the GSM backend) and libgsm (an API to communicate with the GSM subsystem).
    • GPS: It consists of GPS (a core GPS module) and GPSd (a daemon to manage the GPS backend).
  • The user interface (UI)
    • kdrive: It is the thin X server for embedded platforms, which runs directly on a frame-buffer device and supports OpenGL.
    • matchbox: It is a window manager for embedded platforms. Matchbox has been very popular with its recent adoption in Nokia’s Linux tablet and the One Laptop Per Child project.
    • GTK: This cross-platform widget toolkit is popular due to its truly open source nature and wide cross-platform support. GTK sits behind the popular desktop environment GNOME. UPDATE: Qt is now supported widget.
    • ALSA: The Advanced Linux Sound Architecture (ALSA) provides the audio functionality. ALSA is already very popular in Linux systems and is now part of the standard kernel.
    • Qtopia: It is the robust and commercial-grade mobile phone and PDA platform from Trolltech, and arguably much more than just a GUI toolkit.
  • The application framework:
    • Core (libmokocore): This provides the core functionality to the framework, such as the switching device, reading/ writing data, application-toapplication signalling, etc. It makes use of the Dbus and Gconf packages.
    • .Net (libmokonet): It provides the core networking functionality to the framework. It makes use of libgsm, bluez-lib and libgps.
    • UI (libmokoui): It provides the UI programming capabilities to the platform and makes use of GTK and ALSA (for applications interacting with audio devices). The standard GTK has been customised to provide a rich mobile application-development experience.
    • PIM (libmokopim): Provides the core PIM (personal information management) capabilities. It makes use of the embedded Evolution data server.
  • Applications:
    • X11 applications: Standard X11 applications linked to libX11.
    • Finger applications: Includes the dialler, menu, media player, etc.
    • Stylus applications: Includes contacts, messages, search applications, etc.
    • Third-party applications: Various heavy-duty applications like Web browsers, instant messaging applications, etc.

Subsequent to this quick introduction to the upcoming Openmoko platform, in forthcoming articles I’ll show you how to build and run Openmoko applications. The experience is like hacking the world’s best phone environment at your workbench—and yes, nobody is going to sue you! Dont forget to post in your comments at kunaldeo at gmail.com

--Kunaldeo 10:54, 30 June 2008 (UTC)

But what if somebody important calls?

The reader should still be aware that Openmoko is not the fully polished product as some of the other phones on the market. However, with your help...