Open Source 개발

[Visual Python] 오픈소스 컨트리뷰션 - 틈새 시장을 노려라

콜레오네 2023. 10. 22. 01:49

https://github.com/visualpython/visualpython

 

GitHub - visualpython/visualpython: GUI-based Python code generator for data science, extension to Jupyter Lab, Jupyter Notebook

GUI-based Python code generator for data science, extension to Jupyter Lab, Jupyter Notebook and Google Colab. - GitHub - visualpython/visualpython: GUI-based Python code generator for data science...

github.com

https://www.visualpython.ai/

 

Visual Python

GUI solution for Data Science

visualpython.ai

 

JavaScript 기반으로 데이터분석을 위한 Python 코드를 생성해주는 GUI 프로그램이다.

 

 


오픈소스에 기여하고 싶다면, 가장 먼저 오픈소스를 분석하고 문제점을 찾아야할 것이다.

아래 포스팅을 참고하면 좋을 것 같다.

[Visual Python] 오픈소스 컨트리뷰션을 위한 개선점 찾기

 

하지만 내가 새로운 기능을 추가하거나 버그를 해결하는 것이 버거울 수 있다.

모든 오픈소스가 그렇듯이, 오픈소스의 구조는 복잡하게 얽혀있고 

전혀 구조를 이해하지 못하는 상태에서 모든걸 해결하긴 어려울 수 있기 때문이다.

 

그렇다면? 약간의 틈새를 발견하고 그걸 해결하는 과정도 충분히 도움될 것이다.

 

 

Visual Python에서 File을 불러오는 App이다.

File Type을 통해 특정 확장자를 선택하고 불러올 수 있다.

이를테면 csv 타입을 선택하면 csv 확장자인 파일을 읽을 수 있다.

 

하지만 pandas의 read_csv() 함수는 csv 타입 뿐만 아니라, tsv, dsv 등

특정 delimiter로 구분된 다양한 타입의 파일을 지원한다.

 

tsv 타입의 파일일 경우

df = pd.read_csv("filename.tsv",delimiter='\t')

위와 같이 파일을 읽어들일 수 있다.

결국, read_csv 인터페이스 함수를 통해 csv, tsv, dsv 등 여러 확장자를 동시에 읽을 수 있어야 한다.

하지만 현재 상태로선 read_csv 함수에서 오직 csv 타입의 파일만 읽을 수 있다.

 

 

 

 

 

자, 그럼 문제 해결을 위해 가장 먼저 해야할 것은?

이슈를 생성해서 메인 테이너와 의견 교환을 해야한다.

 

https://github.com/visualpython/visualpython/issues/175

 

Add 'tsv' file on File.js options · Issue #175 · visualpython/visualpython

In data analysis, tsv files are frequently used. Visual Python can not load the tsv file. I want to add tsv option to this.

github.com

나는 위와 같이 tsv 파일을 추가하는 것이 어떻겠냐는 의견을 제시했다.

 

처음에는 csv 타입과 함게 tsv 타입오 select option으로 선택할 수 있는 방안을 제시했지만

메인테이너가 그것보단 delimiter로 구분할 수 있게 만드는 것이 좋겠다고 하셨고

결국 그 의견을 수용해서 컨트리뷰션을 진행해보기로 한다.

 

{   // pandas 라이브러리에 delimiter 인자 추가
    name: 'delimiter',
    type: 'text',
    label: 'Delimiter'
},
// add tsv dsv ssv extension to csv option
// tsv dsv ssv 함께 읽을 수 있게 변경
    if(that.state.fileExtension === 'csv'){
        fileExtensionArr = fileExtensionArr.concat(['tsv', 'dsv', 'ssv']);
    }

 

이렇게 간단한 변경을 통해

csv option을 선택하면 delimiter 인자를 자동으로 생성해주었고

csv 타입일 경우, file r/w에서 tsv, dsv, ssv를 함께 불러오거나 쓸 수 있게 변경하였다.

 

 

https://github.com/visualpython/visualpython/pull/176

 

Add 'tsv' file on File.js options by Minku-Koo · Pull Request #176 · visualpython/visualpython

Update File.js delimiter parameter is important for read_csv method. when user select 'csv' option, VP can load not only csv but also tsv dsv ssv. add extension 'File Read' and 'File Write'

github.com

오픈소스를 변경하고 테스트까지 완료했다면?

Pull Request를 통해 최종 승인을 받고 merge 되어야 한다.

결국 오랜 기다림 끝에 PR이 승인되었고, 최신 버전 release에 merged 되었음이 확인되었다!!

 

오픈소스 개선점을 찾는 방향은 여러가지가 있지만

오픈소스 컨트리뷰터로서 초심자라면, 틈새시장을 잘 노려서

간단한 버그나 기능을 추가함으로서 오픈소스의 이해를 높이는 과정을 추천한다.

 

큰 변화는 항상 작은 발걸음으로부터 시작되는 것이다.

반응형