- 교과목명: 오픈소스소프트웨어
- 담당교수: 최광훈
- 인공지능학부 2학년 전공 교과목으로, 아래와 같은 내용을 이해하고 이에 대한 능력을 함양할 수 있도록 함을 해당 수업의 목표로 한다.
- 오픈소스 소프트웨어 개발을 위한 기본 개념과 도구, 특히 소스 코드 버전 컨트롤과 패키지 관리, 프로그램 빌드
- 애자일 기반 소프트웨어 개발 방법인 짝프로그래밍, 테스트 주도 개발, 행위 주도 개발, 클라우드 기반 데브옵스
- 새로운/낯선 소프트웨어 개발 환경 및 도구를 스스로 배우는 태도
- 수업방식: 플립러닝 방식
- 수업의 주요 내용
- 오픈소스소프트웨어 개요
- Git
- Github, fork, pull request
- Markdown
- Haskell
- Open Source Software(OSS)의 최신 트렌드와 분석을 GitHub Octoverse'에서 살펴본다.
- Open Source Software: 소프트웨어 저작권 소유자가 모든 사람에게 소스코드를 게시 사용 복사 수정 및 배포할 권리를 부여한 소프트웨어
- OSS License: 오픈소스 소프트웨어애 대한 권한의 범위를 지정
- OSS는 상용화 관점에서 Commercial SW와 Open Source SW로 나눌 수 있다.
- OSS는 철학적 관점에서 Free Software와 Open Source Software로 나눌 수 있다.
- 수많은 Open Source Software License 중 몇 가지에 대해서 알아봤다.
- GPL2.0
- LGPL
- MIT
- BSD
- Apache 2.0
- MPL1.0/1.1
- 버전관리의 필요성
- Make a single copy
- Add a version number or date
- Use a shared folder so other people can see and edit files together
- Version Control System(VCS): Track your files over time so you can easily get back to a previous working version
- VCS software의 종류
- CVS(Concurrent Version System)
- SVN(Subversion)
- Mercurial
- Darcs
- Git
- Repository or Repo(저장소)
- General Actions in VCS
- Checkin
- Checkout and editing
- Diffs
- Branching
- Merging
- Conflicts
- Tagging
- VCS는 주로 Centralized VCS와 Decentralized(Distributed) VCS
- Git은 Decentralized(Distributed) VCS에 해당한다.
- VCS software의 종류
-
Linus Torvalds: For collaboration of development of Linux kernel
-
A distributed version control system
- Workspace
- Index
- Local repository
- Remote repository
Github 명령어 연습
실습 전 설정 Stage 1: 초기화 및 첫 commit 하기
Stage 2: diff 사용과 추가 commit 하기
Stage 3: commit 에 본인서명 포함하기
Stage 4: 지금까지의 commit을 push하자
Stage 5: 커밋 수정하기
Stage 6: add 한거 취소하기
Stage 7: commit 한거 없애기
Github에서 fork하기
Stage 8: pull-request 하기
Stage 9: merge로 2개 브랜치 합치기
Stage 10: rebase 하기
Stage 11: 중간에 낀 commit 수정하기
Bonus Stage: blame으로 추적하기
- Italics and Bold
- Headers
- Links
- Images
- Blockquotes
- Lists
- Paragraphs