맨위로가기

업스트림 (소프트웨어 개발)

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

업스트림은 소프트웨어 개발에서 패치를 원래 저자 또는 유지 관리자에게 전송하는 것을 의미한다. 개발자가 생성한 패치는 업스트림에 전송되어 수락 시 릴리스에 포함되거나 거부 시 자체 배포를 유지 관리해야 한다. 업스트림 저장소는 릴리스, 특정 커밋 또는 마스터일 수 있으며, 사용자 정의 배포는 업스트림 패치를 병합하지 않아 버그 수정 및 개선 사항을 놓칠 수 있다. 사용자 정의 배포 사용자는 중요한 업스트림 패치를 체리 픽하고 병합하기도 한다.

더 읽어볼만한 페이지

  • 소프트웨어 프로젝트 관리 - 소프트웨어 개발
    소프트웨어 개발은 요구사항 분석, 설계, 코딩, 테스트, 배포, 유지보수를 포함하는 컴퓨터 프로그램 및 관련 데이터를 만드는 과정으로, 다양한 방법론과 도구가 사용되며, 개발자 외에도 다양한 전문가들이 참여한다.
  • 소프트웨어 프로젝트 관리 - 애자일 소프트웨어 개발
    애자일 소프트웨어 개발은 1990년대에 등장하여 개인과 상호작용, 작동하는 소프트웨어, 고객과의 협력, 변화에 대한 대응을 핵심 가치로 삼고 적응형 계획과 반복적 실행을 통해 시장 출시 속도와 위험 완화를 추구하는 소프트웨어 개발 방법론이다.
  • 컴퓨터 용어 - 중앙 처리 장치
    중앙 처리 장치(CPU)는 컴퓨터 시스템의 핵심 부품으로, 프로그램 명령어를 해석하고 실행하여 데이터를 처리하는 장치이다.
  • 컴퓨터 용어 - 운영체제 서비스 관리
업스트림 (소프트웨어 개발)
개요
업스트림 (소프트웨어 개발)소프트웨어 개발에서 업스트림은 코드 또는 패치의 원저작자 또는 관리자에게 변경 사항을 제출하는 것을 의미함.
업스트림 기여의 장점버그 수정 및 기능 개선을 통해 모든 사용자가 혜택을 누릴 수 있음.
개발자의 부담을 줄이고 코드 유지 관리를 용이하게 함.
커뮤니티 참여를 통해 개발자의 기술 향상 및 협업 기회를 제공함.
업스트림 기여 시 고려 사항코드 품질 유지: 깔끔하고 잘 작성된 코드를 제공해야 함.
문서화: 변경 사항에 대한 명확한 설명을 제공해야 함.
테스트: 충분한 테스트를 통해 코드의 안정성을 보장해야 함.
커뮤니티 규정 준수: 업스트림 프로젝트의 코드 스타일, 라이선스, 기여 절차 등을 준수해야 함.
업스트림 유지 관리의 중요성코드 충돌 방지: 업스트림 변경 사항을 정기적으로 통합하여 코드 충돌을 최소화해야 함.
최신 기능 활용: 업스트림의 최신 기능 및 개선 사항을 활용하여 소프트웨어의 품질을 향상시켜야 함.
보안 유지: 업스트림의 보안 업데이트를 신속하게 적용하여 보안 취약점을 해결해야 함.
기타 고려 사항변경 사항 제출 전, 업스트림 프로젝트의 기여 가이드라인을 주의 깊게 읽고 따라야 함.
코드 리뷰에 적극적으로 참여하여 코드 품질을 개선해야 함.
인내심을 가지고 피드백을 수용하며, 필요한 경우 코드 변경을 수행해야 함.

2. 업스트림의 개념

업스트림은 소프트웨어 개발 과정에서 소스 코드의 원저작자 또는 유지보수 주체를 가리키는 용어이다. 업스트림으로 전송된 패치는 소프트웨어의 원래 저자나 유지 관리자에게 제공된다. 패치가 허용되면 저자 또는 유지 관리자는 패치를 즉시 또는 향후 릴리스에 포함한다. 거부될 경우, 패치를 제출한 사람은 자체 배포를 유지 관리해야 한다.

업스트림 저장소 또는 소스 코드 배포 버전은 특별히 패키지된 버전 태그가 지정된 릴리스, 특정 커밋, 또는 마스터(최신 커밋을 가리키는 속어)일 수 있다. 사용자 정의 배포(예: 포크)는 모든 업스트림 패치를 병합하지 않아 버그 수정 및 개선 사항을 놓쳤을 수 있다. 이러한 경우 사용자 정의 배포는 이를 사용하거나 유지 관리하는 사람들의 특정 요구 사항에 맞게 조정되었을 수도 있다. 이는 종속성(벤더 패키지)에서도 자주 볼 수 있으며, 이 경우 기본 버전에 한번 정착한 테이커는 시간이 지남에 따라 환경에 너무 많은 수정 또는 비표준 사용을 축적하여 최신 업스트림 패치를 사용자 정의 배포에 병합하는 것이 어려워진다. 이로 인해 패치 및 기능 호환성을 위한 추가 작업 없이는 불가능해지고, 자체적으로 해결한 버그의 중복 패치를 피할 수 없게 되며, 업스트림에도 이에 대한 패치가 존재하게 된다. 많은 사용자 정의 배포 사용자는 여전히 중요한 업스트림 패치(예: 보안 취약성 관련)를 선별하여 병합한다.

