SlideShare a Scribd company logo
1 of 63
Download to read offline
오픈소스 개발오픈소스 개발
BBeehhiinndd tthhee SScceenneess

2018.10.172018.10.17
박재성박재성
the 'why?'the 'why?'
오픈소스오픈소스
왜관심을갖고있나?왜관심을갖고있나?
내실력을과시하기위해
좋은이직/취업기회를얻기위해
멋져보이기때문
요새다들한두개씩컨트리뷰션하더라...
오픈소스는...오픈소스는...
물위에서헤엄치기위해쉴새없이움직여야하는오리발과같다.물위에서헤엄치기위해쉴새없이움직여야하는오리발과같다.

[ImageSource][ImageSource]http://webneel.com/daily/duck-swimming-photographyhttp://webneel.com/daily/duck-swimming-photography
오픈소스의 시작오픈소스의 시작
오픈소스는 어디에서 왔나?오픈소스는 어디에서 왔나?
RichardMatthewStallmanRichardMatthewStallman
(1983)(1983)
(1985)(1985)
GNUprojectGNUproject
Open SourceOpen Source
OpenSource라는정의는OpenSource라는정의는
Netscape의코드를공개하기위한전략회의에서처음사용Netscape의코드를공개하기위한전략회의에서처음사용
기존의freesoftware는비용을연관시키는문제로인해기존의freesoftware는비용을연관시키는문제로인해
명확한새로운정의가필요했기때문명확한새로운정의가필요했기때문
의의
ChristinePeterson이1998년2월제안ChristinePeterson이1998년2월제안
ForesightInstituteForesightInstitute
[참고][참고]HowIcoinedtheterm'opensource'HowIcoinedtheterm'opensource'
Free Software vsFree Software vs
Open SourceOpen Source
(EthicsvsPragmatism)(EthicsvsPragmatism)
Opensourceisa
developmentmethodology;
freesoftwareisasocialmovement.
‐RichardStallman
[참고][참고]WhyOpenSourcemissesthepointofFreeSoftwareWhyOpenSourcemissesthepointofFreeSoftware
오픈소스는오픈소스는
어떻게 시작되나?어떻게 시작되나?
1) 기업 내부로부터1) 기업 내부로부터
기업의내부적프로젝트결과를오픈소스화기업의내부적프로젝트결과를오픈소스화
 ReactReact
