152
Open Source Engineering fHalo

Open source engineering - 0.1

Embed Size (px)

Citation preview

Page 1: Open source engineering - 0.1

Open Source Engineering fHalo

Page 2: Open source engineering - 0.1

손영수 [email protected]

동완이 아빠 , 인옥이 남편 !!

EVA 팀 리더PLoP 패턴 저자

AsianPLoP 공동의장소프트웨어 마에스트로 멘토

Blog http://www.arload.net

Page 3: Open source engineering - 0.1

신재명 , 오유환 , 강미경 , 김영호

www.fHalo.org

소프트웨어 마에스트로 2기

fHalo 팀

Page 4: Open source engineering - 0.1

오픈소스 란 .

Page 5: Open source engineering - 0.1

3 명의 거장 .

Richard Stall-man

Linus Torvalds Eric S. Ray-mond

Page 6: Open source engineering - 0.1

처음 시작과 달리 현재의 오픈 소스는 ...

Page 7: Open source engineering - 0.1

인류애의 사랑 그리고 기업들의 총성 없는 전쟁이 공존하는 곳

Page 8: Open source engineering - 0.1

애플이 바라보는 Open Source

소프트웨어 자산 나쁜 마켓 쉐어링 Half-Open/Half-Close

Page 9: Open source engineering - 0.1

구글이 바라보는 Open Source

소프트웨어 자산 Free Outsourcing(EcoSystem 구축 )

표준화 및 비 표준화

Page 10: Open source engineering - 0.1

재미난 Web 브라우저 시장

Page 11: Open source engineering - 0.1

Google 이 잘될수 밖에 없는 이유 ..• CanvasGL – a GPU-accelerated We-

bkit

Page 12: Open source engineering - 0.1

1. 라이센스

Page 13: Open source engineering - 0.1

Open Source License

License 분류 참고 자료 , http://www.olis.or.kr/ossw/license/license/list.do

Page 14: Open source engineering - 0.1

Open Source License

출처 , http://freshmeat.net/stats/#license, 2008 년

하지만… . Open Source 통계는 ?

GPL LGPL

BSD MIT

기타

GPL (60%)

LGPL (7%)BSD (6%)MIT (2%)

Page 15: Open source engineering - 0.1

Open Source License

MPL (4%)BSD (64%)GPL (32%)

GPL BSD

MPL 기타

그리고 , 현재는 ?SourceForge, Code Complex, Google Code, Savannah, RubyForge, GitHub.

Page 16: Open source engineering - 0.1

주요 License 비교• 저작권 보호 기능을 제공 ?• 상용 소프트웨어에서 사용 가능 ?• 버그 패치 및 기능 확장 공개 의무 ?• 명시적 특허권 행사 가능 여부 ?• 독점 프로그램에서 사용 가능 ?• 라이선스 전파 가능 ?

Page 17: Open source engineering - 0.1

주요 License 비교GPL LGPL MIT BSD Apach

e

저작권 보호 기능 O O O O O

상용 SW 사용 가능 O O O O O

기능 확장 공개 의무 O O X X X

특허권 행사 가능 X X X X O

독점 프로그램에서 사용 가능 여부 X O O O O

라이선스 전파 여부 O O X X X

Page 18: Open source engineering - 0.1

License 특허권

Page 19: Open source engineering - 0.1

주요 오픈소스 SW 사례

Page 20: Open source engineering - 0.1

오픈 소스 라이선스 위반

오픈 소스 라이선스 분쟁

Page 21: Open source engineering - 0.1

오픈 소스 라이선스 위반 사례

Page 22: Open source engineering - 0.1

2. Committer & Reviewer Policy

Page 23: Open source engineering - 0.1

OSP 의 방향을 좌우 하는자 Committer & Reviewer..

• 정부 주도형 – Webinos (EU 에서 주관 )

• 기업 컨소시엄 주도형– Webkit ( Apple + Google)

• 폐쇄형– jQuery ( 개인마음대로 -> Boarding 맴버 선정 )