2. 1. 패치와 업스트림

개발자가 생성한 패치는 업스트림으로 전송되어 소프트웨어의 원래 저자 또는 유지 관리자에게 제공된다. 업스트림에서 패치가 승인되면 저자나 유지 관리자는 패치를 즉시 또는 향후 릴리스에 포함한다. 패치가 거부될 경우, 패치를 제출한 개발자는 자체 배포를 유지 관리해야 한다.

업스트림 저장소 또는 소스 코드 배포 ''버전''은 소스 코드가 특별히 패키지된 버전 태그가 지정된 릴리스, 특정 커밋, 또는 마스터(최신 커밋을 가리키는 속어)일 수 있다. 사용자 정의 배포(예: 포크)는 모든 업스트림 패치를 병합하지 않아 버그 수정 및 개선 사항을 놓쳤을 수 있다. 이러한 경우 사용자 정의 배포는 이를 사용하거나 유지 관리하는 사람들의 특정 요구 사항에 맞게 조정되었을 수도 있다. 이는 종속성(벤더 패키지)에서도 자주 볼 수 있는데, 여기서 테이커는 한 번 기본 버전에 정착하여 시간이 지남에 따라 환경에 너무 많은 수정 또는 비표준 사용을 축적하여 최신 업스트림 패치를 사용자 정의 배포에 병합하는 것이 어려워진다. 이로 인해 패치 및 기능 호환성을 위한 추가 작업 없이는 불가능해지고, 자체적으로 해결한 버그의 중복 패치를 피할 수 없게 되며, 업스트림에도 이에 대한 패치가 존재하게 된다. 많은 사용자 정의 배포 사용자는 여전히 중요한 업스트림 패치(예: 보안 취약성 관련)를 선별하여 병합한다.

2. 2. 업스트림 저장소와 버전

업스트림 저장소 또는 소스 코드 배포 버전은 소스 코드가 특별히 패키지된 버전 태그가 지정된 릴리스, 특정 커밋, 또는 마스터(최신 커밋에 대한 속어)일 수 있다. 사용자 정의 배포(예: 포크)는 모든 업스트림 패치를 병합하지 않아 버그 수정 및 개선 사항(원래 저자에 묶인 프로젝트의 성숙)을 놓쳤을 수 있다.[1] 이러한 경우 사용자 정의 배포는 이를 사용하거나 유지 관리하는 사람들의 특정 요구 사항에 맞게 조정되었을 수도 있다. 이는 종속성(벤더 패키지)에서도 자주 볼 수 있는데, 이 경우 기본 버전에 한번 정착한 테이커는 시간이 지남에 따라 환경에 너무 많은 (임의의) 수정 또는 비표준 사용을 축적하여 최신 업스트림 패치를 사용자 정의 배포에 병합하는 것이 패치 및 기능 호환성을 위해 주요 추가 작업 없이는 불가능해진다. 또한 자체적으로 해결한 버그(자체 방식)의 중복 패치를 피할 수 없으며, 업스트림에도 이에 대한 패치가 존재한다.[1] 많은 사용자 정의 배포 사용자는 여전히 중요한 업스트림 패치(예: 보안 취약성 관련)를 선별하여 병합한다.[1]

3. 사용자 정의 배포와 업스트림 패치 관리의 어려움

업스트림으로 ''전송된'' 패치는 소프트웨어의 원래 저자 또는 유지 관리자에게 제공된다. 저자나 유지 관리자가 패치를 허용하면, 해당 패치는 즉시 또는 향후 릴리스에 포함된다. 거부될 경우, 패치를 제출한 사람은 저자의 소프트웨어에 대한 자체 배포를 유지 관리해야 한다.

사용자 정의 배포(예: 포크)는 모든 업스트림 패치를 병합하지 않아 버그 수정 및 개선 사항을 놓쳤을 수 있다. 이러한 경우, 사용자 정의 배포는 이를 사용하거나 유지 관리하는 사람들의 특정 요구 사항에 맞게 조정되었을 수 있다. 이는 종속성(벤더 패키지)에서도 자주 볼 수 있는데, 테이커는 한 번 기본 버전에 정착하여 시간이 지남에 따라 환경에 너무 많은 임의 수정 또는 비표준 사용을 축적하여 최신 업스트림 패치를 사용자 정의 배포에 병합하는 것이 어려워진다. 패치 및 기능 호환성을 위해 주요 추가 작업 없이는 불가능해지고, 자체적으로 해결한 버그의 중복 패치를 피할 수 없으며, 업스트림에도 이에 대한 패치가 있을 수 있다. 많은 사용자 정의 배포 사용자는 여전히 중요한 업스트림 패치(예: 보안 취약성 관련)를 선별적으로 병합(체리 픽)하여 적용한다.

참조

[1] 웹사이트 Staying Close to Upstream Projects :: Fedora Docs https://docs.fedorap[...] Fedora Project 2022-01-18
[2] 웹사이트 Staying close to upstream projects http://fedoraproject[...] Fedora 2020-12-21
[3] 웹인용 Staying close to upstream projects http://fedoraproject[...] 페도라



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com