기업의성과를공개해기업의성과를공개해
해당프로젝트를통한영향력확대를기대해당프로젝트를통한영향력확대를기대
2) 새로운 비즈니스2) 새로운 비즈니스
기회로 부터기회로 부터
기본프로젝트는오픈소스로공개기본프로젝트는오픈소스로공개
기업전용플랜서비스등을과금기업전용플랜서비스등을과금
3) 개인 또는3) 개인 또는
그룹(커뮤니티)으로 부터그룹(커뮤니티)으로 부터
개인적호기심
다른오픈소스프로젝트참가를시작으로
자신의니즈를해결하기위한
[참고][참고]AwesomeMaintainersAwesomeMaintainers
4) Fork를 통해4) Fork를 통해
프로젝트가중단되거나또는기타이유등으로프로젝트가중단되거나또는기타이유등으로
fork되어새로운프로젝트로시작fork되어새로운프로젝트로시작
b2(cafelog)0.6→WordPress(2003)
( )
Postgres→
Netscape→Firefox( )
→ →
LesoriginesdeWordPress­lanaissancedeb2/cafelog
PostgreSQL
HistoryoftheMozillaProject
KHTML Webkit Blink
생각해보지생각해보지
않았던 사실들않았던 사실들
사용자로서 오픈소스는사용자로서 오픈소스는
무엇이라 생각하나요?무엇이라 생각하나요?
당연히공짜로사용하는SW
누군가'과시'하기위해만든것이다.
사용해주는것을오히려'감사'하게생각해야한다.
이슈해결은당연히빨리해줘야하는것
'오픈소스'는당신것아니어도많이있다.
숨겨진 비용과 책임숨겨진 비용과 책임
오픈소스개발자가된다면,그리고그프로젝트가오픈소스개발자가된다면,그리고그프로젝트가
어느정도'성공'한다면,자연스레'보상'이따라올까?어느정도'성공'한다면,자연스레'보상'이따라올까?
프로젝트유지'비용'과'책임'에대해서생각해본적있나요?프로젝트유지'비용'과'책임'에대해서생각해본적있나요?
'free''free' isn't freeisn't free
좋은메인터너가되는것은,개발계약을따내거나좋은메인터너가되는것은,개발계약을따내거나
컨설턴트가되는것을가르치진않는다.컨설턴트가되는것을가르치진않는다.
무한한 '책임'무한한 '책임'
한번이라도자신이사용하는한번이라도자신이사용하는
오픈소스에'비용'을지불한경험이있나요?오픈소스에'비용'을지불한경험이있나요?
'돈'이던,또는'기여'를통해?'돈'이던,또는'기여'를통해?
그렇지않다면'왜'그렇게하지않았나요?그렇지않다면'왜'그렇게하지않았나요?
여러분이오픈소스개발자가된다면,여러분이오픈소스개발자가된다면,
동일한위치에서게됩니다.동일한위치에서게됩니다.
몇가지 사례들몇가지 사례들
Case #1Case #1
https://naver.github.io/billboard.js/https://naver.github.io/billboard.js/
벡터그래픽(SVG)기반의차트라이브러리벡터그래픽(SVG)기반의차트라이브러리
15개유형차트제공15개유형차트제공
사용하던사용하던 메인터넌스불확실성으로인해Fork메인터넌스불확실성으로인해ForkC3.jsC3.js
2017.6첫릴리스
2018.10기준,
GitHub3.1Kstars
월간6천다운로드
13번의릴리스
[참고][참고]DEVIEW2017:14일만에GitHub스타1K받은차트오픈소스개발기DEVIEW2017:14일만에GitHub스타1K받은차트오픈소스개발기
지속성의 유지지속성의 유지
3개월마다정기릴리스진행
커밋또는activity는매일발생시키려노력
→프로젝트가활발함을알려야하기때문
신규이슈등록시,가급적빠른답변
→집에서도,주말에도,여행가서도...
지난 1년간 유형별 이슈지난 1년간 유형별 이슈
총308개이슈총308개이슈(2017.6~2017.10)(2017.6~2017.10)
Question 120건
Bug 139건
기타 49건39.0%
45.1%
15.9%
개발작업이대부분일거라생각했지만,개발작업이대부분일거라생각했지만,
단순문의대응이단순문의대응이39%39%를차지를차지
모두를 충족시킬 수 있나?모두를 충족시킬 수 있나?
API찾아보면되는데...
이건기본적으로알것같은데...
Case #2Case #2
https://www.openssl.org/https://www.openssl.org/
OpenSSL?OpenSSL?
전세계의웹사이트보안을담당전세계의웹사이트보안을담당
네트워크를통한데이터통신에쓰이는네트워크를통한데이터통신에쓰이는
프로토콜인TLS/SSL오픈소스구현체프로토콜인TLS/SSL오픈소스구현체
HeartbleedHeartbleed
2014년4월에발견된보안취약점2014년4월에발견된보안취약점
사용자가서버간연결유지를위한Hearbeat통신신호방식을이용사용자가서버간연결유지를위한Hearbeat통신신호방식을이용
무작위데이터패킷과크기를서버에전송,서버는같은양의데이터반환해연결확인무작위데이터패킷과크기를서버에전송,서버는같은양의데이터반환해연결확인
거짓데이터의양을전송하더라도서버에서메모리저장된데이터로패킷을채워반환해정보누출가능성거짓데이터의양을전송하더라도서버에서메모리저장된데이터로패킷을채워반환해정보누출가능성
[참고][참고] Heartbleed,TheFirstSecurityBugWithACoolLogoHeartbleed,TheFirstSecurityBugWithACoolLogo
TheHeartbleedBugTheHeartbleedBug
대가없이 사용하다가,대가없이 사용하다가,
문제 생기면 비난문제 생기면 비난
2014년4월기준,전세계웹사이트들중2014년4월기준,전세계웹사이트들중 가OpenSSL사용가OpenSSL사용66%66%
고객님들죄송합니다,저희들이망쳐놔서.고객님들죄송합니다,저희들이망쳐놔서.
돈이라도돌려드릴까요?돈이라도돌려드릴까요?
아,그러고보니아,그러고보니
저희가돈을아예받은적이없네요.저희가돈을아예받은적이없네요.
‐SteveMarquess‐SteveMarquess
[참고][참고]보이지않는전우-OpenSSL보이지않는전우-OpenSSL
Case #3Case #3
https://babeljs.io/https://babeljs.io/
??
ES6+코드를ES5(또는실행환경에적합한)코드로ES6+코드를ES5(또는실행환경에적합한)코드로
변환해주는대표적인자바스크립트Transpiler변환해주는대표적인자바스크립트Transpiler
// ES6 arrow function code
var sum = (num1, num2) = num1 + num2;
// transpiled to ES5
var sum = function(num1, num2) {
return num1 + num2;
}
[참고][참고]SebastianMcKenzie:JavaScriptTransformation|JSConfUS2015SebastianMcKenzie:JavaScriptTransformation|JSConfUS2015
How came to BabelHow came to Babel
출신의SebastianMcKenzie(당시17세)가출신의SebastianMcKenzie(당시17세)가
학교시험공부도중,'6to5'(ES6toES5)라는이름으로학교시험공부도중,'6to5'(ES6toES5)라는이름으로
2014년9월28일2014년9월28일 하며시작하며시작
호주Wodonga호주Wodonga
첫커밋첫커밋
오픈소스인오픈소스인 ,, andand 등을활용등을활용esprimaesprima estraverseestraverse escodegenescodegen
[참고][참고]2015-in-review2015-in-review
를 통한 기회를 통한 기회
Thinkmill→CloudFlare→FacebookThinkmill→CloudFlare→Facebook
Burn outBurn out
오픈소스사용자들은많은것을기대하며,오픈소스사용자들은많은것을기대하며,
특히필요한것이해결되지않는경우강한불만을표출한다.특히필요한것이해결되지않는경우강한불만을표출한다.
Referringtosomeonesworkasshitand
callingopensourcemaintainersidiots
ContributorsContributors
보다적은이슈해결과낮은책임감을통해보다적은이슈해결과낮은책임감을통해
스스로프로젝트로부터멀어지기시작했다.스스로프로젝트로부터멀어지기시작했다.
프로젝트로부터멀어지기로하자,프로젝트로부터멀어지기로하자,
이상한일이일어나기시작했다.이상한일이일어나기시작했다.
Contributors came inContributors came in
and filled the gaps.and filled the gaps.
Henry ZhuHenry Zhu
SebastianMcKenzie뒤이어,현재Babel코어개발자로활동SebastianMcKenzie뒤이어,현재Babel코어개발자로활동
(ESLint)컨트리뷰션통해(ESLint)컨트리뷰션통해 
→Babel전념하기위해퇴사→Babel전념하기위해퇴사
JSCSJSCS Adobe취업Adobe취업
[참고][참고]IwasnotreadytobecomethemaintainerofBabelIwasnotreadytobecomethemaintainerofBabel
DigitalDigital
InfrastructureInfrastructure
Fundamentally,digitalinfrastructurehasafreeriderproblem.
Resourcesareofferedforfree,andeverybodyusesthem,
sonobodyisincentivizedtocontributeback.
No one sees that theNo one sees that the
Roads and BridgesRoads and Bridges
are falling downare falling down
사회사회 은우리일상에서아주중요은우리일상에서아주중요기반시설기반시설
평소엔중요성을느끼지못하며,많은이들은평소엔중요성을느끼지못하며,많은이들은
그것들의존재와도움등을아주'당연'한것으로인식그것들의존재와도움등을아주'당연'한것으로인식
[참고][참고] RoadsandBridges:TheUnseenLaborBehindOurDigitalInfrastructureRoadsandBridges:TheUnseenLaborBehindOurDigitalInfrastructure
'무임승차'의 문제'무임승차'의 문제
항상,문제가'발생'되는경우에만관심과인지항상,문제가'발생'되는경우에만관심과인지
그러나,그관심도대부분'비난'과'요구'그러나,그관심도대부분'비난'과'요구'
왜잘만들지못했는지또는왜빨리고치지않는지왜잘만들지못했는지또는왜빨리고치지않는지
문제해결되면,다시금망각의단계로전환문제해결되면,다시금망각의단계로전환
누구나무료로사용하지만,누구나무료로사용하지만,
누군가는그비용을지불해야만한다.누군가는그비용을지불해야만한다.
이들의 중요성은이들의 중요성은
문제가 발생될 때 드러난다.문제가 발생될 때 드러난다.
OpenSSL- (2014/4)
RubyGems.org (2013/2)
Bash- (2014/9)
Heartbleed
보안결함
Shellshock
왜사전에예방될수없었을까?왜사전에예방될수없었을까?
왜전엔관심을두지않았나?왜전엔관심을두지않았나?
당신은무언가잘못되기전까지는당신은무언가잘못되기전까지는
무시되거나인정받지못한다.무시되거나인정받지못한다.
[참고][참고]OpensourcesustainabilityOpensourcesustainability
The FragilityThe Fragility
소수가 모두를소수가 모두를
먹여 살린다.먹여 살린다.
아주적은수의개발자가유지하고,아주많은곳에서사용된다.아주적은수의개발자가유지하고,아주많은곳에서사용된다.
OpenSSL: 
→ , leavedOpenSSLasof2017.10
Bash:
NW.js:
TheInternetIsBeingProtectedByTwoGuysNamedSteve
SteveHenson SteveMarquess
ChetRamey
RogerWang
2015년의한조사에서133개의깃헙프로젝트를확인결과,
64%(3/2)가1~2명의개발자가주도적으로운영해생존중
[참고][참고]WhatistheTruckFactorofPopularGitHubApplications?AFirstAssessmentWhatistheTruckFactorofPopularGitHubApplications?AFirstAssessment
's case's caseleft-padleft-pad
const leftPad = require(left-pad);
leftPad(foo, 5); // =  foo
leftPad(17, 5, 0); // = 00017
개발자인Azer는npm과자신의프로젝트개발자인Azer는npm과자신의프로젝트
'Kik'의상표권문제를겪은후,'Kik'의상표권문제를겪은후,
실망해자신의모든프로젝트를npm에서제거실망해자신의모든프로젝트를npm에서제거
많은프로젝트들이의존성을갖고있었고,많은프로젝트들이의존성을갖고있었고,
제거에따른사이드이펙트가발생제거에따른사이드이펙트가발생
[참고][참고] 

