introduction to open source platform
DESCRIPTION
This slide was prepared in Mandarin, and about open source system for non technical background peopleTRANSCRIPT
開放式平台的機會與應用大華科技大學 數位內容科技系 林獻堂
Agenda
前言 開放觀念的演進 開放原始碼軟體的發展 行動開放平台: Android 人機互動的新趨勢 結論 Demo
前言
前言 話說「天下大勢,分久必合,合久必分」 今說「平台大勢,開久必閉,閉久必開」 開放的精神是取之於社會,用之於社會 個體貢獻一己之力,享受匯集全體的成果 1985 年萌芽的開放概念,間接直接造就今日科
技狂潮 即使如間接導致自由軟體與開放原始碼運動的微
軟,都必須擁抱開放原始碼 對於現在生活影響甚巨的 SoLoMo 服務,就是受
惠於開放概念的一個典型例子
何謂 SoLoMo
KPCB 合夥人 John Doerr 在 2011 年 2 月於Google Think Mobile Conference 演講中,首度提出 SoLoMo 一詞
So(Social) :當今火紅的 Social Network Sites 或是 Social Media ,都是 Web2.0 的典型,而 Web2.0的精神就是 UGC (User Generated Content)
Lo(Location): 以 Google Map, Earth 提供的服務為典型
Mo(Mobile) :資訊科技的現在與未來趨勢行動運算, Google 的 Android 是一個典型的平台
審視 SoLoMo 的三個支柱,開放觀念隨處可見
SoLoMo 的概念架構圖
安裝應用程式 Apps的行動裝置(Mobile),經由 GPS或是Wireless AP取得位置資訊( Location),並經由 3G或Wireless取得社群應用服務( Social)
Location(地理資訊 )
) Social(社群網站
Mobile(行動運算 )
開放觀念的演進
開放的歷史脈絡
開放概念的萌芽 Richard Stallman 於 MIT AI Lab 期間,不滿於以封閉軟體取代 Lab
中可自由流通的軟體 他於 1985 年發表了著名的 GNU 宣言 (GNU Manifesto) 正式宣布要
開始進行一項宏偉的計劃:創造一套完全自由,兼容於 Unix 的作業系統 GNU ( GNU's Not Unix! )
並於 1985 年成立自由軟體基金會 (Free Software Foundation , FSF)
他於 1989 年與一群律師起草了廣為使用的 GPL(GNU General Public License, GNU GP) ,且提出「 Copyleft 」的概念
Richard Stallman 是堅定的自由軟體運動倡導者 他與其他提倡開放原始碼的人不同,他認為使用專利軟體是非常不道德的事,只有自由的程序才是符合其道德標準的
對此許多人表示異議,並也因此有了自由軟體運動與開放原始碼軟體運動之分
自由的意義
Richard Stallman 認為軟體使用要有四大自由:
使用的自由:可以不受任何限制地來使用軟體 研究的自由:可以研究軟體運作方式、並使其適合個人需要
散 的自由佈 :可以自由地複製此軟體並散 給佈他人
改良的自由:可以自行改良軟體並散 改良後佈的版本以使全體社群受益
開放原始碼軟體 開放原始碼促進會於 1998 年成立,同時促使
Netscape公布 Navigator 的原始程式碼 開放原始碼的內涵是由 Bruce Perens所定義的 開放原始碼軟體 (Open source software) 是一種原
始碼可以任意取用的電腦軟體 開放原始碼軟體是以 GPL授權發行的軟體,以保障軟體使用者自由使用及接觸原始碼的權利。
這同時也保障了使用者自行修改、複製以及再分發的權利。
簡而言之:所有公布軟體原始碼的程式,都可以稱為開放原始碼軟體
自由軟體概念圖
資料來源: http://zh.wikipedia.org/wiki/File:Fsmap-zh_tw.svg
開放原始碼軟體與自由軟體的差異 嚴格地說來,開放原始碼軟體與自由軟體是兩個不
同的概念 只要符合開放原始碼軟體定義的軟體就能被稱為開
放原始碼軟體 自由軟體是一個比開放原始碼軟體更嚴格的概念,因此所有自由軟體都是開放原始碼的軟體,但不是所有的開放原始碼軟體都能被稱為「自由」
在現實上,絕大多數開源軟體開放原始碼軟體也都符合自由軟體的定義。比如,遵守 GPL和 BSD授權的軟體都是開放的並且是自由的
創用 CC(Creative Commons)
哈佛大學法學教授 Lawrence Lessig 於 2001 年在美國成立 Creative Commons 組織
提出「保留部份權利」 (Some Rights Reserve) 的相對思考與作法
Creative Commons 以模組化的簡易條件,透過排列組合,提供了 6種便利使用的公 授權條款眾
創作者可以挑選出最合適自己作品的授權條款,透過簡易的方式自行 標示 於其作品上,將作品釋出給大 使眾用
透過這種自願分享的方式,大家可以群力建立內容豐富、權利清楚、且便於散布的各式內容資源,嘉惠自己與其它 多的使用者眾
創用 CC授權方式
姓名標示姓名標示─非商業性姓名標示─非商業性─相同方式分享姓名標示─禁止改作姓名標示─非商業性─禁止改作姓名標示─相同方式分享
Linux Linux 是一種自由和開放原始碼的類 UNIX 作業系統核心
目前存在著許多不同的 Linux 發行版,可安裝在各種各樣的電腦硬體設備,從手機、平板電腦、路由器和影音遊戲控制台,到 上型電腦,大型電腦和超級電腦桌
只要遵循 GPL授權 ,任何人和機構都可以自由地使用Linux 的所有底層原始碼,也可以自由地修改和再發布
雖然 Linux 一詞本身只表示 Linux核心,但在實際上人們已經習慣了用 Linux 來形容整個基於 Linux核心
通常 Linux 會封裝成供 上型電腦和伺服器使用的桌Linux 發行版本
一些主流的 Linux 發行版本包括 Debian(衍生版本Ubuntu) , Fedora和 openSUSE等
Unix 與 Linux 歷史源流
資料來源 : http://zh.wikipedia.org/wiki/File:Unix_history.svg
開放原始碼軟體的發展
開放原始碼軟體的種類與形式 有 多的開放原始碼軟體,典型的系統有:眾 Linux OpenOffice Firefix CMS platform, 例如 phpBB, Eclipse Xmind Gimp …… 本報告探討專為非資訊背景人員所發展的開發與應用平台
開放原始碼軟體大事記
Design By Numbers (DBN) Design By Numbers (DBN) 是特地為教導沒有任何程式設計背景的藝術家與設計師程式概念的系統,它可以直接在瀏覽器內執行
DBN最早是由帶領MIT Media Lab 的 Aesthetics + Computation Group (ACG)團隊的 John Maeda所帶領的團隊在 1990s 年代所開發的
DBN只使用最少數量的語法與最簡單的開發環境,其目的是要容易使用,但是這也限縮了開發進階的應用的機會
累積數年的發展與傳授 DBN 之後, ACG團隊的Casey Reas and Benjamin Fry 在 2001 年聯手開發了 Processing
Source: http://www.asquare.org/networkresearch/2007/11
Processing
Processing 是一個開放原始碼的程式語言與整合式開發環境
它是專為數位藝術家與視覺傳達設計者所開發的環境
其目的是要教導與視覺內涵相關的電腦程式基礎,以及作為電子繪本的基礎
Processing 是架構在 Java 的基礎上,但是使用簡化的語法語及圖形式程式設計的模型
Wiring Wiring 是 Hernando Barragán 在 2003
年開始開發的開放原始碼原型平台 這個平台包含程式語言,整合式發展環境 (IDE) 與單板微控制器
Wiring IDE 是一個由 Processing 的IDE所衍生,且也是以 Java所開發的跨平台的應用程式
Wiring 的硬體參考設計是以創用 CC授權方式釋出
Wiring 的硬體使用 Atmel 的 ATMega系列晶片,包含atmega1281/atmega2561 與atmega644p
Arduino 開放原始碼硬體的觀念衍生自開放原始碼硬體軟體的觀念 透過開放原始碼的授權方式,將硬體的資料公開。硬體的
原始資料通常包括材料表 (BOM: Bill of Material)、電路圖(Schematic)、 線圖佈 (Layout)、驅動程式 (Device Driver)、應用程式介面 (API)、以及發展平台等
為協助學生以比較低的成本開發所設計的互動式專案, Italy某一大學的人員於 2005 年開發出以 Atmel 微控制器為基礎的 Arduino 系統,此系統採用開放原始碼硬體授權
Arduino 系統包含 Arduino板,週邊介面板 Shields 以及IDE 開發環境
Arduino 其實不是一個獨立的系統,而是衍生自其他更早期發展的系統 (Processing, wiring) ,同時也有許多系統是由他衍生出來的
Arduino board & IDE
Arduino Ecosystems
開源碼社群開源碼社群
IDE
Arduino
Shields
ProcessingProcessing
WiringWiring
FreeduinoFreeduino
WiseduinoWiseduino
Pre systems Post systemsArduino
圖形式程式語言 傳統的程式語言是一種敘述式的結構,程式是由一連串將敘述 (statement)依所需要的執行邏輯所構成的
學習程式的最重要目的是要利用電腦來解決問題,也就是將問題轉化成電腦可以處理的形式
大多數的人認為撰寫電腦程式是一件惱人且特殊的工作,只有受過特殊專業訓練的人才做得來
就傳統的 C++ 或是 Java程式語言來說,對於許多人來說或許真的是不好學習
由 MIT Media Lab所發展出來的圖形化程式設計語言 Scratch ,就是嘗試要突破這個限制
Scratch MIT 為小學生 (尤其弱勢的學生 )所開發的 Scratch
圖形化程式語言,是一個以圖形化的方法來學習程式語言
這個系統在非印歐語系國家,還有一個更重要的貢獻,是排除了母語的障礙
第一版的 Scratch 是由 MIT Media Lab 的 Mitchel Resnick所領導的 Lifelong Kindergarten group, 於2006 年所開發出來
Scrtatch 的特點 積木式程式設計流程 (Building-block programming) 媒體的應用 (Media manipulation) 分享與合作 (Sharing and collaboration) 。
Scratch範例
Fritzing
Fritzing 是一個開放原始碼的計畫,目的是要支援設計家,藝術家,研究者與玩家,靈活應用互動性電子裝置
Fritzing 可視為專為非工程師所開發的電子設計自動化 (EDA)工具
此計畫受到 Processing 與 Arduino 的鼓舞而建立軟體與網站,並開發讓使用者可以建立原型所需文件,與他人分享這些文件,在課堂上教導電子學,以及產生可用於專業生產所需的 PCB 局佈
2009 年 3 月份的版本開始跟 Arduino 結合
Fritzing
http://www.youtube.com/watch?v=Hxhd4HKrWpg&feature=player_embedded#!
行動開放平台: Android
Android重要里程碑
開放式平台 有各式開放平台,但以 Google
Android最具代表性 Google 於 2007 年 11 月宣布推出以
Linux 為基礎的 Android 開放式平台,讓加入開放手機聯盟( Open Handset Alliance )的 33 名中下游廠商,藉此平台開發其手機或行動網路裝置,而 Google則以廣告營收來獲取利益。
Android 概述 Android 平台由作業系統、中間層、用戶界面和應
用軟件組成 它採用 Software Stack 的架構,主要分為三部分 : 底層以 Linux 內核工作為基礎, android 系統效果
圖由 C語言開發,只提供基本功能 中間層包括函數庫 Library和虛擬機 Virtual
Machine ,由 C++ 開發 最上層是各種應用軟體,包括通話程序, SMS程序等,應用軟體則由各公司自行開發,主要是以Java 作為程式編寫
Android inside and outside
一張圖道盡 Android 發展史 (1/6)
資料來源 :http://www.xcubelabs.com/the-android-story.php
一張圖道盡 Android 發展史 (2/6)
資料來源 :http://www.xcubelabs.com/the-android-story.php
一張圖道盡 Android 發展史 (3/6)
資料來源 :http://www.xcubelabs.com/the-android-story.php
一張圖道盡 Android 發展史 (4/6)
一張圖道盡 Android 發展史 (5/6)
一張圖道盡 Android 發展史 (6/6)
何謂 APP APP 為 Application program 的縮寫,是在智慧型裝置如手機與平板上執行的應用程式
類似電腦中執行的程式,例如 word, 記事本,小畫家等
APP 為一種原生 (Native) 的程式碼,無法跨平台執行,例如 Android 的 APP 不可以放到Apple 的 iOS 中執行
而在網頁中應用程式 ( 例如 HTML5) 是可以跨平台執行
APP 與 HTML5各自擁有自己的支持陣營 選擇 APP 著重於效能,選擇 HTML5 著眼跨
平台,以及不需專屬 APP store 來發布
APP 的開發
需要使用一般程式語言整合式開發環境 IDE 來開發,例如
Android 使用 Eclipse 作為開發環境 Windows Phone 使用 Visual Studio 為開發環境
iOS 使用 xcode 開發環境 , 以 Objective C語言開發
上述開發環境的使用,通常需要資訊專業知識 一般非資訊專業者很難上手
APP Inventor
MIT教授 Hal Abelson 於 2008 年在 Google休假期間,興起 App Inventor 的想法
Google 在 2009 年底釋出 Beta版的 APP Inventor App Inventor 於 2012 年 1 月 1 日移交給 MIT
Center for Mobile Learning ,並已於 3 月 4日公使用佈
Google App Inventor 是一個完全線上開發的Android程式環境
棄複雜的程式碼而使用類似拋 Scratch 的積木式堆疊法來設計 Android程式
APP Inventor 概念圖
智慧型裝置的趨勢 智慧型手機與平板電腦,已經成為個人最普遍
的電子裝置 由面板尺度來看,由智慧型手機的小螢幕,到
平板的中螢幕,進到電視的大螢幕是必然的趨勢
智慧電視已經開始進駐家庭,智慧電視是具有作業系統而且可以執行 APP 的數位電視
智慧家庭也是時代的潮流之一 開放平台龍頭,透過 Android@Home將觸角深入一般家庭內
Android@Home Google 在 2011 年 5 月份舉行的 I/O 開發者年度大會
中,提出允許使用者與幾乎任何的電子設備間互動的平台 Android@Home
在家庭中可能的設備有家庭媒體設備、洗碗機、以及電燈等,在未來將可以使用新的平台來進行控制
透過智慧型手機、平板電腦或其它的小裝置以控制有連線的設備,已經討論多年,但是市場上一直沒有很恰當的應用
Android 平台在 3.1版的平台上引入對於 Android 開放週邊的支援,這個規範允許外部的 USB硬體 (Android USB週邊 ) 可以與搭載 Android 作業系統的裝置系統或是環境互動
現階段以 ADK(Accessory Development Kit) 對 Arduino提供支援,目前版本為 ADK 2012
APP 開發與應用的未來
APP具有最速流通的特點,開發具有創意的 APP 可以迅速擴散,例如 Angry Bird
已經有一些類似 APP Inventor 的開發平台存在
這些平台很多是以開發多媒體內容,例如電腦遊戲為主
這些工具的特點是在只需最少技術之下,可以讓自己的創意得到最大化的發揮
人機互動的新趨勢手勢互動、臉部與語音辨識
人機互動的本質 傳統的電腦介面,如鍵盤、滑鼠等不是最佳的人機介面
日本第五代電腦雖未於其宣示的期間內完成,但播下的種子卻在當今開花結果
體感式人機互動的蓬勃發展,得力於微機電技術、感測器技術、以及電腦軟硬體技術的進步
Wii, XBOX, Kinect, Siri等提供人與機器間更自然的互動途徑
Microsoft 浸式顯示沉 微軟最新申請與體感相關的專利: 浸式顯示體驗沉
(Immersive Display) 能將大幅影像以 360 度投影在任何環境中 未來凡是遊戲機中的影像都能跳脫電視螢幕的大小與邊框限制,直接在房間中呈現,虛擬與真實之間幾乎沒有界線
這個新裝置與 Kinect 的深度感測鏡頭系統緊密結合, 能 在現有的鏡頭處理以外納入多重影像捕捉裝置,將夠遊戲影像以廣角全景呈現
深度感測鏡頭能協助環境投影機感測房間的陳設與格局,投影機會隨之調整顏色,不會因為投射在家具或不同顏色的牆壁上而失真
Microsoft 浸式顯示沉
來自硬體廠商的人機互動支援 Intel 在 2012 年 9 月份於舊金山 Intel Developer
Forum (IDF) 中發表了以「 Haswell 」微架構為基礎的第 4 代 Intel Core 處理器系列
IT 業界正與英特爾合力透過第一個英特爾感知運算軟體開發套件 (Perceptual Computing Software Development Kit , SDK)公開測試版,將下一波感知運算功能融入到內含 Intel Core 處理器的平台
預計於 2012 年第四季初正式推出的軟體開發套件,讓硬體與軟體開發者把手勢互動、臉部與語音辨識以及擴增實境等功能納入於未來內含 Intel Core處理器的 Ultrabook 以及 PC產品
結論
開放平台的機會
讓一般人可以用較便宜的價格取得軟硬體設施
一般人可以容易學會電腦軟硬體技術,特別是在程式開發部份
讓沒有資訊專業背景的人,也可以容易的將資訊技術整合到自己的專業領域中
具資訊背景的專業人士也可以受惠於開放平台,而加速產品的開發
開放平台的應用
開放平台在教育方面,提供更活潑與簡單的教學模式,特別是教導非技術人員,資訊科技相關知識
智慧生活是開放平台在日常生活中應用的具體呈現
數位內容工作者是開放平台的最大受益者之一
人人都可以 DIY建立自己的智慧生活
Demo