본문 바로가기
Development/Flutter

Flutter - Open Source License 패키지

by du.it.ddu 2023. 1. 24.
반응형

어떤 분야에서든지 개발을 해 보았다면 수 많은 오픈소스 라이브러리를 활용하고 있을 것이다.
오픈소스 라이브러리를 활용하는 것은 생산성을 높일 수 있을 뿐만 아니라,
개발 생태계에 있어 굉장히 좋은 문화라고 생각한다.

그러나 오픈소르 라이브러리를 활용하는데에 주의할 점이 있다.
바로 오픈소스 라이센스이다.

오픈소스 라이센스는 말 그대로 오픈소스에 대한 저작권 표시다.
오픈소스 라이브러리의 Github 저장소에서 Apache License 2.0이라던가, MIT License 같은 것을 본 적이 있을 것이다.
이것이 예인데, 각 라이센스 마다 수정 가능 여부, 상업적인 사용 가능 여부 등이 다르다.
라이센스에 대해 얘기하자면 끝이 없으니 여기선 넘어가겠다.

대부분의 오픈소스 라이브러리는 수정 및 상업적 이용에 제한이 없다.
다만, 저작권 표시는 해 주어야 한다.

사용하는 앱의 메뉴중에 오픈소스 라이센스를 고지하는 메뉴를 본 적이 있는가?
이것도 다 라이센스에 의한 저작권 표시이다.

아무튼, 우리는 수 많은 오픈소스를 사용하는데, 이것을 어떻게 일일이 작성할 수 있을까?
앱이 커지면 커질수록 노가다성 작업이 증가하고, 휴먼에러도 발생할 것 같고.

다행히도 Flutter도 이를 지원해주는 패키지가 존재한다.
https://pub.dev/packages/flutter_oss_licenses

 

flutter_oss_licenses | Dart Package

A tool to generate detail and better OSS license list using pubspec.yaml/lock files.

pub.dev

 

안드로이드는 플러그인이 있어서 쉽게 사용했는데, Flutter도 있어서 참 다행이다.
어떻게 사용하는지 알아보자.


아래를 참고하여 프로젝트에 설정하자.

dev_dependencies:
  flutter_oss_licenses: ^2.0.1
  
 flutter pub get
 
 flutter pub run flutter_oss_licenses:generate.dart

dev_dependencies에 추가하여 개발 시에만 관련 코드를 사용할 수 있게 한다.
그리고 패키지를 업데이트하고 오픈소스 라이브러리에 대한 라이센스 고지 데이터를 생성한다.
예를들어 아래와 같은 데이터가 생성된다.

const ossLicenses = <Package>[
  ...
  Package(
    name: 'dart_pubspec_licenses',
    description: 'A library to make it easy to extract OSS license information from Dart packages using pubspec.yaml',
    homepage: 'https://github.com/espresso3389/flutter_oss_licenses/tree/master/packages/dart_pubspec_licenses',
    repository: 'https://github.com/espresso3389/flutter_oss_licenses',
    authors: [],
    version: '2.0.1',
    license: '''MIT License
Copyright (c) 2019 Takashi Kawasaki
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.''',
    isMarkdown: false,
    isSdk: false,
    isDirectDependency: false,
  ),
  ...
];

라이브러리에 대한 전반적인 데이터와 해당 라이브러리의 라이센스 정보가 생성된다.
위 예시의 라이브러리는 MIT 라이센스다.


자동으로 생성된 오픈소스 라이센스 리스트 객체를 사용하여, 본인이 원하는 UI를 그려낸다.
예를들면 ListView를 사용한 오픈소스 라이브러리에 대한 리스트가 될 것이다.

리스트 구현에 대한 것은 자세하게 다룰 필요는 없을 것 같다.
필요하다면 공식 문서에 있는 예제 참고가 도움이 될 것이다.

https://pub.dev/packages/flutter_oss_licenses/example

반응형