2017년 9월 28일(목) ~ 11월 21일(화)

덤블도어 교수님

커뮤니티용 게이미피케이션 오픈소스 챗봇 개발

오픈소스 커뮤니티에서 슬랙 등의 메신저를 이용하는 경우가 많은데, 메신저의 특성 상 데이터가 흘러가 버리기 때문에 소중한 참여와 공헌이 축적되지 않습니다. 그래서 게이미피케이션 요소를 제공하는 ‘덤블도어 교수님’이라는 오픈소스 챗봇을 개발하는 아이디어를 가지고 이 문제를 해킹해보고자 합니다.

김동우 멘토

활용 언어: JavaScript

JavaScript와 오픈소스 커뮤니티에 관심이 큰 IT업계 관련 현직자와 학생

난이도

중-하
  • 알파버전인 ‘덤블도어 교수님’의 구성과 코드를 리뷰합니다.
  • 게이미피케이션 요소를 고려하여, 자신의 수준을 감안한 개발 목표를 구상합니다.
  • NodeJS를 개발하기 위한 개발환경을 셋팅합니다.
  • Github.com의 사용법과 컨트리뷰션하는 일련의 과정을 조사합니다.
  • 코드 품질 관리, 자동 테스트, 자동 배포, 웹 UI 구현에 대한 방법을 탐구합니다.
  • 검색 키워드: ESLint, Travis CI, Heroku, React

구글 크로미움 블링크 엔진

구글 크롬으로 시작하는 오픈소스 입문

Chromium 프로젝트는 Chrome WebBrowser를 만들기 위해 구글의 주도하에 여러 브라우저 벤더와 웹 관련 업종의 사람들이 만들어가는 오픈소스입니다. 크롬 브라우저는 내부적으로 Blink 엔진을 사용하고 있으며, 모든 인터넷 사용자가 웹을 경험할 수 있는 보다 안전하고, 빠르고, 안정적인 방법을 만드는 것을 목표로 하며, 브라우저 렌더링을 위한 레이아웃 엔진 뿐만 아니라 HTML5 기반의 여러 새로운 웹 플랫폼 기능들을 포함하고 있습니다.

박열 멘토 홍영기 멘토

활용 언어: C/C++ base (optional Javascript, Python, HTML5)

- 대규모 오픈소스 프로젝트를 경험해보고 싶은 사람 (C/C++ 기본 가능자)
- 규모가 큰 프로젝트의 설계/분석 및 코딩/빌드/테스트에 관심이 많은 사람
- 브라우저 및 브라우저 엔진 개발(Rendering Engine, WebPlatform)에 관심이 있는 사람
- 기술적 난이도 높은 Engineering design, User experience design문서들을 번역해 보고 싶은 사람
실제 구현은 대부분 C++(IOS의 경우 Objective C) 및 Java(Android)이며, HTML 및 JS/CSS로 개발하지 않으나 경험이 있으면 도움이 될 수 있음

난이도

  • 브라우저 엔진의 기본 동작 이해
  • Chromium/Blink의 소스는 13GB(빌드시 170GB이상 필요)에 달할 정도로 매우 큰 프로젝트입니다. 모든 분야를 다 할 수는 없지만, 기본적으로 동작이 어떻게 이뤄지는지는 파악을 해야 오픈소스에 참여할 수 있습니다.

    참고1: 브라우저는 어떻게 동작하는가?
    참고2: Multiprocessor Architecture
    참고3: How Chromium Displays Web Pages

  • 개발 환경 구축
  • Chromium 프로젝트는 소스 크기만 13GB 이상으로 매우 방대하므로 개발 환경 세팅에만 많은 시간이 걸릴 수 있습니다.
    각 플랫폼 별 세팅 방법

  • 프로젝트 기본 coding style 숙지
  • Chromium
    Blink

  • 내가 수정 가능한 Bug 찾기
  • Chromium은 누구나 버그를 찾아 수정 할 수 있도록 버그 리스트를 제공 합니다

    참고사항 : 초보자들을 위해 쉽게 해결할 수 있는 문제들을 일부러 고치지 않고 Good First Bug라는 이름으로 마련해 두었습니다. 이 문제들 중 해결할 수 있는 문제를 찾아서 직접 Contribution을 해봅니다.

  • Chromium에 사용된 고급 기술들 분석
  • Design Documents