HowonedeveloperjustbrokeNode,Babelandthousandsofprojectsin11linesofJavaScriptHowonedeveloperjustbrokeNode,Babelandthousandsofprojectsin11linesofJavaScript
11줄의코드,인터넷을패닉에빠뜨리다11줄의코드,인터넷을패닉에빠뜨리다
kik,left-pad,andnpmkik,left-pad,andnpm
밸런스의 불균형밸런스의 불균형
오픈소스는하늘에서무한정공짜로떨어지는오픈소스는하늘에서무한정공짜로떨어지는 가아니다.가아니다.'만나''만나'
오픈소스컨트리뷰터보다오픈소스컨트리뷰터보다
단순히취하는쪽이압도적단순히취하는쪽이압도적
오픈소스의인기(다운로드)는오픈소스의인기(다운로드)는
경제적'성공'과연결된다고할수없다.경제적'성공'과연결된다고할수없다.
그럼에도 불구하고,그럼에도 불구하고,
왜 아무 대가없이 할까?왜 아무 대가없이 할까?
1)평판또는명성때문에
2)예상외의인기를얻고,메인터넌스'의무'를느끼게되는경우
3)LaborofLove- (EricHolscher)
4)장인의자부심과그들이믿는것에대한책임감-OpenSSL
Readthedocs
어쩌면 여러분들의어쩌면 여러분들의
오픈소스 개발의 시작은오픈소스 개발의 시작은
단순히'개발'이재밌어서시작/참여
개발자는학교/학원등에서소위연봉높고좋은직업으로소개
일단,커밋하고본다.(POSS)일단,커밋하고본다.(POSS)

