일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 함수형프로그래밍
- circular dependency
- IOC
- 토이프로젝트
- Java
- bean-validator
- 컨트리뷰팅
- n poem
- bulk_create
- django
- DI
- SpringBoot
- API문서화
- 쿼리셋합치기
- resilience4j
- 객체비교
- 일급함수
- Spring
- 마이크로서비스패턴
- 상속모델
- 운영체제
- Npoem
- GraphQL
- circuitbreaker
- cannot import name
- 좋은코드란
- Not Null constraint failed
- 2차원배열 정렬
- 프로젝트설정
- 주니어개발자
- Today
- Total
코딩 하는 가든
Spring - 스프링 프레임워크에 컨트리뷰트를 하다. 본문
스프링 프레임워크에 컨트리뷰트를 하다.
최근 어쩌다 보니 스프링 프로젝트에 두 번의 커밋을 찍게 되었다. 사실 큰 기능은 아니지만 스프링 같은 거대한 프로젝트 어딘가에 나의 흔적이 남는다는 것 자체로 굉장히 뿌듯한 경험이었다. 사실 학생 개발자로서 간단하고 작은 프로젝트를 해오다가 이런 대규모 프로젝트에 도장을 하나 찍었다고 생각하니 진짜 개발자로 진화(?)를 한듯한 기분이었다.
그리고 놀랐던 것은 두 번의 커밋으로 컨트리뷰터 (20.06.17 기준) 100위에 안착 했다는 것이다. 리액트 프로젝트의 경우 100위의 커밋이 20여 개인 것을 생각해 보았을 때 오픈소스 활동이 그렇게 활발한 것 같지는 않았다...
스프링 메인테이너의 땡스를 받다.
오픈소스 활동에 참여하는 방법은 매우 다양하다. 소스 코드의 개선 뿐만 아니라 문서 수정, 번역 등의 활동도 오픈소스 활동에 포함된다. 본인은 이번에 아주 작은 코드 리팩토링을 진행하였는데, 진행하기 앞서 친구로부터 다음과 같은 이슈가 등록되었다는 정보를 얻게 되었고
바꾸어서 올렸더니.... 받아주었다...
https://github.com/spring-projects/spring-framework/pull/25199
두 번째 커밋
첫 번째 커밋 이후 재미가 들린 나는 (Thanks 를 받으니 묘하게 재미있다...) 다음 커밋 거리를 찾아 헤매다 괜찮은 것을 발견하였는데 그것은 바로 코딩 컨벤션에 위배되는 코드들이었다. 코딩 컨벤션에 대해서는 아래 페이지에 상세히 나와있다.
https://github.com/spring-projects/spring-framework/wiki/Code-Style
많은 컨벤션 중 특히 3항 연산자에 대한 스타일이 가이드와 다른게 많았는데, 3항 연산자는 가독성을 위하여 괄호로 감싸야하고 not null 조건이 앞에 나타나야 한다는 가이드라인이 있다. 이 조건에 위배된 코드를 몇 개 고쳐서 PR을 날려 봤더니...
상상도 못한 제약 조건이 있었다,.,.! 사실 스프링 프레임워크의 전반적인 구조를 모두 파악하지 못했기 때문에 몰랐던 것이지만 아마 이 답변이 없었다면 나는 ASM, CGLIB 등이 서드파티 라이브러리라는 것을 한참 후에야 알게 되지 않았을까 싶다...
매우 허접한 커밋이지만 이렇게 상세하게 답변을 달아주는 메인테이너를 보고 있자니 정말 열정이넘치고 본인의 프로젝트를 사랑하고 있다는 것이 느껴졌다. 또 이런 초보에게도 친절하고 세세한 답변을 달아주어 앞으로의 오픈 소스 활동을 독려해주고 있다는 느낌도 받았다. 어찌 되었간에 컨트리뷰팅은 여러모로 꽤나 배울 게 있었던 이벤트였던 것 같다.
이번에는 비록 작은 코드 수정이 다였지만 언젠가 더 큰 기여를 할 날을 꿈꾸며 오늘도 열심히 공부를 해야겠다.
'Spring (boot)' 카테고리의 다른 글
spring - 의존성 주입을 받는 여러 가지 방법 (0) | 2020.08.02 |
---|---|
spring - DI의 개념, 그리고 spring에서의 DI와 IoC (2) (0) | 2020.07.26 |
spring - DI의 개념, 그리고 spring에서의 DI와 IoC (1) (0) | 2020.07.22 |
SpringBoot - Swagger 설정해보기 (0) | 2020.03.22 |
SpringBoot - DTO 클래스에 대한 이해 (0) | 2020.03.09 |