IoT Labs

아두이노를 통한 하드웨어 개발과 웹 기술을 이용한 소프트웨어 개발

IoT 디바이스는 잘 다루지만 Web 개발에 익숙하지 않은 개발자를 위해 만들었습니다. 자신의 IoT 아이디어를 쉽게 구현할 수 있게 도움을 주려는 것이 이 프로젝트의 목적입니다.

이번 행사를 통해 IoT Labs : Farm 을 개발할 것입니다. 비닐하우스의 각종 정보를 센서를 통해 수집하고 웹으로 시각화(visualization)하여 농작물 관리에 도움을 주려 합니다.

김종광 멘토

활용 언어: Web(HTML/CSS/JavaScript) , C(Arduino)

JavaScript와 오픈소스 커뮤니티에 관심이 큰 IT업계 관련 현직 개발자와 학생

난이도

  • 교육
  • - Github을 통한 공개SW 개발에 익숙하지 않으셔도 됩니다.
    - Github 교육을 통해 함께 알아나갈 예정 입니다.
    - 그래서, 1~2주에 1번씩 오프라인 모임을 갖을 예정입니다. (참석 여부는 선택입니다)

  • H/W 구현하기
  • - Rasberry Pi 기반으로 개발될 것으로 보입니다. (협의를 통해 결정)
    - 온도/습도/광량 센서등을 부착하여 24시간 데이터를 수집합니다.
    - 3D Printer 로 Case 를 만드는 작업도 필요합니다.

  • S/W 구현하기
  • - H/W 에서 수집된 데이터를 Web 에 표시 합니다.
    - 시각화가 중요하여 관련 라이브러리를 많이 사용할 예정입니다.

  • 데이터 분석
  • - 데이터 분석까지는 범위가 아니지만, 앞으로 진행할 사항 입니다.
    - 모임에서 개발 방향을 결정할 것입니다.

Absolute

웹 기반 주문 결제 플랫폼 구축

Absolute는 웹 표준 기술을 기반으로 스타벅스의 사이렌오더와 같은 O2O 서비스를 비교적 쉽게 만들 수 있는 플랫폼을 지향하고 있습니다. 현재 이 프로젝트는 시작 단계로서 구현이 된 것은 아니지만 앱 설치, 회원 가입, 결제 솔루션 설치와 같은 복잡한 과정을 생략할 수 있는 웹 기반 주문결제 플랫폼을 만드는 것을 목표로 하고 있습니다.

방진호 멘토

활용 언어: Javascript, Typescript, C++,

- PWA(Progressive Web App)과 같은 최신 웹 표준 기술에 관심이 많은 분
- 오픈소스 컨트리뷰션에 관심이 많은 분

난이도

  • Absolute Project의 개요 설명 및 기반 브라우저 기술 소개
  • Absolute는 웹 표준 기술을 기반으로 하고 있으므로, 관련된 브라우저 및 표준 기술들에 대하여 간단한 설명 및 소개를 합니다. 관련 된 기술들은 다음과 같습니다.
  • - ServiceWorker and CacheStorage
    - WebApp Manifest
    - Web Payments (PaymentRequest)
    - Physical Web
    - Push Notification

    이 단계에서 위에 있는 모든 기술들을 상세히 설명하는 것은 아닙니다. 간단히 개념정도만 이해하고 넘어가며, 실제 컨트리뷰션에 필요한 내용은 직접 학습하여야 합니다.

  • 개발 환경 세팅 및 컨트리뷰션 가이드 숙지
  • - Absolute는 기본적으로 Multiplatform에서 동작하며, 손쉽게 개발 환경을 세팅할 수 있습니다.
    - Absolute에 기여를 하기 위해 필요한 몇가지 프로세스들을 설명합니다.

  • GoodFirst Bug 수정하기
  • - 2번 단계에서 학습한 컨트리뷰션 가이드를 직접 간단한 버그 수정을 통해 학습합니다. 이 과정을 통해 오픈소스에 기여하는 과정을 직간접적으로 익힐 수 있습니다.
    - GoodFirst Bug란 초심자들이 큰 노력없이 수정하기 쉬운 단순한 오타 수정, 간단한 오류 핸들링, 간단한 버그 수정 등을 의미합니다.

  • 중급 기술 구현하기
  • - 테스트 구현
    - 문서화

  • 고급 기술 구현하기
  • 이 단계에서는 실질적으로 Absolute에 필요한 주요 기술들을 구현합니다. 대표적으로 다음과 같은 기능들이 필요합니다.

    - 디바이스 기반의 인증 모듈
    - Web Payments 표준을 활용한 Payment App Demo
    - 하위 버전 브라우저를 지원하는 Push Notification 모듈