Page 24: Open source engineering - 0.1

3. 공개 이전에 사용부터 .Android 의 문제를 오픈소스로 ..

Page 25: Open source engineering - 0.1

3.1 REST 의 귀찮음 .

Page 26: Open source engineering - 0.1

Stub

Proxy

DAOCon-troller

REST

GETDTO

Page 27: Open source engineering - 0.1

AfterRefactoringCustomer

+AmountInvoicedIn(Period: DateRange)+AmountRecievedIn(Period: DateRange)+AmountOverDueIn(Period: DateRange)

BeforeReactoringCustomer

+AmountInvoicedIn(start: Date, end: Date)+AmountRecievedIn(start: Date, end: Date)+AmountOverDueIn(start: Date, end: Date)

같이 뭉쳐 다니는 파라메터는 ParameterObject 로 묶어라 !

Page 28: Open source engineering - 0.1

XML 파싱 이렇게 ??

Page 29: Open source engineering - 0.1

Simple Framework 를 이용하세요 .

http://simple.source-forge.net/

Page 30: Open source engineering - 0.1

이렇게 됩니다 .

Page 31: Open source engineering - 0.1

3.2 아직도 Logcat?

Page 32: Open source engineering - 0.1

여러분이 만든 시스템이 죽었다 .

미국에서… .

Page 33: Open source engineering - 0.1

Logcat 보러 출장 ?

Page 34: Open source engineering - 0.1

새로운 log..

4

Page 35: Open source engineering - 0.1

먼저 Log Management 패턴부터…

Page 36: Open source engineering - 0.1

log4xxx

Page 37: Open source engineering - 0.1

Microlog4android 사용법• http://code.google.com/p/microlog4android/down-

loads/ 에서 microlog4android-1.0.0.jar 다운• Android 프로젝트에 jar 추가• AndroidManifest.xml 에

android.permission.WRITE_EXTERNAL_STORAG E 추가

Page 38: Open source engineering - 0.1
Page 39: Open source engineering - 0.1

로그를 Network 서버로 보내는

Appender 도 있으나약간의 코딩이 필요 .

Page 40: Open source engineering - 0.1

4. Open Source Engineer-ing

Page 41: Open source engineering - 0.1

4.1 Facebook 의 가치 그리고 문제점 ..

Page 42: Open source engineering - 0.1

세계에서 가장 큰 서비스?

854,750,780( 약 8 억 5 천만 )

Page 43: Open source engineering - 0.1

가장 오랜시간 이용하는 서비스?

Page 44: Open source engineering - 0.1

Social Plugin ?Open Graph ?Social Channels ?Authentication ?Graph API ?

을 개발하려면… 너무 많은 것을 알아야 한다 .

Page 45: Open source engineering - 0.1

batchFB

facebook SDK for AndroidzendFBlibfacebook-AWD

facebook SDK for .net

을 개발하려면… 쓸만한 녀석이 없다 ..

Page 46: Open source engineering - 0.1

확장성 편의성 사용성 안정성

Framework 의 문제점 ..

?기존

Page 47: Open source engineering - 0.1

framework

facebook framework Project

그래서 우리는 ..

를 시작했습니다 .

Page 48: Open source engineering - 0.1

4.2 Facebook 기본 개념

Page 49: Open source engineering - 0.1

49

Graph API?• Graph API

– 페이스북의 핵심인 소셜 그래프의 Object( 친구 , 페이지 , 사진 등 )를 다루는 API

Page 50: Open source engineering - 0.1

50

About Graph API• Graph API 의 구조

– https://graph.facebook.com/OBJECT ID/CONNECTION TYPE

• ID 는 사용자 , 페이지 , 이벤트 , 사진 등의 Object ID– 약 20 개의 Object 를 지원 – 모든 Object 의 ID 는 unique 하다– JSON 형태로 응답을 받는다

Page 51: Open source engineering - 0.1

51

About Graph API(Example)• https://graph.facebook.com/100001066448386/