[참고][참고]https://twitter.com/monkchips/status/247584170967175169https://twitter.com/monkchips/status/247584170967175169
[Source]https://flic.kr/p/4qAheL
How to monetize?How to monetize?
[참고] Ahandyguidetofinancialsupportforopensource
TheMoneyInOpen-SourceSoftware
왜 '돈'을 얘기하는 것은 어려운가?왜 '돈'을 얘기하는 것은 어려운가?
세상의모든것은'비용'이발생세상의모든것은'비용'이발생
오픈소스프로젝트도마찬가지오픈소스프로젝트도마찬가지
그들은'비용'을어디서지급받나?
개발자의'선의'에만맡기는것은올바른가?
우리는'오픈소스'에대해우리는'오픈소스'에대해
어떤생각을가져야할까?어떤생각을가져야할까?
[참고][참고]TheMoneyInOpen-SourceSoftwareTheMoneyInOpen-SourceSoftware
Sindre SorhusSindre Sorhus
노르웨이출신개발자,npm에노르웨이출신개발자,npm에 
을통해오픈소스개발시작을통해오픈소스개발시작
1,114패키지등록1,114패키지등록
jQueryTodoMVC버전PRjQueryTodoMVC버전PR
TestrunnerTestrunner 개발개발
??
currentlylivinginThailandandIthinkcurrentlylivinginThailandandIthink
IwouldbefinewithlessthanIwouldbefinewithlessthan ..1,500dollars1,500dollars
유명프로젝트를다수개발했더라도유명프로젝트를다수개발했더라도
유지에대한물음표유지에대한물음표
Ideally,IwouldliketodoopensourceinafinanciallyIdeally,Iwouldliketodoopensourceinafinancially
sustainablewaybutthat’sdifficult,sustainablewaybutthat’sdifficult,
sosoIwillprobablydosomecontractingnextyearIwillprobablydosomecontractingnextyear..
[참고][참고]BetweentheWires:AninterviewwithopensourcedeveloperSindreSorhusBetweentheWires:AninterviewwithopensourcedeveloperSindreSorhus
by Coorporateby Coorporate
기업에소속되어'개발'기업에소속되어'개발'
React(Facebook),Angular(Google),NW.js(Intel),etc.React(Facebook),Angular(Google),NW.js(Intel),etc.
비즈니스에도움되는프로젝트메인터너를고용
(asEvangelist)
:Pythonlibrary' '-
Mozilla:JohnResig
HPE Request CoryBenfiled
80%의리눅스커널개발은소속된회사에서
비용을지급받으며개발된다.
[참고][참고]2015,LinuxDevelopmentReport2015,LinuxDevelopmentReport
by Funding/Donationby Funding/Donation
→크라우드펀딩(ex. )
→창작자를후원
→모금된돈의사용을투명하게공개
(commercializationandsoftwareguarantees)
→
→기부플랫폼
→특정작업에대한'포상'을내거는형태
DjangoRESTframework3