GSharp

블록 코딩 프레임워크의 모듈을 개발

본 프로젝트는 블록을 드래그하여 조립하는 것만으로 간편하게 응용 프로그램을 개발할 수 있는 블록 코딩 프레임워크의 모듈을 개발하는 프로젝트입니다. 본 컨트리뷰톤에서는 제공되는 개발자 도구를 활용하여 프레임워크에서 사용할 수 있는 다양한 블록 모듈을 개발합니다. C#, F#, VB.NET등의 자신이 좋아하는 언어들을 사용하여 블록을 조립하여 메일을 보낼 수 있는 메일 모듈, 날씨 정보를 확인할 수 있는 날씨 모듈, 스마트폰과 연동할 수 있는 모바일 모듈과 같이 다양하고 창의적인 모듈을 개발해봅니다.

소현섭 멘토

활용 언어: C#, F#, VB.NET

- 블록 코딩에 관심이 있는 사람
- .NET Framework 언어를 좋아하는 사람
- 다양한 개발 아이디어를 가지고 있는 사람
- 디자인 또는 문서 작업이 가능한 사람

난이도

  • 개발 환경 구성
  • 기본적으로 Windows 환경에서 Visual Studio를 사용합니다. 개발 도구를 설치하고 GSharp SDK를 참조하여 개발 환경을 구성합니다.
  • 프레임워크 이해
  • 블록 코딩 프레임워크의 전반적인 구조와 개발 방법을 이해합니다. 이 과정에서 블록 코딩과 모듈이 어떻게 동작하는지 확인할 수 있습니다.
  • 모듈 아이디어 회의
  • 아이디어 회의를 통해 어떤 모듈을 개발할지 기획합니다. 이 과정에서 모듈 개발에 연동할 수 있는 다양한 서비스들을 조사합니다.
  • 모듈 개발
  • 기획된 아이디어로 실제로 모듈을 개발하고 테스트 해봅니다. 개발된 다른 모듈과 비교하여 부족한 부분들을 개선하도록 합니다.
  • 모듈 공개
  • 완성된 모듈을 다른 사람들과 공유할 수 있도록 공개합니다. 개발된 코드를 오픈 소스 저장소에 올리고 문서 작업을 진행합니다.

perf / uftrace

C/C++프로그램을 위한 Profiling & Tracing 도구개발

C/C++ 프로그램의 성능을 PMU를 통해 측정하거나 실행도중의 함수호출 과정을 살펴볼 수 있는 profiling & tracing 도구입니다.

송태웅 멘토

활용 언어: C, python, etc.

- 오픈소스 개발에 참여하고 싶지만 진입 장벽에 부딪힌 분
- Linux Kernel 프로젝트 참여방법을 알고 싶은 사람
- C/C++프로그램을 위한 Profiling & Tracing 도구 개발에 대해 관심있는 사람