• https://graph.facebook.com/40796308305/

신재명 ID

코카콜라 페이지 ID

Page 52: Open source engineering - 0.1

52

About Graph API• Graph API 의 구조

– https://graph.facebook.com/OBJECT_ID/CONNECTION_TYPE

• Connection 이란 ?– Object 의 연관 ( 관계 ) 개념

• User object 의 Connection 종류– Family, friends, album, likes, posts …– User object 경우 약 25 개의 Connection 을 제공– https://developers.facebook.com/docs/reference/api/user/ 참고

Page 53: Open source engineering - 0.1

53

About Graph API• Graph API 예시

– https://graph.facebook.com/100001066448386/friends

– https://graph.facebook.com/100001066448386/family

그럼 보안문제는 ???

Page 54: Open source engineering - 0.1

54

About Graph API• https://graph.facebook.com/

100001066448386/friends

– Access Token 필요 !

• Access Token 은 Oauth 2.0 인증을 통해 얻어온다– 하지만 Test 를 위해 Graph API Explorer 를 제공

• Facebook 개발의 필수 Tool Graph API Explorer – https://developers.facebook.com/tools/explorer#!/tools/explorer

Page 55: Open source engineering - 0.1

55

About Graph API• Graph API Explorer

– Access Token 받을 수 있다– 각종 Graph API 를 테스트 해볼 수 있다

Page 56: Open source engineering - 0.1

4.3 Facebook 개발 도구에 대한 문제인식

Page 57: Open source engineering - 0.1

Graph API 를 이용하여 친구리스트를 가져오는 소스자신의 친구리스트를 가져오는 메소드를 호출한 다음반환 값인 JSON 데이터를 일일이 파싱하는 과정을 거침