메인터넌스지속을위한서브스크립션모델
Liberapay
펀딩사례펀딩사례

매해$6만달러정도의기부를받는다.
(2013)/ (2018/10기준)$56K $53K

Heartbleed이후,중국스마트폰제조사인Heartbleed이후,중국스마트폰제조사인
Smartisan으로부터$160K를기부받음Smartisan으로부터$160K를기부받음
(Vue.js)-$17K/month
(Babel)-$2.2K/month
(AVA)-$3.6K/month
-
EvanYou
HenryZhu
SindreSorhus
Webpack $400K/year
by Businessby Business
npm: -기업용private레지스트리제공서비스
WordPressWordPress-워드프레스호스팅,이커머스서비스등-워드프레스호스팅,이커머스서비스등
CloudPlatform/PaaSCloudPlatform/PaaS
Meteor: (Meteor클라우드플랫폼호스팅)
npmEnterprise
Galaxy
Heroku
그외로는그외로는
Consulting작업등을수행
PaidLicense를적용
by Licenseby License
 newwaytosupportopensoftwaredevelopersnewwaytosupportopensoftwaredevelopersLicenseZeroLicenseZero
For-Profit
Use
Open
Source
Closed
Source
License
Zero
For-Profit
Use
Closed
Source
Open
Source
License
Zero
Parity
in LICENSE
Prosperity
in LICENSE
Duallicense(Duallicense( // ):basedonthetwo-clauseBSDlicense):basedonthetwo-clauseBSDlicenseParityParity ProsperityProsperity
상업사용자(Prosperity)에게는사용시작32일뒤,상업사용자(Prosperity)에게는사용시작32일뒤,
상업적라이선스요구상업적라이선스요구
by Foundationby Foundation
Heartbleed사태이후,이의예방을위해Heartbleed사태이후,이의예방을위해
2014/4월30개기업으로부터2014/4월30개기업으로부터
$4백만달러를기부받아설립$4백만달러를기부받아설립
,, ,, ,, 등을지원등을지원
[참고][참고]
OpenSSLOpenSSL NTPNTP GnuPGGnuPG OpenSSHOpenSSH
TechtitansjoinforcestostopthenextHeartbleedTechtitansjoinforcestostopthenextHeartbleed
2015/10월모질라재단은MOSSAward를통해
1백만달러규모의상금규모를설정 

,, ,, 등을지원등을지원TorBrowserTorBrowser TailsTails CaddyCaddy
오픈소스,오픈소스,
가치있는 일가치있는 일
Learn fromLearn from
오픈소스를통해오픈소스를통해
다른이의코드를통해배우게된다.
다른세계의개발자와협업을경험할수있게된다.
Open Source isOpen Source is
mainstreammainstream
전통적인SW기업이아닌곳에서도오픈소스를개발전통적인SW기업이아닌곳에서도오픈소스를개발
  

GEGE
FordMotorFordMotor WalmartLabsWalmartLabs
[참고][참고]Wal-MartProvesOpenSourceIsBigBusinessWal-MartProvesOpenSourceIsBigBusiness
기업이 오픈소스로부터 얻는것기업이 오픈소스로부터 얻는것
talkopenly,developopenlytalkopenly,developopenly
다양한다양한 이참여하는오픈소스프로젝트와커뮤니티지원을위한그룹이참여하는오픈소스프로젝트와커뮤니티지원을위한그룹테크기업들테크기업들
기업문화개선
리크루팅효과
비즈니스기회
사회적책임-CSR(CoorporateSocialResponse)
[참고][참고] // //YourFirstPRYourFirstPR FIRSTTIMERSONLYFIRSTTIMERSONLY MakeaPullRequestMakeaPullRequest
MagpieMagpie DeveloperDeveloper
syndromesyndrome
대체로개발자들은대체로개발자들은
기존에문제없이사용하던기술들을뒤로하고,기존에문제없이사용하던기술들을뒤로하고,
'새롭고'새롭고 반짝'반짝'
이는것들에너무쉽게관심을빼앗긴다.이는것들에너무쉽게관심을빼앗긴다.
[참고][참고] 
Magpielogofrom,Magpielogofrom,
TheMagpieDeveloperTheMagpieDeveloper
MagpieBrewingCo.MagpieBrewingCo.
Consumer가 아닌Consumer가 아닌
ContributorContributor
다른무엇보다도,더나은세상을만들수있고,다른무엇보다도,더나은세상을만들수있고,
다른이들을도울수있다는점에서다른이들을도울수있다는점에서
오픈소스는커다란'가치'가존재오픈소스는커다란'가치'가존재
[참고][참고]TheSocialCodingContractTheSocialCodingContract
오픈소스 어떻게 참여할까?오픈소스 어떻게 참여할까?
쉬운것부터(ex.문서,코드스타일)
버그리포팅
문제를해결할수있는PR
영어가중요하지만,못해도괜찮다.
너무유명한프로젝트는당장어려울수있다.

오픈소스바르게사용하기
컨트리뷰션시작하기
오픈소스프로젝트공개하기
[참고][참고]네이버:오픈소스가이드네이버:오픈소스가이드
우리는 우리의 '몫'을우리는 우리의 '몫'을
다하고 있는가?다하고 있는가?
오픈소스의지속성을위해오픈소스의지속성을위해
우리는모두책임을가져야한다.우리는모두책임을가져야한다.
공원은누구나사용하지만,유지되지않으면공원은누구나사용하지만,유지되지않으면
누구도사용하지않게되기때문이다.누구도사용하지않게되기때문이다.
[참고][참고] Whatitfeelsliketobeanopen-sourcemaintainerWhatitfeelsliketobeanopen-sourcemaintainer
ThroughtheOpenSourceLookingGlassThroughtheOpenSourceLookingGlass
고맙습니다.고맙습니다.고맙습니다.고맙습니다.고맙습니다.고맙습니다.고맙습니다.고맙습니다.고맙습니다.고맙습니다.고맙습니다.고맙습니다.고맙습니다.고맙습니다.고맙습니다.고맙습니다.고맙습니다.고맙습니다.고맙습니다.고맙습니다.고맙습니다.고맙습니다.고맙습니다.고맙습니다.고맙습니다.고맙습니다.고맙습니다.고맙습니다.고맙습니다.고맙습니다.고맙습니다.고맙습니다.고맙습니다.고맙습니다.고맙습니다.고맙습니다.고맙습니다.고맙습니다.고맙습니다.고맙습니다.고맙습니다.고맙습니다.고맙습니다.고맙습니다.고맙습니다.고맙습니다.고맙습니다.고맙습니다.고맙습니다.고맙습니다.고맙습니다.고맙습니다.고맙습니다.고맙습니다.고맙습니다.고맙습니다.고맙습니다.고맙습니다.고맙습니다.고맙습니다.고맙습니다.고맙습니다.고맙습니다.고맙습니다.고맙습니다.고맙습니다.고맙습니다.고맙습니다.고맙습니다.고맙습니다.고맙습니다.고맙습니다.고맙습니다.고맙습니다.고맙습니다.고맙습니다.고맙습니다.고맙습니다.고맙습니다.고맙습니다.고맙습니다.고맙습니다.고맙습니다.고맙습니다.고맙습니다.고맙습니다.고맙습니다.고맙습니다.고맙습니다.고맙습니다.고맙습니다.고맙습니다.고맙습니다.고맙습니다.고맙습니다.고맙습니다.고맙습니다.고맙습니다.고맙습니다.고맙습니다.고맙습니다.고맙습니다.
ank You.hank You.hank You.hank You.hank You.hank You.hank You.hank You.hank You.hank You.hank You.hank You.hank You.hank You.hank You.hank You.hank You.hank You.hank You.hank You.hank You.hank You.hank You.hank You.hank You.hank You.hank You.hank You.hank You.hank You.Thank You.Thank You.Thank You.Thank You.Thank You.Thank You.Thank You.Thank You.Thank You.Thank You.Thank You.Thank You.Thank You.Thank You.Thank You.Thank You.Thank You.Thank You.Thank You.Thank You.Thank You.Thank You.Thank You.Thank You.Thank You.Thank You.Thank You.Thank You.Thank You.Thank You.Thank You.Thank You.Thank You.Thank You.Thank You.Thank You.Thank You.Thank You.Thank You.Thank You.Thank You.Thank You.Thank You.Thank You.Thank You.Thank You.Thank You.Thank You.Thank You.Thank You.Thank You.Thank You.Thank You.Thank You.Thank You.Thank You.Thank You.Thank You.Thank You.Thank You.Thank You.Thank You.Thank You.Thank You.Thank You.Thank You.Thank You.Thank You.Thank You.Thank You.Thank You.Thank You.
iiiiiiiiiiiiraciasraciasraciasraciasraciasraciasraciasraciasraciasraciasraciasGraciasGraciasGraciasGraciasGraciasGraciasGraciasGraciasGraciasGraciasGraciasGraciasGraciasGracias.Gracias.Gracias.Gracias.Gracias.Gracias.Gracias.Gracias.Gracias.Gracias.Gracias.Gracias.Gracias.Gracias.Gracias.Gracias.Gracias.Gracias.Gracias.Gracias.Gracias.Gracias.Gracias.Gracias.Gracias.Gracias.Gracias.Gracias.Gracias.Gracias.Gracias.Gracias.Gracias.Gracias.Gracias.Gracias.Gracias.Gracias.Gracias.Gracias.Gracias.Gracias.Gracias.Gracias.Gracias.Gracias.Gracias.Gracias.Gracias.Gracias.Gracias.Gracias.Gracias.Gracias.Gracias.Gracias.Gracias.Gracias.Gracias.Gracias.Gracias.Gracias.

More Related Content

More from Jae Sung Park

현실적 Angular js
현실적 Angular js현실적 Angular js
현실적 Angular jsJae Sung Park
 
가볍게 살펴보는 AngularJS
가볍게 살펴보는 AngularJS가볍게 살펴보는 AngularJS
가볍게 살펴보는 AngularJSJae Sung Park
 
Web Components & Polymer
Web Components & PolymerWeb Components & Polymer
Web Components & PolymerJae Sung Park
 
모바일 웹 디버깅
모바일 웹 디버깅모바일 웹 디버깅
모바일 웹 디버깅Jae Sung Park
 
혁신적인 웹컴포넌트 라이브러리 - Polymer
혁신적인 웹컴포넌트 라이브러리 - Polymer혁신적인 웹컴포넌트 라이브러리 - Polymer
혁신적인 웹컴포넌트 라이브러리 - PolymerJae Sung Park
 
우리가 몰랐던 크롬 개발자 도구
우리가 몰랐던 크롬 개발자 도구우리가 몰랐던 크롬 개발자 도구
우리가 몰랐던 크롬 개발자 도구Jae Sung Park
 
스마트 TV 앱 개발 맛보기
스마트 TV 앱 개발 맛보기스마트 TV 앱 개발 맛보기
스마트 TV 앱 개발 맛보기Jae Sung Park
 
How to create Aptana Ruble
How to create Aptana RubleHow to create Aptana Ruble
How to create Aptana RubleJae Sung Park
 
도구를 활용한 더 나은 웹 개발: Yeoman
도구를 활용한 더 나은 웹 개발: Yeoman도구를 활용한 더 나은 웹 개발: Yeoman
도구를 활용한 더 나은 웹 개발: YeomanJae Sung Park
 
Developing game audio with the Web Audio API
Developing game audio with the Web Audio APIDeveloping game audio with the Web Audio API
Developing game audio with the Web Audio APIJae Sung Park
 
Jindo Plugin for Aptana Studio 3
Jindo Plugin for Aptana Studio 3Jindo Plugin for Aptana Studio 3
Jindo Plugin for Aptana Studio 3Jae Sung Park
 

More from Jae Sung Park (15)

현실적 Angular js
현실적 Angular js현실적 Angular js
현실적 Angular js
 
가볍게 살펴보는 AngularJS
가볍게 살펴보는 AngularJS가볍게 살펴보는 AngularJS
가볍게 살펴보는 AngularJS
 
Web Components & Polymer
Web Components & PolymerWeb Components & Polymer
Web Components & Polymer
 
모바일 웹 디버깅
모바일 웹 디버깅모바일 웹 디버깅
모바일 웹 디버깅
 
혁신적인 웹컴포넌트 라이브러리 - Polymer
혁신적인 웹컴포넌트 라이브러리 - Polymer혁신적인 웹컴포넌트 라이브러리 - Polymer
혁신적인 웹컴포넌트 라이브러리 - Polymer
 
CSS Functions
CSS FunctionsCSS Functions
CSS Functions
 
우리가 몰랐던 크롬 개발자 도구
우리가 몰랐던 크롬 개발자 도구우리가 몰랐던 크롬 개발자 도구
우리가 몰랐던 크롬 개발자 도구
 
What's new in IE11
What's new in IE11What's new in IE11
What's new in IE11
 
스마트 TV 앱 개발 맛보기
스마트 TV 앱 개발 맛보기스마트 TV 앱 개발 맛보기
스마트 TV 앱 개발 맛보기
 
How to create Aptana Ruble
How to create Aptana RubleHow to create Aptana Ruble
How to create Aptana Ruble
 
Web Audio API
Web Audio APIWeb Audio API
Web Audio API
 
도구를 활용한 더 나은 웹 개발: Yeoman
도구를 활용한 더 나은 웹 개발: Yeoman도구를 활용한 더 나은 웹 개발: Yeoman
도구를 활용한 더 나은 웹 개발: Yeoman
 
Developing game audio with the Web Audio API
Developing game audio with the Web Audio APIDeveloping game audio with the Web Audio API
Developing game audio with the Web Audio API
 
Jindo Plugin for Aptana Studio 3
Jindo Plugin for Aptana Studio 3Jindo Plugin for Aptana Studio 3
Jindo Plugin for Aptana Studio 3
 
Web Application SG
Web Application SGWeb Application SG
Web Application SG
 

[SOSCON 2018] 오픈소스 개발: Behind the scenes