SlideShare a Scribd company logo
Lecture 03/16:
Fundamental parts of open-source projects
Jeongkyu Shin
Sep 28, 2016
Development procedure
From basement
Project type
▪ The “lone wolf”
▪ Easily found at many open-source
projects
▪ Small / The ‘power of one’ effect
▪ Becomes team when it is needed
for crowds
▪ OSS team
▪ Most OSS projects are
▪ Consists of various positions
▪ Enterprise-based OSS
▪ Well-structured codebase
▪ Fixed tech stacks
The importance of OSS topic
▪ Hobby → Response → Digging →Community →Ecosphere
▪ Personal story #1 (2004~2008)
Development positions
So many positions for the goal
Tech stacks
▪ Backbone / server developer
▪ Front-end developer
▪ App developer
▪ Android / iOS / ETC
▪ Designer
▪ Full-stack developer?
Backbone / server developer (1)
▪ Very important when you want to make opensource-based ‘service’
▪ When front-end developer also develops backbone/server:
▪ Before scaling
▪ Better for prototyping
▪ Will need refactoring
▪ Database master
▪ Independent position when developing server-side
Backbone / server developer (2)
▪ Server-side development language
▪ Korea: Java+Spring
▪ Start-up companies
▪ Uses various stacks
▪ Node.js / Python / Go
▪ RoR / Scala (sometimes)
Front-end developer (1)
▪ Develops “viewable” part
▪ Need understanding about ‘designing’
▪ Platform-dependency
▪ “Web” or “App” ?
▪ What devices?
▪ Also server-side?
▪ When the project is based on APM / NPM
Front-end developer (2)
▪ Front-end development languages
▪ Not the much far from server-side
▪ Web (HTML5 / ES6)
▪ jQuery / Bootstrap
▪ Angular.js / backbone.js (for SPA)
▪ React / React Native / Polymer
App developer (1)
▪ Mobile frontend development
▪ Can be with front-end developer
▪ Depends on the framework
▪ React Native / Polymer / Cordova
▪ Considerations
▪ Applications with lightening-speed responses?
▪ Applications those need the real-time communications?
App developer (2)
▪ Needs understanding about native language of app platform
▪ Android: Java+Android framework
▪ iOS: Objective-C + Swift
▪ Windows / macOS / Linux
▪ Various languages
▪ Cross-platform?
▪ Java
▪ Binding : QT / GTK / Mono?
The ‘team’
▪ (Frontend+backend) developer + app developer
▪ When the project grows:
▪ Divide frontend and backend development positions
▪ App developer -> platform-specific developer
▪ Designer
▪ Artworks
Structure and architecture
After gathering building blocks
Interests / tech stacks
▪ OSS: from the language I can
▪ Of course it usually starts from author’s need
▪ Stand-alone or service application?
▪ Desktop or mobile application?
▪ Local or network application?
DevOps
▪ Development + Operation
▪ Usually it is separated
▪ Customer / operation part
▪ Development part
▪ Faster tech stack changes lead startups into DevOps
▪ OSS-based projects choose DevOps
▪ Team size effect
▪ Ultra-fast develop / production cycle
Collaboration tools (real-time)
▪ IRC
▪ Old but still working method
▪ Servers / channels
▪ Slack (not OSS. It is service)
▪ Almost similar to IRC
▪ Team-specific chatting channels
▪ Many IRC channels support “relay” between IRC and Slack
Test suite
▪ Automatically check / test codes
▪ Language-specific test suites
▪ Travis CI
▪ Easy: Add configuration to the project on Github
▪ Free: for OSS projects
▪ You will need it for your CI
Documentation
The most important part to be ‘usable software’
Documentation from source code
▪ JavaDoc (http://www.oracle.com/technetwork/articles/java/index-137868.html)
▪ Tool for generating API documentation in HTML format from doc comments in source code
▪ Traditional and strong / can use with other programming languages
▪ Doxygen
▪ The de facto standard tool for generating documentation from annotated C++ sources,
▪ Sphinx
▪ Tool that makes it easy to create intelligent and beautiful documentation
▪ reST (reStructuredText) (http://docutils.sourceforge.net/docs/user/rst/quickref.html)
▪ Docco (http://jashkenas.github.io/docco/)
▪ Quick-and-dirty documentation generator
Documentation format
▪ JavaDoc
▪ https://www.tutorialspoint.com/jav
a/java_documentation.htm
▪ Doxygen
▪ http://xerces.apache.org/xerces-
c/apiDocs-3/classes.html
▪ reStructuredText
▪ http://docutils.sourceforge.net/doc
s/user/rst/quickref.html
▪ Docco
▪ https://davidwalsh.name/javascript-
documentation
▪ Only for docs: Markdown
(https://daringfireball.net/projects/m
arkdown/)
▪ Easy text-to-HTML conversion
tool/specification for web writers
▪ Many parser exists
Learn by run today:
Learn by run today
▪ Discuss about your team objective and project on Slack
▪ Finalize your project name / goal
▪ Fix the dev. position. (Of course you can be a full-stack developer! Why not?)
▪ Set the rule
▪ Create team github project page
▪ With language setup / license / initalization
▪ Create Jekyll github wiki page for project
Learn by run today
▪ Write the plan about the project
▪ Name
▪ Purpose
▪ Goal
▪ Milestone
▪ Add ‘link to github project page’ to your personal github page
Assignment #1
▪ Explore 10 or more github projects related to your project
▪ Get the statistics
▪ Tech stacks (language, database, OS, environment) / members / code length /
contributions / ETC.
▪ Summarize the result statistics using LibreOffice Calc
▪ Send results to Teaching Assistant using Slack message
▪ Due date: Oct. 4 00:00 (Oct. 3 24:00)
Next is...
4/16: OSS License issues
@inureyes
Questions? inureyes@gmail.com
OR
https://www.codeonweb.com/circle/@oss-basics-hu

More Related Content

What's hot

Master the Monorepo
Master the MonorepoMaster the Monorepo
Master the Monorepo
Roman Minchyn
 
[drupalday2017] - Behat per Drupal: test automatici e molto di più
[drupalday2017] - Behat per Drupal: test automatici e molto di più[drupalday2017] - Behat per Drupal: test automatici e molto di più
[drupalday2017] - Behat per Drupal: test automatici e molto di più
DrupalDay
 
Golang
GolangGolang
Drupal + composer = new love !?
Drupal + composer = new love !?Drupal + composer = new love !?
Drupal + composer = new love !?
nuppla
 
Madrid .NET Meetup: Microsoft open sources .NET!
Madrid .NET Meetup: Microsoft open sources .NET!Madrid .NET Meetup: Microsoft open sources .NET!
Madrid .NET Meetup: Microsoft open sources .NET!
Alfonso Garcia-Caro
 
Me interessei por Xamarin, e agora?
Me interessei por Xamarin, e agora?Me interessei por Xamarin, e agora?
Me interessei por Xamarin, e agora?
Vinicius Quaiato
 
Elixir koans
Elixir koansElixir koans
Elixir koans
Ruben Amortegui
 
Ready, set, go! An introduction to the Go programming language
Ready, set, go! An introduction to the Go programming languageReady, set, go! An introduction to the Go programming language
Ready, set, go! An introduction to the Go programming language
RTigger
 
Management Zabbix with Terraform
Management Zabbix with TerraformManagement Zabbix with Terraform
Management Zabbix with Terraform
Aécio Pires
 
Chromium OS Introduction
Chromium OS IntroductionChromium OS Introduction
Chromium OS Introduction
Wei-Ning Huang
 
Gomobile: gophers in the land of Android
Gomobile: gophers in the land of AndroidGomobile: gophers in the land of Android
Gomobile: gophers in the land of Android
Jovica Popovic
 
Git In One Evening
Git In One EveningGit In One Evening
Git In One Evening
Maxwell Pearl
 
Plugin Development for Beginners v.2019
Plugin Development for Beginners v.2019Plugin Development for Beginners v.2019
Plugin Development for Beginners v.2019
Joe Cartonia
 
Custom angular libraries
Custom angular librariesCustom angular libraries
Custom angular libraries
MattVaughn9
 
Opensource Software usability
Opensource Software usabilityOpensource Software usability
Opensource Software usability
Giacomo Antonino Fazio
 
Life with Sphinx 2012 #sphinxconjp
Life with Sphinx 2012 #sphinxconjpLife with Sphinx 2012 #sphinxconjp
Life with Sphinx 2012 #sphinxconjpTakeshi Komiya
 
镐京入场培训.Key
镐京入场培训.Key镐京入场培训.Key
镐京入场培训.Key
Bean Tsang
 
Introduction To Dart (GDG NY Jan 2014 Meetup)
Introduction To Dart (GDG NY Jan 2014 Meetup)Introduction To Dart (GDG NY Jan 2014 Meetup)
Introduction To Dart (GDG NY Jan 2014 Meetup)
Nitya Narasimhan
 
How to create/improve OSS products and its community
How to create/improve OSS products and its communityHow to create/improve OSS products and its community
How to create/improve OSS products and its community
SATOSHI TAGOMORI
 
Introduction to Python
Introduction to PythonIntroduction to Python
Introduction to Python
GLC Networks
 

What's hot (20)

Master the Monorepo
Master the MonorepoMaster the Monorepo
Master the Monorepo
 
[drupalday2017] - Behat per Drupal: test automatici e molto di più
[drupalday2017] - Behat per Drupal: test automatici e molto di più[drupalday2017] - Behat per Drupal: test automatici e molto di più
[drupalday2017] - Behat per Drupal: test automatici e molto di più
 
Golang
GolangGolang
Golang
 
Drupal + composer = new love !?
Drupal + composer = new love !?Drupal + composer = new love !?
Drupal + composer = new love !?
 
Madrid .NET Meetup: Microsoft open sources .NET!
Madrid .NET Meetup: Microsoft open sources .NET!Madrid .NET Meetup: Microsoft open sources .NET!
Madrid .NET Meetup: Microsoft open sources .NET!
 
Me interessei por Xamarin, e agora?
Me interessei por Xamarin, e agora?Me interessei por Xamarin, e agora?
Me interessei por Xamarin, e agora?
 
Elixir koans
Elixir koansElixir koans
Elixir koans
 
Ready, set, go! An introduction to the Go programming language
Ready, set, go! An introduction to the Go programming languageReady, set, go! An introduction to the Go programming language
Ready, set, go! An introduction to the Go programming language
 
Management Zabbix with Terraform
Management Zabbix with TerraformManagement Zabbix with Terraform
Management Zabbix with Terraform
 
Chromium OS Introduction
Chromium OS IntroductionChromium OS Introduction
Chromium OS Introduction
 
Gomobile: gophers in the land of Android
Gomobile: gophers in the land of AndroidGomobile: gophers in the land of Android
Gomobile: gophers in the land of Android
 
Git In One Evening
Git In One EveningGit In One Evening
Git In One Evening
 
Plugin Development for Beginners v.2019
Plugin Development for Beginners v.2019Plugin Development for Beginners v.2019
Plugin Development for Beginners v.2019
 
Custom angular libraries
Custom angular librariesCustom angular libraries
Custom angular libraries
 
Opensource Software usability
Opensource Software usabilityOpensource Software usability
Opensource Software usability
 
Life with Sphinx 2012 #sphinxconjp
Life with Sphinx 2012 #sphinxconjpLife with Sphinx 2012 #sphinxconjp
Life with Sphinx 2012 #sphinxconjp
 
镐京入场培训.Key
镐京入场培训.Key镐京入场培训.Key
镐京入场培训.Key
 
Introduction To Dart (GDG NY Jan 2014 Meetup)
Introduction To Dart (GDG NY Jan 2014 Meetup)Introduction To Dart (GDG NY Jan 2014 Meetup)
Introduction To Dart (GDG NY Jan 2014 Meetup)
 
How to create/improve OSS products and its community
How to create/improve OSS products and its communityHow to create/improve OSS products and its community
How to create/improve OSS products and its community
 
Introduction to Python
Introduction to PythonIntroduction to Python
Introduction to Python
 

Similar to OSS SW Basics Lecture 03: Fundamental parts of open-source projects

Instant developer onboarding with self contained repositories
Instant developer onboarding with self contained repositoriesInstant developer onboarding with self contained repositories
Instant developer onboarding with self contained repositories
Yshay Yaacobi
 
.Net Core
.Net Core.Net Core
.Net Core
Bertrand Le Roy
 
Shipping NodeJS with Docker and CoreOS
Shipping NodeJS with Docker and CoreOSShipping NodeJS with Docker and CoreOS
Shipping NodeJS with Docker and CoreOS
Ross Kukulinski
 
DevOpsDays Singapore Habitat Ignite
DevOpsDays Singapore Habitat IgniteDevOpsDays Singapore Habitat Ignite
DevOpsDays Singapore Habitat Ignite
Matt Ray
 
Voxxed days Vilnius 2015 - Android Reverse Engineering Lab
Voxxed days Vilnius 2015 - Android Reverse Engineering LabVoxxed days Vilnius 2015 - Android Reverse Engineering Lab
Voxxed days Vilnius 2015 - Android Reverse Engineering Lab
Ron Munitz
 
Why to docker
Why to dockerWhy to docker
Why to docker
Karthik Gaekwad
 
[2015/2016] Apache Cordova
[2015/2016] Apache Cordova[2015/2016] Apache Cordova
[2015/2016] Apache Cordova
Ivano Malavolta
 
CodeMotion tel aviv 2015 - android reverse engineering lab
CodeMotion tel aviv 2015 - android reverse engineering labCodeMotion tel aviv 2015 - android reverse engineering lab
CodeMotion tel aviv 2015 - android reverse engineering lab
Ron Munitz
 
Introduction to Modern DevOps Technologies
Introduction to  Modern DevOps TechnologiesIntroduction to  Modern DevOps Technologies
Introduction to Modern DevOps Technologies
Kriangkrai Chaonithi
 
Normalizing x pages web development
Normalizing x pages web development Normalizing x pages web development
Normalizing x pages web development
Shean McManus
 
DevAssistant, Docker and You
DevAssistant, Docker and YouDevAssistant, Docker and You
DevAssistant, Docker and You
BalaBit
 
Apache Cordova 4.x
Apache Cordova 4.xApache Cordova 4.x
Apache Cordova 4.x
Ivano Malavolta
 
APEX Application Lifecycle and Deployment 20220714.pdf
APEX Application Lifecycle and Deployment 20220714.pdfAPEX Application Lifecycle and Deployment 20220714.pdf
APEX Application Lifecycle and Deployment 20220714.pdf
Richard Martens
 
Using Delphi as a no code development environment
Using Delphi as a no code development environmentUsing Delphi as a no code development environment
Using Delphi as a no code development environment
pprem
 
INF104 - HCL Domino AppDev Pack – The Future of Domino App Dev Nobody Knows A...
INF104 - HCL Domino AppDev Pack – The Future of Domino App Dev Nobody Knows A...INF104 - HCL Domino AppDev Pack – The Future of Domino App Dev Nobody Knows A...
INF104 - HCL Domino AppDev Pack – The Future of Domino App Dev Nobody Knows A...
Heiko Voigt
 
Duke Docker Day 2014: Research Applications with Docker
Duke Docker Day 2014: Research Applications with DockerDuke Docker Day 2014: Research Applications with Docker
Duke Docker Day 2014: Research Applications with Docker
Darin London
 
Building a SaaS with Nodejs, Docker, and CoreOS
Building a SaaS with Nodejs, Docker, and CoreOSBuilding a SaaS with Nodejs, Docker, and CoreOS
Building a SaaS with Nodejs, Docker, and CoreOS
Ross Kukulinski
 
DockerCon 15 Keynote - Day 2
DockerCon 15 Keynote - Day 2DockerCon 15 Keynote - Day 2
DockerCon 15 Keynote - Day 2
Docker, Inc.
 
Apache Cordova
Apache CordovaApache Cordova
Apache Cordova
Ivano Malavolta
 
Windows brings Docker Goodness - What does it mean for .NET developers?
Windows brings Docker Goodness - What does it mean for .NET developers?Windows brings Docker Goodness - What does it mean for .NET developers?
Windows brings Docker Goodness - What does it mean for .NET developers?
Naeem Sarfraz
 

Similar to OSS SW Basics Lecture 03: Fundamental parts of open-source projects (20)

Instant developer onboarding with self contained repositories
Instant developer onboarding with self contained repositoriesInstant developer onboarding with self contained repositories
Instant developer onboarding with self contained repositories
 
.Net Core
.Net Core.Net Core
.Net Core
 
Shipping NodeJS with Docker and CoreOS
Shipping NodeJS with Docker and CoreOSShipping NodeJS with Docker and CoreOS
Shipping NodeJS with Docker and CoreOS
 
DevOpsDays Singapore Habitat Ignite
DevOpsDays Singapore Habitat IgniteDevOpsDays Singapore Habitat Ignite
DevOpsDays Singapore Habitat Ignite
 
Voxxed days Vilnius 2015 - Android Reverse Engineering Lab
Voxxed days Vilnius 2015 - Android Reverse Engineering LabVoxxed days Vilnius 2015 - Android Reverse Engineering Lab
Voxxed days Vilnius 2015 - Android Reverse Engineering Lab
 
Why to docker
Why to dockerWhy to docker
Why to docker
 
[2015/2016] Apache Cordova
[2015/2016] Apache Cordova[2015/2016] Apache Cordova
[2015/2016] Apache Cordova
 
CodeMotion tel aviv 2015 - android reverse engineering lab
CodeMotion tel aviv 2015 - android reverse engineering labCodeMotion tel aviv 2015 - android reverse engineering lab
CodeMotion tel aviv 2015 - android reverse engineering lab
 
Introduction to Modern DevOps Technologies
Introduction to  Modern DevOps TechnologiesIntroduction to  Modern DevOps Technologies
Introduction to Modern DevOps Technologies
 
Normalizing x pages web development
Normalizing x pages web development Normalizing x pages web development
Normalizing x pages web development
 
DevAssistant, Docker and You
DevAssistant, Docker and YouDevAssistant, Docker and You
DevAssistant, Docker and You
 
Apache Cordova 4.x
Apache Cordova 4.xApache Cordova 4.x
Apache Cordova 4.x
 
APEX Application Lifecycle and Deployment 20220714.pdf
APEX Application Lifecycle and Deployment 20220714.pdfAPEX Application Lifecycle and Deployment 20220714.pdf
APEX Application Lifecycle and Deployment 20220714.pdf
 
Using Delphi as a no code development environment
Using Delphi as a no code development environmentUsing Delphi as a no code development environment
Using Delphi as a no code development environment
 
INF104 - HCL Domino AppDev Pack – The Future of Domino App Dev Nobody Knows A...
INF104 - HCL Domino AppDev Pack – The Future of Domino App Dev Nobody Knows A...INF104 - HCL Domino AppDev Pack – The Future of Domino App Dev Nobody Knows A...
INF104 - HCL Domino AppDev Pack – The Future of Domino App Dev Nobody Knows A...
 
Duke Docker Day 2014: Research Applications with Docker
Duke Docker Day 2014: Research Applications with DockerDuke Docker Day 2014: Research Applications with Docker
Duke Docker Day 2014: Research Applications with Docker
 
Building a SaaS with Nodejs, Docker, and CoreOS
Building a SaaS with Nodejs, Docker, and CoreOSBuilding a SaaS with Nodejs, Docker, and CoreOS
Building a SaaS with Nodejs, Docker, and CoreOS
 
DockerCon 15 Keynote - Day 2
DockerCon 15 Keynote - Day 2DockerCon 15 Keynote - Day 2
DockerCon 15 Keynote - Day 2
 
Apache Cordova
Apache CordovaApache Cordova
Apache Cordova
 
Windows brings Docker Goodness - What does it mean for .NET developers?
Windows brings Docker Goodness - What does it mean for .NET developers?Windows brings Docker Goodness - What does it mean for .NET developers?
Windows brings Docker Goodness - What does it mean for .NET developers?
 

More from Jeongkyu Shin

Boosting machine learning workflow with TensorFlow 2.0
Boosting machine learning workflow with TensorFlow 2.0Boosting machine learning workflow with TensorFlow 2.0
Boosting machine learning workflow with TensorFlow 2.0
Jeongkyu Shin
 
Machine Learning in Google I/O 19
Machine Learning in Google I/O 19Machine Learning in Google I/O 19
Machine Learning in Google I/O 19
Jeongkyu Shin
 
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
Jeongkyu Shin
 
TensorFlow 2: New Era of Developing Deep Learning Models
TensorFlow 2: New Era of Developing Deep Learning ModelsTensorFlow 2: New Era of Developing Deep Learning Models
TensorFlow 2: New Era of Developing Deep Learning Models
Jeongkyu Shin
 
Machine Learning Model Serving with Backend.AI
Machine Learning Model Serving with Backend.AIMachine Learning Model Serving with Backend.AI
Machine Learning Model Serving with Backend.AI
Jeongkyu Shin
 
그렇게 커미터가 된다: Python을 통해 오픈소스 생태계 가르치기
그렇게 커미터가 된다: Python을 통해 오픈소스 생태계 가르치기그렇게 커미터가 된다: Python을 통해 오픈소스 생태계 가르치기
그렇게 커미터가 된다: Python을 통해 오픈소스 생태계 가르치기
Jeongkyu Shin
 
오픈소스 라이선스를 둘러싼 소송들
오픈소스 라이선스를 둘러싼 소송들오픈소스 라이선스를 둘러싼 소송들
오픈소스 라이선스를 둘러싼 소송들
Jeongkyu Shin
 
Backend.AI: 오픈소스 머신러닝 인프라 프레임워크
Backend.AI: 오픈소스 머신러닝 인프라 프레임워크Backend.AI: 오픈소스 머신러닝 인프라 프레임워크
Backend.AI: 오픈소스 머신러닝 인프라 프레임워크
Jeongkyu Shin
 
모바일 개발자를 위한 ML Kit: Machine Learning SDK 소개
모바일 개발자를 위한 ML Kit: Machine Learning SDK 소개모바일 개발자를 위한 ML Kit: Machine Learning SDK 소개
모바일 개발자를 위한 ML Kit: Machine Learning SDK 소개
Jeongkyu Shin
 
회색지대: 이상과 현실 - 오픈소스 저작권
회색지대: 이상과 현실 - 오픈소스 저작권회색지대: 이상과 현실 - 오픈소스 저작권
회색지대: 이상과 현실 - 오픈소스 저작권
Jeongkyu Shin
 
TensorFlow.Data 및 TensorFlow Hub
TensorFlow.Data 및 TensorFlow HubTensorFlow.Data 및 TensorFlow Hub
TensorFlow.Data 및 TensorFlow Hub
Jeongkyu Shin
 
Google Polymer in Action
Google Polymer in ActionGoogle Polymer in Action
Google Polymer in Action
Jeongkyu Shin
 
The Flow of TensorFlow
The Flow of TensorFlowThe Flow of TensorFlow
The Flow of TensorFlow
Jeongkyu Shin
 
Let Android dream electric sheep: Making emotion model for chat-bot with Pyth...
Let Android dream electric sheep: Making emotion model for chat-bot with Pyth...Let Android dream electric sheep: Making emotion model for chat-bot with Pyth...
Let Android dream electric sheep: Making emotion model for chat-bot with Pyth...
Jeongkyu Shin
 
구글의 머신러닝 비전: TPU부터 모바일까지 (Google I/O Extended Seoul 2017)
구글의 머신러닝 비전: TPU부터 모바일까지 (Google I/O Extended Seoul 2017)구글의 머신러닝 비전: TPU부터 모바일까지 (Google I/O Extended Seoul 2017)
구글의 머신러닝 비전: TPU부터 모바일까지 (Google I/O Extended Seoul 2017)
Jeongkyu Shin
 
Deep-learning based Language Understanding and Emotion extractions
Deep-learning based Language Understanding and Emotion extractionsDeep-learning based Language Understanding and Emotion extractions
Deep-learning based Language Understanding and Emotion extractions
Jeongkyu Shin
 
기술 관심 갖기: 스타트업 기술 101 (Interested in Tech?: Startup Technology 101)
기술 관심 갖기: 스타트업 기술 101 (Interested in Tech?: Startup Technology 101)기술 관심 갖기: 스타트업 기술 101 (Interested in Tech?: Startup Technology 101)
기술 관심 갖기: 스타트업 기술 101 (Interested in Tech?: Startup Technology 101)
Jeongkyu Shin
 
OSS SW Basics Lecture 14: Open source hardware
OSS SW Basics Lecture 14: Open source hardwareOSS SW Basics Lecture 14: Open source hardware
OSS SW Basics Lecture 14: Open source hardware
Jeongkyu Shin
 
OSS SW Basics Lecture 12: Open source in research fields
OSS SW Basics Lecture 12: Open source in research fieldsOSS SW Basics Lecture 12: Open source in research fields
OSS SW Basics Lecture 12: Open source in research fields
Jeongkyu Shin
 
OSS SW Basics Lecture 10: Setting up term project
OSS SW Basics Lecture 10: Setting up term projectOSS SW Basics Lecture 10: Setting up term project
OSS SW Basics Lecture 10: Setting up term project
Jeongkyu Shin
 

More from Jeongkyu Shin (20)

Boosting machine learning workflow with TensorFlow 2.0
Boosting machine learning workflow with TensorFlow 2.0Boosting machine learning workflow with TensorFlow 2.0
Boosting machine learning workflow with TensorFlow 2.0
 
Machine Learning in Google I/O 19
Machine Learning in Google I/O 19Machine Learning in Google I/O 19
Machine Learning in Google I/O 19
 
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
 
TensorFlow 2: New Era of Developing Deep Learning Models
TensorFlow 2: New Era of Developing Deep Learning ModelsTensorFlow 2: New Era of Developing Deep Learning Models
TensorFlow 2: New Era of Developing Deep Learning Models
 
Machine Learning Model Serving with Backend.AI
Machine Learning Model Serving with Backend.AIMachine Learning Model Serving with Backend.AI
Machine Learning Model Serving with Backend.AI
 
그렇게 커미터가 된다: Python을 통해 오픈소스 생태계 가르치기
그렇게 커미터가 된다: Python을 통해 오픈소스 생태계 가르치기그렇게 커미터가 된다: Python을 통해 오픈소스 생태계 가르치기
그렇게 커미터가 된다: Python을 통해 오픈소스 생태계 가르치기
 
오픈소스 라이선스를 둘러싼 소송들
오픈소스 라이선스를 둘러싼 소송들오픈소스 라이선스를 둘러싼 소송들
오픈소스 라이선스를 둘러싼 소송들
 
Backend.AI: 오픈소스 머신러닝 인프라 프레임워크
Backend.AI: 오픈소스 머신러닝 인프라 프레임워크Backend.AI: 오픈소스 머신러닝 인프라 프레임워크
Backend.AI: 오픈소스 머신러닝 인프라 프레임워크
 
모바일 개발자를 위한 ML Kit: Machine Learning SDK 소개
모바일 개발자를 위한 ML Kit: Machine Learning SDK 소개모바일 개발자를 위한 ML Kit: Machine Learning SDK 소개
모바일 개발자를 위한 ML Kit: Machine Learning SDK 소개
 
회색지대: 이상과 현실 - 오픈소스 저작권
회색지대: 이상과 현실 - 오픈소스 저작권회색지대: 이상과 현실 - 오픈소스 저작권
회색지대: 이상과 현실 - 오픈소스 저작권
 
TensorFlow.Data 및 TensorFlow Hub
TensorFlow.Data 및 TensorFlow HubTensorFlow.Data 및 TensorFlow Hub
TensorFlow.Data 및 TensorFlow Hub
 
Google Polymer in Action
Google Polymer in ActionGoogle Polymer in Action
Google Polymer in Action
 
The Flow of TensorFlow
The Flow of TensorFlowThe Flow of TensorFlow
The Flow of TensorFlow
 
Let Android dream electric sheep: Making emotion model for chat-bot with Pyth...
Let Android dream electric sheep: Making emotion model for chat-bot with Pyth...Let Android dream electric sheep: Making emotion model for chat-bot with Pyth...
Let Android dream electric sheep: Making emotion model for chat-bot with Pyth...
 
구글의 머신러닝 비전: TPU부터 모바일까지 (Google I/O Extended Seoul 2017)
구글의 머신러닝 비전: TPU부터 모바일까지 (Google I/O Extended Seoul 2017)구글의 머신러닝 비전: TPU부터 모바일까지 (Google I/O Extended Seoul 2017)
구글의 머신러닝 비전: TPU부터 모바일까지 (Google I/O Extended Seoul 2017)
 
Deep-learning based Language Understanding and Emotion extractions
Deep-learning based Language Understanding and Emotion extractionsDeep-learning based Language Understanding and Emotion extractions
Deep-learning based Language Understanding and Emotion extractions
 
기술 관심 갖기: 스타트업 기술 101 (Interested in Tech?: Startup Technology 101)
기술 관심 갖기: 스타트업 기술 101 (Interested in Tech?: Startup Technology 101)기술 관심 갖기: 스타트업 기술 101 (Interested in Tech?: Startup Technology 101)
기술 관심 갖기: 스타트업 기술 101 (Interested in Tech?: Startup Technology 101)
 
OSS SW Basics Lecture 14: Open source hardware
OSS SW Basics Lecture 14: Open source hardwareOSS SW Basics Lecture 14: Open source hardware
OSS SW Basics Lecture 14: Open source hardware
 
OSS SW Basics Lecture 12: Open source in research fields
OSS SW Basics Lecture 12: Open source in research fieldsOSS SW Basics Lecture 12: Open source in research fields
OSS SW Basics Lecture 12: Open source in research fields
 
OSS SW Basics Lecture 10: Setting up term project
OSS SW Basics Lecture 10: Setting up term projectOSS SW Basics Lecture 10: Setting up term project
OSS SW Basics Lecture 10: Setting up term project
 

Recently uploaded

Chapter 3 - Islamic Banking Products and Services.pptx
Chapter 3 - Islamic Banking Products and Services.pptxChapter 3 - Islamic Banking Products and Services.pptx
Chapter 3 - Islamic Banking Products and Services.pptx
Mohd Adib Abd Muin, Senior Lecturer at Universiti Utara Malaysia
 
Phrasal Verbs.XXXXXXXXXXXXXXXXXXXXXXXXXX
Phrasal Verbs.XXXXXXXXXXXXXXXXXXXXXXXXXXPhrasal Verbs.XXXXXXXXXXXXXXXXXXXXXXXXXX
Phrasal Verbs.XXXXXXXXXXXXXXXXXXXXXXXXXX
MIRIAMSALINAS13
 
The Roman Empire A Historical Colossus.pdf
The Roman Empire A Historical Colossus.pdfThe Roman Empire A Historical Colossus.pdf
The Roman Empire A Historical Colossus.pdf
kaushalkr1407
 
Unit 2- Research Aptitude (UGC NET Paper I).pdf
Unit 2- Research Aptitude (UGC NET Paper I).pdfUnit 2- Research Aptitude (UGC NET Paper I).pdf
Unit 2- Research Aptitude (UGC NET Paper I).pdf
Thiyagu K
 
The French Revolution Class 9 Study Material pdf free download
The French Revolution Class 9 Study Material pdf free downloadThe French Revolution Class 9 Study Material pdf free download
The French Revolution Class 9 Study Material pdf free download
Vivekanand Anglo Vedic Academy
 
Guidance_and_Counselling.pdf B.Ed. 4th Semester
Guidance_and_Counselling.pdf B.Ed. 4th SemesterGuidance_and_Counselling.pdf B.Ed. 4th Semester
Guidance_and_Counselling.pdf B.Ed. 4th Semester
Atul Kumar Singh
 
"Protectable subject matters, Protection in biotechnology, Protection of othe...
"Protectable subject matters, Protection in biotechnology, Protection of othe..."Protectable subject matters, Protection in biotechnology, Protection of othe...
"Protectable subject matters, Protection in biotechnology, Protection of othe...
SACHIN R KONDAGURI
 
Honest Reviews of Tim Han LMA Course Program.pptx
Honest Reviews of Tim Han LMA Course Program.pptxHonest Reviews of Tim Han LMA Course Program.pptx
Honest Reviews of Tim Han LMA Course Program.pptx
timhan337
 
The Challenger.pdf DNHS Official Publication
The Challenger.pdf DNHS Official PublicationThe Challenger.pdf DNHS Official Publication
The Challenger.pdf DNHS Official Publication
Delapenabediema
 
The approach at University of Liverpool.pptx
The approach at University of Liverpool.pptxThe approach at University of Liverpool.pptx
The approach at University of Liverpool.pptx
Jisc
 
Introduction to AI for Nonprofits with Tapp Network
Introduction to AI for Nonprofits with Tapp NetworkIntroduction to AI for Nonprofits with Tapp Network
Introduction to AI for Nonprofits with Tapp Network
TechSoup
 
2024.06.01 Introducing a competency framework for languag learning materials ...
2024.06.01 Introducing a competency framework for languag learning materials ...2024.06.01 Introducing a competency framework for languag learning materials ...
2024.06.01 Introducing a competency framework for languag learning materials ...
Sandy Millin
 
Instructions for Submissions thorugh G- Classroom.pptx
Instructions for Submissions thorugh G- Classroom.pptxInstructions for Submissions thorugh G- Classroom.pptx
Instructions for Submissions thorugh G- Classroom.pptx
Jheel Barad
 
1.4 modern child centered education - mahatma gandhi-2.pptx
1.4 modern child centered education - mahatma gandhi-2.pptx1.4 modern child centered education - mahatma gandhi-2.pptx
1.4 modern child centered education - mahatma gandhi-2.pptx
JosvitaDsouza2
 
Supporting (UKRI) OA monographs at Salford.pptx
Supporting (UKRI) OA monographs at Salford.pptxSupporting (UKRI) OA monographs at Salford.pptx
Supporting (UKRI) OA monographs at Salford.pptx
Jisc
 
Home assignment II on Spectroscopy 2024 Answers.pdf
Home assignment II on Spectroscopy 2024 Answers.pdfHome assignment II on Spectroscopy 2024 Answers.pdf
Home assignment II on Spectroscopy 2024 Answers.pdf
Tamralipta Mahavidyalaya
 
Francesca Gottschalk - How can education support child empowerment.pptx
Francesca Gottschalk - How can education support child empowerment.pptxFrancesca Gottschalk - How can education support child empowerment.pptx
Francesca Gottschalk - How can education support child empowerment.pptx
EduSkills OECD
 
Additional Benefits for Employee Website.pdf
Additional Benefits for Employee Website.pdfAdditional Benefits for Employee Website.pdf
Additional Benefits for Employee Website.pdf
joachimlavalley1
 
Synthetic Fiber Construction in lab .pptx
Synthetic Fiber Construction in lab .pptxSynthetic Fiber Construction in lab .pptx
Synthetic Fiber Construction in lab .pptx
Pavel ( NSTU)
 
Unit 8 - Information and Communication Technology (Paper I).pdf
Unit 8 - Information and Communication Technology (Paper I).pdfUnit 8 - Information and Communication Technology (Paper I).pdf
Unit 8 - Information and Communication Technology (Paper I).pdf
Thiyagu K
 

Recently uploaded (20)

Chapter 3 - Islamic Banking Products and Services.pptx
Chapter 3 - Islamic Banking Products and Services.pptxChapter 3 - Islamic Banking Products and Services.pptx
Chapter 3 - Islamic Banking Products and Services.pptx
 
Phrasal Verbs.XXXXXXXXXXXXXXXXXXXXXXXXXX
Phrasal Verbs.XXXXXXXXXXXXXXXXXXXXXXXXXXPhrasal Verbs.XXXXXXXXXXXXXXXXXXXXXXXXXX
Phrasal Verbs.XXXXXXXXXXXXXXXXXXXXXXXXXX
 
The Roman Empire A Historical Colossus.pdf
The Roman Empire A Historical Colossus.pdfThe Roman Empire A Historical Colossus.pdf
The Roman Empire A Historical Colossus.pdf
 
Unit 2- Research Aptitude (UGC NET Paper I).pdf
Unit 2- Research Aptitude (UGC NET Paper I).pdfUnit 2- Research Aptitude (UGC NET Paper I).pdf
Unit 2- Research Aptitude (UGC NET Paper I).pdf
 
The French Revolution Class 9 Study Material pdf free download
The French Revolution Class 9 Study Material pdf free downloadThe French Revolution Class 9 Study Material pdf free download
The French Revolution Class 9 Study Material pdf free download
 
Guidance_and_Counselling.pdf B.Ed. 4th Semester
Guidance_and_Counselling.pdf B.Ed. 4th SemesterGuidance_and_Counselling.pdf B.Ed. 4th Semester
Guidance_and_Counselling.pdf B.Ed. 4th Semester
 
"Protectable subject matters, Protection in biotechnology, Protection of othe...
"Protectable subject matters, Protection in biotechnology, Protection of othe..."Protectable subject matters, Protection in biotechnology, Protection of othe...
"Protectable subject matters, Protection in biotechnology, Protection of othe...
 
Honest Reviews of Tim Han LMA Course Program.pptx
Honest Reviews of Tim Han LMA Course Program.pptxHonest Reviews of Tim Han LMA Course Program.pptx
Honest Reviews of Tim Han LMA Course Program.pptx
 
The Challenger.pdf DNHS Official Publication
The Challenger.pdf DNHS Official PublicationThe Challenger.pdf DNHS Official Publication
The Challenger.pdf DNHS Official Publication
 
The approach at University of Liverpool.pptx
The approach at University of Liverpool.pptxThe approach at University of Liverpool.pptx
The approach at University of Liverpool.pptx
 
Introduction to AI for Nonprofits with Tapp Network
Introduction to AI for Nonprofits with Tapp NetworkIntroduction to AI for Nonprofits with Tapp Network
Introduction to AI for Nonprofits with Tapp Network
 
2024.06.01 Introducing a competency framework for languag learning materials ...
2024.06.01 Introducing a competency framework for languag learning materials ...2024.06.01 Introducing a competency framework for languag learning materials ...
2024.06.01 Introducing a competency framework for languag learning materials ...
 
Instructions for Submissions thorugh G- Classroom.pptx
Instructions for Submissions thorugh G- Classroom.pptxInstructions for Submissions thorugh G- Classroom.pptx
Instructions for Submissions thorugh G- Classroom.pptx
 
1.4 modern child centered education - mahatma gandhi-2.pptx
1.4 modern child centered education - mahatma gandhi-2.pptx1.4 modern child centered education - mahatma gandhi-2.pptx
1.4 modern child centered education - mahatma gandhi-2.pptx
 
Supporting (UKRI) OA monographs at Salford.pptx
Supporting (UKRI) OA monographs at Salford.pptxSupporting (UKRI) OA monographs at Salford.pptx
Supporting (UKRI) OA monographs at Salford.pptx
 
Home assignment II on Spectroscopy 2024 Answers.pdf
Home assignment II on Spectroscopy 2024 Answers.pdfHome assignment II on Spectroscopy 2024 Answers.pdf
Home assignment II on Spectroscopy 2024 Answers.pdf
 
Francesca Gottschalk - How can education support child empowerment.pptx
Francesca Gottschalk - How can education support child empowerment.pptxFrancesca Gottschalk - How can education support child empowerment.pptx
Francesca Gottschalk - How can education support child empowerment.pptx
 
Additional Benefits for Employee Website.pdf
Additional Benefits for Employee Website.pdfAdditional Benefits for Employee Website.pdf
Additional Benefits for Employee Website.pdf
 
Synthetic Fiber Construction in lab .pptx
Synthetic Fiber Construction in lab .pptxSynthetic Fiber Construction in lab .pptx
Synthetic Fiber Construction in lab .pptx
 
Unit 8 - Information and Communication Technology (Paper I).pdf
Unit 8 - Information and Communication Technology (Paper I).pdfUnit 8 - Information and Communication Technology (Paper I).pdf
Unit 8 - Information and Communication Technology (Paper I).pdf
 

OSS SW Basics Lecture 03: Fundamental parts of open-source projects

  • 1. Lecture 03/16: Fundamental parts of open-source projects Jeongkyu Shin Sep 28, 2016
  • 3. Project type ▪ The “lone wolf” ▪ Easily found at many open-source projects ▪ Small / The ‘power of one’ effect ▪ Becomes team when it is needed for crowds ▪ OSS team ▪ Most OSS projects are ▪ Consists of various positions ▪ Enterprise-based OSS ▪ Well-structured codebase ▪ Fixed tech stacks
  • 4. The importance of OSS topic ▪ Hobby → Response → Digging →Community →Ecosphere ▪ Personal story #1 (2004~2008)
  • 5. Development positions So many positions for the goal
  • 6. Tech stacks ▪ Backbone / server developer ▪ Front-end developer ▪ App developer ▪ Android / iOS / ETC ▪ Designer ▪ Full-stack developer?
  • 7. Backbone / server developer (1) ▪ Very important when you want to make opensource-based ‘service’ ▪ When front-end developer also develops backbone/server: ▪ Before scaling ▪ Better for prototyping ▪ Will need refactoring ▪ Database master ▪ Independent position when developing server-side
  • 8. Backbone / server developer (2) ▪ Server-side development language ▪ Korea: Java+Spring ▪ Start-up companies ▪ Uses various stacks ▪ Node.js / Python / Go ▪ RoR / Scala (sometimes)
  • 9. Front-end developer (1) ▪ Develops “viewable” part ▪ Need understanding about ‘designing’ ▪ Platform-dependency ▪ “Web” or “App” ? ▪ What devices? ▪ Also server-side? ▪ When the project is based on APM / NPM
  • 10. Front-end developer (2) ▪ Front-end development languages ▪ Not the much far from server-side ▪ Web (HTML5 / ES6) ▪ jQuery / Bootstrap ▪ Angular.js / backbone.js (for SPA) ▪ React / React Native / Polymer
  • 11. App developer (1) ▪ Mobile frontend development ▪ Can be with front-end developer ▪ Depends on the framework ▪ React Native / Polymer / Cordova ▪ Considerations ▪ Applications with lightening-speed responses? ▪ Applications those need the real-time communications?
  • 12. App developer (2) ▪ Needs understanding about native language of app platform ▪ Android: Java+Android framework ▪ iOS: Objective-C + Swift ▪ Windows / macOS / Linux ▪ Various languages ▪ Cross-platform? ▪ Java ▪ Binding : QT / GTK / Mono?
  • 13. The ‘team’ ▪ (Frontend+backend) developer + app developer ▪ When the project grows: ▪ Divide frontend and backend development positions ▪ App developer -> platform-specific developer ▪ Designer ▪ Artworks
  • 14. Structure and architecture After gathering building blocks
  • 15. Interests / tech stacks ▪ OSS: from the language I can ▪ Of course it usually starts from author’s need ▪ Stand-alone or service application? ▪ Desktop or mobile application? ▪ Local or network application?
  • 16. DevOps ▪ Development + Operation ▪ Usually it is separated ▪ Customer / operation part ▪ Development part ▪ Faster tech stack changes lead startups into DevOps ▪ OSS-based projects choose DevOps ▪ Team size effect ▪ Ultra-fast develop / production cycle
  • 17. Collaboration tools (real-time) ▪ IRC ▪ Old but still working method ▪ Servers / channels ▪ Slack (not OSS. It is service) ▪ Almost similar to IRC ▪ Team-specific chatting channels ▪ Many IRC channels support “relay” between IRC and Slack
  • 18. Test suite ▪ Automatically check / test codes ▪ Language-specific test suites ▪ Travis CI ▪ Easy: Add configuration to the project on Github ▪ Free: for OSS projects ▪ You will need it for your CI
  • 19. Documentation The most important part to be ‘usable software’
  • 20. Documentation from source code ▪ JavaDoc (http://www.oracle.com/technetwork/articles/java/index-137868.html) ▪ Tool for generating API documentation in HTML format from doc comments in source code ▪ Traditional and strong / can use with other programming languages ▪ Doxygen ▪ The de facto standard tool for generating documentation from annotated C++ sources, ▪ Sphinx ▪ Tool that makes it easy to create intelligent and beautiful documentation ▪ reST (reStructuredText) (http://docutils.sourceforge.net/docs/user/rst/quickref.html) ▪ Docco (http://jashkenas.github.io/docco/) ▪ Quick-and-dirty documentation generator
  • 21. Documentation format ▪ JavaDoc ▪ https://www.tutorialspoint.com/jav a/java_documentation.htm ▪ Doxygen ▪ http://xerces.apache.org/xerces- c/apiDocs-3/classes.html ▪ reStructuredText ▪ http://docutils.sourceforge.net/doc s/user/rst/quickref.html ▪ Docco ▪ https://davidwalsh.name/javascript- documentation ▪ Only for docs: Markdown (https://daringfireball.net/projects/m arkdown/) ▪ Easy text-to-HTML conversion tool/specification for web writers ▪ Many parser exists
  • 22. Learn by run today:
  • 23. Learn by run today ▪ Discuss about your team objective and project on Slack ▪ Finalize your project name / goal ▪ Fix the dev. position. (Of course you can be a full-stack developer! Why not?) ▪ Set the rule ▪ Create team github project page ▪ With language setup / license / initalization ▪ Create Jekyll github wiki page for project
  • 24. Learn by run today ▪ Write the plan about the project ▪ Name ▪ Purpose ▪ Goal ▪ Milestone ▪ Add ‘link to github project page’ to your personal github page
  • 25. Assignment #1 ▪ Explore 10 or more github projects related to your project ▪ Get the statistics ▪ Tech stacks (language, database, OS, environment) / members / code length / contributions / ETC. ▪ Summarize the result statistics using LibreOffice Calc ▪ Send results to Teaching Assistant using Slack message ▪ Due date: Oct. 4 00:00 (Oct. 3 24:00)
  • 26. Next is... 4/16: OSS License issues @inureyes Questions? inureyes@gmail.com OR https://www.codeonweb.com/circle/@oss-basics-hu