난이도

  • 프로젝트 정리 (perf 또는 uftrace)
  • - 프로젝트 명
    - 분야 및 한 줄 정의
    - 사용언어
    - 주요 feature 에 대한 시나리오 1 개
    - 총 라인 수, 폴더 나뉜 구조(depth 2-3)
    - 소스→ ( 컴파일 / 세팅 )→ 실행 과정

  • 선정된 프로젝트 개발환경구성
  • - 개발 및 테스트 환경 구성 : IDE 및 편집기와 debugging 툴 세팅
    - 컴파일 / 실행 테스트 : “hello world” 및 임의 내용 포함 테스트
    - Git개발 환경 구성 : local, remote repo, upstream 구조 잡기

  • 시나리오 기반 소스 분석
  • - 하나의 기능을 선정해서 그것이 실행되는 과정을 분석
    - 그와 관련된 class, data structure, function, call-graph 등을 분석

  • 프로젝트에 기여하기 (Contribution)
  • - 버그/리팩토링/minor feature PATCH 거리 수색하기
    - 분석한 시나리오를 바탕으로 다각도로 프로그램을 실행하며 분석적으로 사용한다.
    - 분석한 시나리오를 바탕으로 소스의 리팩토링 가능여부를 살펴보며 분석한다.
    - 이외의 다각도 시나리오로 이용하며 부족하거나 필요한 기능에 대해서 고민하고 구현해본다.
    - pull-request 또는 PATCH mail 전송
    - pull-request 및 PATCH mail 전송 전에 코드컨벤션 확인 및 테스트를 필수적으로 한다.
    - 완성한 다양한 수정사항(commit)을 해당 프로젝트에 pull-request 한다.
    - Github 대신 mailing list 활용 시 수정사항 (commit) 을 PATCH mail 을 전송한다.

ankus crawler

Bigdata 분야 중 수집

현재 apache license ver 2.0 로 개발된 ankus crawler 일부 사용자 UI 작업에 대한 일반 참여를 통하여 일반사용자들이 편하게 사용하게끔 UI를 만들고 개선하고자 합니다.

장동훈 멘토

활용 언어: JAVA, html

- crawler, 웹에 대한 이해 필요

난이도

중-하
  • ankus crawler 세부 통신 규약에 대한 이해
  • input UI
  • output UI

Ring

Python 캐시 유틸리티

Ring은 함수 시그내처에 맞춰 일반적인 캐시 인터페이스를 seamless 하게 제공하여 편의성을 갖추면서도 사용자가 원할 때는 명시적으로 완벽하게 제어할 수 있는 방법을 제공합니다. 일반적인 캐시 유틸리티는 이 중 한가지만을 제공하는 경우가 많습니다.

정윤원 멘토

활용 언어: Python

기존에 웹서버 등 캐시가 필요한 서비스를 개발해 보신 분들이 재미있게 할 수 있는 프로젝트입니다. 실제로 웹서버와 같은 코드에 캐시를 사용하는 코드를 작성하는 것은 아니지만, 어떤 인터페이스와 구현을 제공해야 사용자에게 유용한 결과가 나오는지 이해하는데 도움이 됩니다.

프로그래머를 위한 UX에 관심이 있다면 좋은 프로젝트입니다. 단순한 요구에는 단순한 사용법을, 복잡한 요구에는 세밀한 조작을 제공하는 프로젝트입니다.

난이도

  • 참여자의 관심분야와 참가 목표에 따라 다음 활동 중 일부를 선택할 수 있습니다.
  • 프로그래밍 분야: 기능 추가 등 프로젝트의 코드를 변경하여 업스트림에 반영하고 머지하는, 실질적인 프로그래밍 과정에 관심이 있는 참가자를 위한 코스입니다.
  • - 사용성 개선 및 기능 추가: 실제로 코드에 적용되는 캐시 사용성 개선에 관심이 있는 참가자
    - 유연성 개선 및 pluggable 인터페이스 구성: 고급 기능 사용자를 위해 동작의 일부를 사용자 코드로 교체할 수 있도록 인터페이스를 제공하고자 하는, 프로그래머를 위한 API에 관심이 있는 참가자
    - 백엔드 추가: memcache, redis 등 널리 쓰이는 백엔드 외에 평소 즐겨 쓰던 백엔드 지원을 추가하고자 하는 참가자

  • 오픈소스 분야: 프로그래밍에 익숙하지 않거나, 이 프로젝트에는 흥미가 없지만 컨트리뷰톤을 통해 오픈소스 프로젝트의 흐름을 체험해보거나, 나중에 원하는 프로젝트에 기여할 수 있는 밑거름으로 삼으려는 분들을 위한 연습 코스입니다. 프로그래밍 보다는 패치를 보내고 리뷰하는 과정이 중심이 됩니다.
  • - 프로젝트 적용 및 버그 리포트·기능제안: 널리 쓰이는 캐시 패턴에 Ring을 적용하는 예시를 작성하여 참고할 자료 및 테스트로 활용하고 부족한 사용성을 탐색해 냅니다.
    - 문서 작성 및 사용성 제안: (코드의 명세에 관한 문서가 아닌) 사용자 문서를 작성하여 사용 패턴에 따른 참고자료를 추가합니다.