try{URL url = new URL("https://graph.facebook.com/friends?access_token=ACCESS_TOKEN");connection = (HttpsURLConnection) url.openConnection();connection.setRequestMethod("GET");connection.setRequestProperty("Content-Type" , "application/x-www-form-urlencoded");connection.connect();InputStreamReader reader = new InputStreamReader(connection.getInputStream());bufferedReader = new BufferedReader(reader);String temp = null;StringBuffer buffer = new StringBuffer();while ((temp = bufferedReader.readLine()) != null) {

buffer.append(temp);}JsonObject json = new JsonObject(buffer.toString());JsonArray jsonArray = json.getJsonArray(“data”);For(int i=0;i<jsonArray.length();i++){

JsonObject jsonObject = jsonArray.getJsonObject(i);System.out.println(“My friends : " + json.get("name"));

}}connection.disconnect();

간단한 것 하나 하려고 해도코드를 길게… ..

그리고 너무 복잡하다 .

Page 58: Open source engineering - 0.1

기존 framework 의 문제점

Circular dependency 발생 , 안정적이지 못한 구조facebook SDK for Android

Page 59: Open source engineering - 0.1

다양한 문제요소 , 높은 오염도 내포

Tangled

Pollution : 4.19 Pollution : 2.18

facebook SDK for Android

기존 framework 의 문제점

Page 60: Open source engineering - 0.1

4.4 Facebook 프레임워크 개발하기

Page 61: Open source engineering - 0.1

먼저 프로젝트 목표 ( 품질 ) 설정• Framework 의 80 대 20 법칙• 높은 사용성 확보 . ( 쉬운 개발 )• 튼튼한 아키텍처 확보• 오픈 소스를 통한 공유와 확장

Page 62: Open source engineering - 0.1

4.4.1 팀원의 크기에 맞게 운용

Small Team Large Team

Page 63: Open source engineering - 0.1

Framework 를 구축하는 팀원이 작으면 ..

Small Team

Simple Design

Consistency Design

Focus on 80/20 Rules

Page 64: Open source engineering - 0.1

Large Team

Framework 를 구축하는 팀원이 매우 많다면 ..

Powerful Design

Lack Consistency

Remove Requirements

Page 65: Open source engineering - 0.1

Framework 핵심 기능 찾기내가 만들 FB App 에 필요한 기능들 추출 ..

Page 66: Open source engineering - 0.1

분류화 시키기 Framework 핵심 기능 찾기

Page 67: Open source engineering - 0.1

20/80 Rule 에 의거한 기능 추출Framework 핵심 기능 찾기

Page 68: Open source engineering - 0.1

우리가 만든 오픈소스 (프레임워크 )를 과연 다른 개발자가 쓸까?

사막을 달리고 있지 않나요 ?

4.4.2 높은 사용성 확보

Page 69: Open source engineering - 0.1

You need Feedback.

Page 70: Open source engineering - 0.1

DO design APIs by first writing code samples for the main scenarios and then defining the object model to support the code sam-

ples.

Page 71: Open source engineering - 0.1

Code Samples

Page 72: Open source engineering - 0.1

Read Filestatic void Main(string[] args) { StreamReader sr =

File.OpenText("MyFile.txt"); string s = sr.ReadLine();

while (s != null) { s = sr.ReadLine(); Console.WriteLine(s); } }

Page 73: Open source engineering - 0.1

static void Main(string[] args){ foreach (string s in

File.ReadAllLines("MyFiles.text")) { Console.WriteLine(s); }}

Feedback (Read File)

Page 74: Open source engineering - 0.1

Object Model Listing

Page 75: Open source engineering - 0.1

framework 사용자 시나리오 산출

Page 76: Open source engineering - 0.1

framework 사용자 시나리오 산출

Page 77: Open source engineering - 0.1

framework 사용자 시나리오 산출

Page 78: Open source engineering - 0.1

framework 사용자 시나리오 산출

Page 79: Open source engineering - 0.1

친구 리스트 가져오기 ( 페이스북 API)

Page 80: Open source engineering - 0.1

친구 리스트 가져오기– Rest FB

• Connection<User> myFriends = facebookClien-t.fetchConnection("me/friends", User.class);

– fHalo• Connection<Friends> friends =

user.friends();

Page 81: Open source engineering - 0.1

피드 올리기 ( 페이스북 API)

Page 82: Open source engineering - 0.1

피드 올리기– Rest FB

• FacebookType publishMessageResponse =facebookClient.publish("me/feed", FacebookType.-class,Parameter.with("message", "RestFB test"), Parame-ter.with(“caption", “caption test"), Parameter.with(“description", “description test"),);

– fHalo• Feed feed = new feed();

feed.setMessage("Message Test"); feed.setCaption("Caption Test"); feed.setDescription("Description Test"); user.publishFeed(me, feed);

Page 83: Open source engineering - 0.1

4.4.3 튼튼한 아키텍쳐

Page 84: Open source engineering - 0.1

튼튼한 아키텍쳐의 중요성 ..그리고 어떻게 파악하지 ?

Page 85: Open source engineering - 0.1

왜 오픈소스에서 아키텍쳐가 중요한가 ?

Page 86: Open source engineering - 0.1

높이 (30000 feet) 봐야 할까 ?

Page 87: Open source engineering - 0.1

높이 봐야 할까 ?

Page 88: Open source engineering - 0.1

자세히 (0 feet) 봐야 할까 ?

Page 89: Open source engineering - 0.1

자세히 봐야 할까 ?

Page 90: Open source engineering - 0.1

3 만 피트 vs 0 피트의 뷰 .3 만 피트• 다이어그램의 Line 의 의미는 ?

• 의존성 ?• 데이터 흐름 ?• 버스와 같은 공유자원 ?

0 피트• 너무 상세한 정보임 .• 전체적인 구조를 보지 못함 .

Page 91: Open source engineering - 0.1

해결책은 ..적절한 1000 피트의 뷰

Page 92: Open source engineering - 0.1
Page 93: Open source engineering - 0.1

xDepend (Ndepend, Xdepend, CDepend)

NDepend - http://www.xdepend.com

Page 94: Open source engineering - 0.1

또 하나의 도구 – Code Metrics

Demo

Page 95: Open source engineering - 0.1

STAN (Structure Analysis for Java)

STAN - http://stan4j.com/eclipse/eclipse-integration.html

Demo

Page 96: Open source engineering - 0.1

Robert C. Martin 의 그래프

Page 97: Open source engineering - 0.1

Instability•패키지의 안정성을 측정•다른 패키지에 영향을 미치지 않고 , 해당 패키지를 쉽게 변경 수 있는가 ?

•Instability I = Ce / (Ca+Ce)

•Ce = Efferent Coupling (Outgoing Dependencies)•Ca = Afferent Coupling (Ingoing Dependencies )

Page 98: Open source engineering - 0.1

Instability

Instability I = Ce / (Ca+Ce)당신의 패키지가 다른 사람이 많이 쓴다면, 즉 Outgoing, Ce가 많다면, 여러분의 패키지는 변경하기 어렵다.

반대로 Outgoing하는 Ce가 적다면, 여러분의 패키지는 쉽게 변경해도 된다.즉 0.0에서 0.3이면 안정적인 버전, 0.7에서 1.0이면 불안정적인 상태다

당신의 패키지를 누군가 많이 쓰고 있다면

바꾸기 쉽지 않다 .

Page 99: Open source engineering - 0.1

AbstractnessInterface(Abstract) 와 Concrete Class를 비교

A = (#abstract classes / total # of classes)

•Abstract class = interface, abstract 다 포함•Total # class = abstract class + concrete class

•0 이면 concrete class 만 있다 . •1 이면 abstract class 만 있다 .

Page 100: Open source engineering - 0.1

다시 보는 그래프

조금 더 ab-stract 를 높여야 돼 !

Page 101: Open source engineering - 0.1

그 외 용어•Tangled Complexity

• 순환 참조가 있어 Boundary 를 깰 때•Cyclomatic Complexity

• 분기 문이 많아 hotspot 이 될 가망성이 높은 곳

Page 102: Open source engineering - 0.1

경고 !!!환자의 외부 증상만 고치는 의사가 되지 말자 !!

이러한 정보는 좋은 가이드일뿐 !! 숫자에 의존하다가 오히려 아키텍쳐가 무너진다 .

Page 103: Open source engineering - 0.1

아키텍쳐 구조

facebook SDK for Android

Page 104: Open source engineering - 0.1

아키텍쳐 구조

fHalo Framework

Page 105: Open source engineering - 0.1

아키텍쳐 구조

facebook SDK for Android

Page 106: Open source engineering - 0.1

아키텍쳐 구조

fHalo Framework

Pollution : 0.97

Page 107: Open source engineering - 0.1

- Gof 디자인 패턴의 저자 / 프레임워크의 대가 Ralph Johnson

“ 안정화된 framework 을 얻기 위해 최소 3 번의 target application 을 기반으로 만들어진 framework 여야 된다 .”

- Gof 디자인 패턴의 저자 / 프레임워크의 창시자 Ralph Johnson

1. 자체적인 Target Application 개발2. 페이스북을 활용하는 ‘ Yellow Ribbon’ 팀과의 협력3. 페이스북 헤카톤으로 또 한번의 검증

4.4.4 3 Example 로 품질 확보하기

Page 108: Open source engineering - 0.1

Target Application - enjoybazaar

Page 109: Open source engineering - 0.1

Target Application – Yellow Ribbon

Page 110: Open source engineering - 0.1

Target Application – Promise Mind

Page 111: Open source engineering - 0.1

4.4.5 외부로 오픈하기

Page 112: Open source engineering - 0.1

Project Page Open! – jQuery Page

Page 113: Open source engineering - 0.1

Project Page Open!

Page 114: Open source engineering - 0.1

github Repository Open Page Open!

Page 115: Open source engineering - 0.1

Step by Step Tutorial

Step1Import fHalo.jar

Step2Get access token

Step3Create instance

Step4Using API

Page 116: Open source engineering - 0.1

Video Tutorial

Page 117: Open source engineering - 0.1

Video Tutorial 동영상 통계자료

Page 118: Open source engineering - 0.1

Video Tutorial – Feedback 1

Page 119: Open source engineering - 0.1

- 오픈소스 SW 의 탄생부터 현재까지의 역사를 한눈에 보여주는 박물관

- 오픈소스 SW 의 개발과 진화과정을 추적하고 공개하는 사이트

- 품질을 평가할 수 있는 다양한 지표들을 제공

Ohloh.net

Page 120: Open source engineering - 0.1

5. GitHub

Page 121: Open source engineering - 0.1

121

버전 관리 시스템• 버전 관리 시스템 (Version Control System)

– 프로젝트 파일의 변경사항을 추적하는 하나의 시스템• 가장 단순한 버전 관리 방법

– 백업 파일 복사 , 협업시 파일 주고 받음

Page 122: Open source engineering - 0.1

122

버전 관리 시스템• 기존의 불편한점 개선 버전 관리 시스템

– 버전 컨트롤 자동화 , 간편한 소스 변경이력 관리– 손쉬운 협업 , roll back, 병렬작업

Page 123: Open source engineering - 0.1

123

중앙 집중식 버전관리• 중앙 집중식 버전관리

– CVS(Concurrent Version System), SVN(Subversion) 소스변경 이력을 보려면 중앙 저장소에 접근해야함

Page 124: Open source engineering - 0.1

124

분산 버전관리• 분산 버전관리

– Git 자신만의 저장소를 가진다

• Linux Kernel, Android, Ruby on Rails 등의 open source– Git 이용

Page 125: Open source engineering - 0.1

125

Git 주요 용어• Repository

– 저장소로 변경한 모든 내용이 담겨있다 ( 소스코드 , 날짜 , 사용자 , 설명로그 등 )

• Commit– 로컬 저장소에 변경 내용 저장

• Pushing– 원격 저장소에 변경 내용 저장

• Pulling– 원격 저장소로부터 최신 코드 받아옴

Page 126: Open source engineering - 0.1

126

Git 주요 용어• Branch

– 작업 트리중 하나의 가지

– 후에 master branch 와 합치거나 실험해 본 후 삭제• Merge

– Branch 를 합침

Page 127: Open source engineering - 0.1

127

Git 사용법• Repository

– Github– 네이버개발자센터– Bitbucket

• Github 사용– http://github.com

• Git download– http://help.github.com/win-set-up-git/

Page 128: Open source engineering - 0.1

128

Git 사용법• Git Bash

• SSH key 생성– ssh-keygen –t rsa –c “[email protected]”– C:\Users\JM\.ssh\id_rsa.pub

• SSH key 확인

Page 129: Open source engineering - 0.1

129

Git 사용법• SSH key 등록

Page 130: Open source engineering - 0.1

130

Git 사용법• 기본 환경설정 (Git bash)

– Git config --global user.name “Jaemyung Shin”– Git config --global user.mail “[email protected]

com”

Page 131: Open source engineering - 0.1

131

Git 사용법• 1.Git 설정 2.Commit 3.Pushing 4.Pulling

• 1.Git 설정– Git init 을 통해 로컬 저장소 생성

– Git add < 파일명 > 을 통해 파일 추가

Page 132: Open source engineering - 0.1

132

Git 사용법• 1.Git 설정 2.Commit 3.Pushing 4.Pulling

• 2. Commit– 변경 사항들을 로컬저장소에 저장– Git commit –m “commit log”

Page 133: Open source engineering - 0.1

133

Git 사용법• 1.Git 설정 2.Commit 3.Pushing 4.Pulling

• 3. Pushing– 로컬저장소의 파일을 원격저장소에 저장 – Git push < 저장소 URL>

Page 134: Open source engineering - 0.1

134

Git 사용법• Create repository

• 원격 저장소 주소 필요– [email protected]:fHalo/test.git

원격저장소 URL

Page 135: Open source engineering - 0.1

135

Git 사용법• Push 후 github 화면

Page 136: Open source engineering - 0.1

136

Git 사용법• 1.Git 설정 2.Commit 3.Pushing 4.Pulling

• 4. Pulling– 원격저장소의 파일을 로컬저장소로 가져옴– Git pull

Page 137: Open source engineering - 0.1

137

Egit• Eclipse Git

– Eclipse plug-in 으로 간편히 제공– Help Install New Software Add(http://www.jgit.org/updates)

Page 138: Open source engineering - 0.1

138

원격 프로젝트 생성• Import Git

– Local : 로컬에있는 Git 프로젝트로 생성– URI : 원격지에 있는 Git 프로젝트 다운 (Pull)

Page 139: Open source engineering - 0.1

139

원격 프로젝트 생성• URI, Authentication 채우기

– URI : 저장소 주소– Authentication : github ID, PW

Page 140: Open source engineering - 0.1

140

Egit 사용법• Git project 생성 후

• 소스 변경 후 – > 소스코드 변경됨

• Commit 후– ↑ Commit 회수

Page 141: Open source engineering - 0.1

141

Egit 을 이용한 Commit• Commit

– 로컬저장소에 변경내용 저장

Page 142: Open source engineering - 0.1

142

Egit 을 이용한 Commit 이력 보기• Show history

– Commit 이력보기

Page 143: Open source engineering - 0.1

143

Egit 을 통한 Push• Push

– 로컬저장소의 내용을 원격저장소로 전송

Page 144: Open source engineering - 0.1

144

Egit 을 이용한 Pulling• Pulling

– 원격지에 최신 코드를 로컬로 받아옴– 충돌없을경우 Pulling 성공– 충돌할경우 충돌로그

소스구분선

Page 145: Open source engineering - 0.1

145

Egit 을 통한 roll back• 예전 코드로 복원하기

– Revert commit

Page 146: Open source engineering - 0.1

6. 마무리 및 참고자료

Page 147: Open source engineering - 0.1

- 전세계에서 가장 큰 서비스 , 가장 오랜시간 활용하는 서비스는페이스북이다 .

- 그러나 , 실제 페이스북 서비스 개발을 위해서는 많은 어려움이 있다 .

그래서 , 개발자를 위한 페이스북 프레임워크를 OpenSource 로 개발

- 견고한 아키텍쳐와 높은 사용성과 확장성을 목표로 다양한 과정을거쳐 개발

- 실제 OpenSource 로 진행하기 위해 ProjectPage 와 개발자 Tuto-rial,개발 문서 등을 체계적으로 준비

- 또한 , 프레임워크의 안정성을 높이고 실제 사용성 테스트를 위해 , Facebook Feature 를 활용한 TargetApplication 개발

요 약

fHalo Project

Page 148: Open source engineering - 0.1

- jQuery, Spring 과 같이 성공한 OpenSource 로 발전

- 타임라인 / 크레딧 등 페이스북에서 제공되는 신규 기능들을 꾸준히반영하여 All in One SDK 로 발전

- 페이스북의 Meta Data 를 활용할 수 있는 DA(Data Analysis) 와

DV(Data Visualization) 를 제공하는 SDK 발전 , 페이스북 개발자 생태계에 좋은 영향을 제공

- 현재 진행한 프로젝트는 다양한 세미나 주제 발표와 월간 ‘마이크로 소프트웨어’에 3~4 개월여에 걸쳐 기고 하여 , 널리 알리고 공유할 예정 .

향후 발전방향

fHalo Project

Page 149: Open source engineering - 0.1

Q&A

Page 150: Open source engineering - 0.1

• Github Wiki page – https://github.com/fHalo/fHalo/wiki

Additional

Page 151: Open source engineering - 0.1

• fHalo web site– http://fhalo.org/index.html

Additional

Page 152: Open source engineering - 0.1

• 구글독스를 통한 사용성 회의– goo.gl/WhABe

Additional