주요 License 비교
Apach
GPL LGPL MIT BSD
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
Open Source License
Open Source License 통계는 ?
GPL (60%)
GPL
MIT (2%) LGPL
BSD
BSD (6%)
MIT
LGPL (7%)
기타
출처 http://bit.ly/JqfTFz , 2008년
Open Source License
그리고, 현재는 ?
SourceForge, Code Complex, Google Code, Savannah, RubyForge, GitHub.
GPL
GPL (32%) BSD
MPL
BSD (64%)
기타
MPL (4%)
출처, http://bit.ly/K8dZtU , 2011년
주요 License 특허권 행사
Apach
GPL LGPL MIT BSD
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
About Graph API
• Graph API
– 소셜 그래프의 Object(친구, 페이지, 사진 등)를 다루는 API
• Graph API의 구조
– https://graph.facebook.com/OBJECT_ID/CONNECTION_TYPE
• ID는 사용자, 페이지, 이벤트, 사진 등의 Object ID
– 약 20개의 Object를 지원
– 모든 Object의 ID는 unique하다
– JSON 형태로 응답을 받는다
48
Graph API Example
• https://graph.facebook.com/100001066448386/
신재명 ID
• https://graph.facebook.com/40796308305/
코카콜라 페이지 ID
49
Graph API - Connection
• 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/ 참고
50
Connection - Example
• Graph API 예시
– https://graph.facebook.com/100001066448386/friends
그럼 보안문제는 ???
51
Access Token
• 페이스북 API를 사용하기 위해 Access Token(인
증)이 필요하다.
• Graph API Explorer를 통하여 쉽게 Access Token
을 받아올 수 있음
52
About Graph API
• Graph API Explorer
– Access Token 받을 수 있다
– 각종 Graph API를 테스트 해볼 수 있다
https://developers.facebook.com/tools/explorer#!/tools/explorer 53
Instability
•패키지의 안정성을 측정
•다른 패키지에 영향을 미치지 않고,
해당 패키지를 쉽게 변경 수 있는가?
•Instability I = Ce / (Ca+Ce)
•Ce = Efferent Coupling (Outgoing Dependencies)
•Ca = Afferent Coupling (Ingoing Dependencies )
Instability
Instability I = Ce / (Ca+Ce)
당신의 패키지가 다른 사람이 많이 쓴다면,
즉 Outgoing, Ce가 많다면, 여러분의 패키지는 변경하기 어렵다.
반대로 Outgoing하는 Ce가 적다면, 여러분의 패키지는 쉽게 변경해도 된다.
즉 0.0에서 0.3이면 안정적인 버전, 0.7에서 1.0이면 불안정적인 상태다
Abstractness
Interface(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만 있다.
4.4.5 3 Example로 품질 확보하기
1. 자체적인 Target Application 개발
2. 페이스북을 활용하는 „Yellow Ribbon‟ 팀과의 협력
3. 페이스북 헤카톤으로 또 한번의 검증
“안정화된 framework을 얻기 위해 최소 3번의 target application을
기반으로 만들어진 framework 여야 된다.”
- Gof 디자인 패턴의 저자 / 프레임워크의 대가 Ralph Johnson
- Gof 디자인 패턴의 저자 / 프레임워크의 창시자 Ralph Johnson
fHalo 향후 발전방향
- jQuery, Spring 과 같이 성공한 OpenSource 로 발전
- 타임라인/크레딧 등 페이스북에서 제공되는 신규 기능들을 꾸준히
반영하여 All in One SDK로 발전
- 페이스북의 Meta Data를 활용할 수 있는 DA(Data Analysis)와
DV(Data Visualization) 를 제공하는 SDK 발전, 페이스북 개발자
생태계에 좋은 영향을 제공
- 현재 진행한 프로젝트는 다양한 세미나 주제 발표와
월간 „마이크로 소프트웨어‟에 3~4개월여에 걸쳐 기고 하여,
널리 알리고 공유할 예정.
Ohloh.net
- 오픈소스SW의 탄생부터 현재까지의 역사를 한눈에 보여주는 박물관
- 오픈소스SW의 개발과 진화과정을 추적하고 공개하는 사이트
- 품질을 평가할 수 있는 다양한 지표들을 제공
Git 기본 환경설정
• 기본 환경설정(Git bash)
– Command창 에서 이름과 메일을 입력
Git config --global user.name “Jaemyung Shin”
Git config --global user.mail “kicklassl@naver.com”
136
Git 설정
• Git init을 통해 로컬 저장소 생성
• Git add <파일명> 을 통해 파일 추가
1.Git 설정 2.Commit 3.Push 4.Pull
137
Commit
• 변경 사항들을 로컬저장소에 저장
• Git commit –m “commit log”
1.Git 설정 2.Commit 3.Push 4.Pull
138
Push
• 로컬저장소의 파일을 원격저장소에 저장
• Git push <원격저장소 URL>
1.Git 설정 2.Commit 3.Push 4.Pull
139
요약
오픈 소스는 인류애적인 사랑과 밴더들의 전쟁이 공존하는 곳.
오픈 소스는 소프트웨어 개발에 중요한 Asset이다.
사용하든, 배포하든 라이선스를 주의해라.
배포시 Committer & Reviewer Policy를 주의해라.
외부의 도움 (아웃 소싱)을 받기 위해선 구조적 설계가 중요.
엔지니어링 기법 소개
Git & GitHub 사용법
fHalo Project
참고 자료
• License 분류 참고 자료
– http://bit.ly/KkPDBP
• Open Source License 통계
– http://bit.ly/JqfTFz
– http://bit.ly/K8dZtU
참고 자료
• Github Wiki page
– https://github.com/fHalo/fHalo/wiki