Cubrid 매니저

이클립스 RCP 를 사용한 데이터베이스 질의 편집 도구

CUBRID 매니저는 GUI 환경에서 CUBRID 데이터베이스 관리 및 질의 기능을 제공하는 CUBRID 데이터베이스 전용 관리 도구입니다.  CUBRID 매니저의 관리 기능은 CUBRID 데이터베이스의 관리 작업을 GUI를 이용하여 쉽게 할 수 있습니다.  또한, CUBRID 매니저의 질의 기능은 응용 개발에 필요한 질의 편집기 도구를 제공합니다.

민 준 멘토

활용 언어: Java

1. 오픈소스 입문자
- 간단한 이슈 처리를 통해 오픈소스에 기여하고 싶은 분
2. 프로그래밍 초 중급자
- 사용 경험자
3. 데이터베이스 기본 개념 습득자
- 간단한 사용 가능한 분
- 기초 데이터베이스 이론을 이해하고 있는 분

난이도

  • kick-off
  • 멘토와 멘티의 만남
  • 프로젝트 관련 내용 공유
  • - github 사용법
    - CUBRID Manager에 기여하는 방법 등

  • 팀 배정 및 진행할 이슈 할당
  • 컨트리뷰톤 기간 중 자유롭게 멘토링 요청
  • - on-line 진행 후 필요에 따라 off-line 진행

  • wrap up 미팅
  • - 팀별, 개인별 진행 이슈에 대한 review

CloudBread Project

클라우드 기반의 오픈소스 게임 서버 엔진

CloudBread 프로젝트는 클라우드 기반의 오픈소스 게임 서버 엔진입니다. 저희는 게임 개발 과정에서 부수적으로 필요한 서버 및 관리 툴, 데이터 분석 툴 등을 모두 제공하는 것을 목표로 하고 있습니다.

홍윤석 멘토

활용 언어: Javascript, node.js, unity c#, ASP .NET

오픈 소스에 대한 열망이 있는 대학(원)생 및 일반인
개발 : Node.js 개발 경험이 있는 사람, 서버 개발 경험이 있는 사람
문서 작성 : 영문 문서 작성 가능한 사람 (그 외 외국어도 기여 가능)
디자인 : 디자인 가능한 사람, 게임 기획 혹은 디자인 경험이 많은 사람
(크게 위의 개발, 문서 작성, 디자인으로 프로젝트 참여 가능)

난이도

  • CloudBread 코어 Node.js 버전 개발을 완료 및 문서화 작업 완료
  • (이미 사용하고 있는 CloudBread 코어 부분이 있으며, 아키텍처와 DB가 문서화 되어 있기 때문에 프로젝트의 난이도는 높지 않을 것으로 예상)

    - 게임 개발에 필요한 추가 API 발굴 및 개발

  • 과정 1. CloudBread 코어 스터디
  • - CloudBread 코어 부분의 아키텍처와 DB 부분에 대해 함께 스터디를 진행
    - 개발 중에 Node 부분의 스터디가 필요하면, 병행하여 진행 할 계획
    - 본인이 기여 할 수 있는 방안에 대해 논의 진행: (개발부터 문서화, 디자인까지 방법에 상관없이 논의 가능)

  • 과정 2. CloudBread 팀 빌딩 개발 환경 셋팅
  • - 코어 개발 팀’과 ‘문서 및 디자인 팀’으로 나누고, 진행 계획 세우기
    - CloudBread 은 Microsoft Azure 기반의 PaaS 서버를 사용하고 있으므로, 간단한 Azure 활용법 스터디 진행 후, 개발 환경 셋팅

  • 과정 3. CloudBread 개발 진행
  • - 개발 진행하면서 팀간의 협업 진행

  • 과정 Extra. CloudBread가 제공 할 수 있는 추가 API 발굴 및 개발
  • - 위 과정 완료 시점에 따라 진행 여부 결정
    - CloudBread를 사용하여 게임을 개발 할 때, 불편한 점 및 추가적으로 필요한 API 발굴 및 개발