StewardAI

Eunice · StewardAI

· 15분 읽기

Open Food Facts: 뉴트리스코어를 코드로 공개하는 오픈소스 영양 데이터베이스 앱

Open Food Facts는 비영리·자원봉사 기반 앱으로, 뉴트리스코어와 그린스코어 등급을 매기는 코드가 블랙박스가 아니라 공개된 코드로 돌아갑니다 — GitHub 저장소로 직접 검증했습니다.

슈퍼마켓 진열대에 줄지어 놓인 포장 식품들 — Open Food Facts를 움직이는 바코드 데이터를 상징하는 이미지

식품 평가 앱에서 바코드를 스캔하면 등급이 뜹니다 — 영양 성분이 좋으면 A, 나쁘면 F. 그런데 그 등급이 실제로 어디서 나오는지 확인해보는 사람은 거의 없습니다. Open Food Facts는 직접 확인할 수 있는 드문 사례입니다. 비영리 오픈소스 데이터베이스이자 앱인데, 등급을 매기는 코드 — 마케팅용 설명이 아니라 실제 공식 그 자체 — 가 누구나 읽을 수 있는 공개 GitHub 저장소에 그대로 올라와 있습니다.

이건 그냥 믿고 넘어가기보다 직접 확인해볼 가치가 있는 지점입니다 — 여기서 "오픈"이라는 말이 실제로 감사 가능한 주장인지, 아니면 그냥 배지에 불과한지 말이죠. openfoodfacts-server 저장소가 이 질문에 답을 줍니다 — 보도자료가 아니라 라이선스 조항, 모듈 주석, 커밋 히스토리로요.

프로젝트가 직접 밝힌 정의

서버 저장소의 README는 명확하게 밝힙니다. "Open Food Facts는 자원봉사자로 이루어진 비영리 단체입니다."(Open Food Facts is a non-profit association of volunteers.) 프로젝트가 내세우는 원칙은 "식품 데이터는 공공의 이익에 해당하며 반드시 공개되어야(즉, 누구나 이용할 수 있어야) 한다"(Food data is of public interest and must be open (i.e., available to everyone))는 것입니다. 전체 데이터베이스는 오픈 데이터로 공개되어 누구나 어떤 목적으로든 재사용할 수 있습니다 — 과학 연구든, 다른 앱이든, 심지어 경쟁사의 제품이든 같은 조건 아래 모두 허용됩니다.

이 조직의 GitHub 프로필 자체를 보면 본거지는 프랑스 파리로 되어 있고, 공개 저장소 127개, 팔로워 1,600명을 갖고 있습니다 — 두 명이 취미로 하는 사이드 프로젝트가 아니라, 인프라가 하나의 거대한 저장소가 아니라 여러 저장소로 나뉘어 있는 진짜 오픈소스 조직입니다.

실제로는 어떻게 쓰는가

소비자가 실제로 쓰는 제품은 smooth-app입니다. 저장소 자체 설명에 따르면 "Flutter와 Dart로 만든, 안드로이드와 iOS용 새로운 Open Food Facts 모바일 애플리케이션"(The new Open Food Facts mobile application for Android and iOS, crafted with Flutter and Dart)입니다. 바코드를 스캔하면 공유 데이터베이스에서 해당 제품의 원재료, 알레르기 유발 성분, 영양 정보를 가져옵니다. 릴리스 페이지를 보면 가장 최근 빌드는 v4.24.0으로, 2026년 8월 24일에 공개됐습니다 — 이 글을 확인한 시점보다 약 한 달 전입니다 — 릴리스 노트에는 Flutter 3.44 업그레이드, 식품 선호도 설정 흐름 재설계, 그리고 노트에서 "헝거 게임"("hunger games") 기능이라고 부르는 부분의 이미지 품질 수정 사항이 담겨 있습니다.

특이한 점은, 이 앱 자체가 뒤에 있는 데이터베이스 엔진과는 다른 라이선스로 배포된다는 것입니다. smooth-app의 LICENSE 파일은 관대한 조건의 Apache License 2.0인 반면, 서버의 LICENSE는 카피레프트 조건의 GNU Affero GPL v3입니다 — 누구나 클라이언트 코드 위에 상업용 앱을 만들 수 있게 하면서도, 공유 데이터 엔진 자체는 폐쇄형 유료 클론으로 포크되지 않도록 보호하려는 의도적인 분리입니다.

등급은 블랙박스가 아니라 코드입니다

바로 이 지점이 Open Food Facts를 대부분의 "건강한 식습관" 앱과 구분 짓습니다. 등급을 매기는 공식이 독점 로직이 아니라 읽을 수 있는 소스 파일이라는 것입니다. Nutriscore.pm 모듈은 스스로의 목적을 "식품의 뉴트리스코어 점수와 등급을 계산하는 데 사용됨"(used to compute the Nutriscore score and grade of a food product)이라고 밝히면서, "이 모듈은 프랑스 보건당국(Santé publique France)이 정의한 뉴트리스코어 계산 방식을 구현한다"(the modules implements the Nutri-Score computation as defined by Santé publique France)고 덧붙입니다 — Open Food Facts 자체가 아니라 프랑스의 공공 보건 기관이 정의한 방식입니다. 이 코드는 두 가지 버전의 공식을 지원합니다. 2021년 알고리즘과 "상당히 다른"("significantly different") 2023년 개정판인데, 소비자로서는 달리 알 방법이 없는 바로 그 규제 업데이트를 그대로 추적하고 있는 셈입니다.

환경 버전에 해당하는 EnvironmentalScore.pm2026년 9월 릴리스에서 "에코스코어"("Eco-Score")에서 "그린스코어"("Green-Score")로 이름이 바뀐 지표를 계산합니다. 모듈 헤더 주석 자체는 "Open Food Facts가 속한 협의체가 정의한 환경 점수(Environmental-Score) 계산 방식을 구현한다"(implements the Environmental-Score computation as defined by a collective that Open Food Facts is part of)고 밝히고, "2,500개 식품 카테고리에 대한 환경 영향 값을 담고 있는 프랑스의 AgriBalyse V3 데이터베이스를 기반으로 한다"(based on the French AgriBalyse V3 database that contains environmental impact values for 2500 food product categories)고 설명하며, 여기에 특정 제품의 라벨, 원재료 원산지, 포장재에 따른 조정을 더합니다. 다시 말해 두 점수 모두 아무도 들여다볼 수 없는 사내 알고리즘이 아니라, 외부의 공공 이익 표준 기구로부터 나온 방식으로 거슬러 올라갑니다.

폐쇄된 팀이 아니라 자원봉사자와 AI

이 정도 규모의 데이터베이스는 직원만으로 채울 수 없습니다. README는 데이터의 공로를 "기여자 25,000명 이상"("25,000+ contributors")에게 돌리고 있고, 별도의 AI 레이어가 이를 분류하는 걸 돕습니다. robotoff는 저장소 자체 설명에 따르면 "Open Food Facts를 위한 실시간 및 배치 예측 서비스"(real-time and batch prediction service for Open Food Facts)로, 사진과 텍스트로부터 카테고리, 브랜드, 포장, 유통기한에 대한 예측을 생성한 뒤 신뢰도가 높은 업데이트는 자동으로 반영하고 그렇지 않은 것은 사람의 확인을 기다리는 대기열에 넣습니다. 대표 앱보다 훨씬 작은 프로젝트입니다 — 스타 수가 114개로, 서버 저장소의 1,200개에 비하면 적습니다 — 여기서 머신러닝 레이어는 자원봉사 노동을 대체하는 게 아니라 보조하는 역할이라는 걸 보여주는 대목입니다.

저장소가 보여주는 한, 자금은 기부로 조달됩니다

프로젝트의 FUNDING.yml은 주요 자금 조달 채널로 Open Collective를 명시하고 있고, 여기에 GitHub Sponsors 항목도 함께 올라 있습니다 — 숨겨진 매출 항목이 아니라 공개된 장부 모델입니다. 이는 README가 설명하는 비영리 구조와 맞아떨어지지만, 여기서 무엇이 검증됐고 무엇이 검증되지 않았는지는 정확히 짚어둘 필요가 있습니다. 이 글이 확인한 것은 저장소 자체가 밝히는 자금 조달 채널이 무엇인지이지, 그 채널을 통해 실제로 모금된 금액이나 여기 명시되지 않은 다른 매출원이 존재하는지는 아닙니다. 이번 확인 과정에서 Open Collective 자체 대시보드에는 접속할 수 없었습니다.

여전히 출시 중입니다 — 다만 솔직한 단서가 붙습니다

서버의 커밋 히스토리를 보면 이 글을 확인하기 하루 전인 2026년 9월 17일에도 커밋이 있었고, 그 직전 3일 동안만 약 30개의 커밋이 있었습니다 — 분류체계(taxonomy) 수정, 이미지 처리, "Forest Footprint 2026" 기능 확장까지 아우릅니다. 가장 최근 태그된 릴리스인 v2.105.0도 같은 주에 나왔습니다. 오래된 헤드라인에 기대어 안주하는 프로젝트가 아니라 실제로 활발하게 작업되고 있는 프로젝트입니다.

솔직한 단서 하나. 서버 저장소에는 열린 풀 리퀘스트 212개에 비해 열린 이슈가 약 1,600개나 쌓여 있습니다 — 병합 속도에 비하면 상당히 큰 적체량인데, 이 정도 규모의 프로젝트에서는 흔한 일이지만 얼버무리지 않고 짚어둘 만합니다. 그리고 프로젝트 스스로 내놓은 수치들도 서로 완전히 맞아떨어지지는 않습니다. 서버 저장소의 README는 "제품 170만 개 이상"("1.7 million+ products")이라고 밝히는 반면, 조직의 별도 프로필 README는 같은 "기여자 25,000명 이상"("25,000+ contributors")과 "150개국"("150 countries")을 근거로 "제품 400만 개"("4 million products")라고 밝힙니다. 둘 다 본인 발표 기준이며, 이 글을 쓰면서 어느 쪽도 독립적으로 검증하지는 못했습니다 — 오픈 데이터를 전제로 세워진 조직조차 저장소마다 자기 대표 수치를 항상 일치시켜두지는 않는다는, 작지만 실질적인 단서입니다.

공개된 공식이 해결해주지 못하는 한계도 있습니다. 공개된 뉴트리스코어 모듈이라도 올바른 등급을 내려면 정확하고 완전한 입력값이 필요한데, 그 입력값은 실험실이 아니라 25,000명 이상의 자원봉사 기여자들로부터 나옵니다. 코드가 공개되어 있다는 건 계산 과정을 감사할 수 있다는 뜻이지, 데이터베이스 안의 모든 제품 정보가 정확성 검증을 거쳤다는 뜻은 아닙니다.

이 오픈소스 영양 데이터베이스 앱이 일반화되는 지점

Open Food Facts는 건강이나 환경 등급을 매겨주는 어떤 앱에도 적용해볼 만한 유용한 테스트 케이스입니다. 그 공식이 어딘가에서 읽을 수 있게 공개되어 있는지, 아니면 그냥 색깔과 등급을 곧이곧대로 믿고 있는 건 아닌지 물어보세요. 스크린 리더가 실제로 아직 유지보수되고 있는지 확인할 때, 또는 기후 데이터 지도의 엔진이 정말로 오픈소스인지 확인할 때와 똑같은 원칙이 여기에도 적용됩니다 — 라이선스를 읽고, 모듈 주석을 읽고, 커밋 그래프를 읽으세요. 간격 반복 알고리즘을 공개하는 것의 배경에 있는 논리도 똑같습니다. 읽을 수 없는 공식은 사실이 아니라 그냥 주장일 뿐입니다.

점수를 보여주는 식품, 건강, ESG 앱을 평가하고 있다면 실질적인 다음 단계는 이렇습니다. 그 숫자를 만들어내는 코드를 당신이 — 혹은 누구든 — 실제로 열어서 읽어볼 수 있는지 확인하세요, Open Food Facts가 그런 것처럼요.

출처

아래 링크는 발행 전 직접 확인했습니다.

  1. 1.GitHub — openfoodfacts 조직(organization) 프로필 · 확인일
  2. 2.GitHub raw — openfoodfacts-server README · 확인일
  3. 3.GitHub raw — 조직 프로필 README (.github) · 확인일
  4. 4.GitHub — openfoodfacts-server 저장소 · 확인일
  5. 5.GitHub — openfoodfacts 조직 전체 저장소 목록 · 확인일
  6. 6.GitHub — smooth-app 저장소 (모바일 클라이언트) · 확인일
  7. 7.GitHub — smooth-app 릴리스 · 확인일
  8. 8.GitHub raw — smooth-app LICENSE (Apache-2.0) · 확인일
  9. 9.GitHub — openfoodfacts-server 최신 릴리스 (v2.105.0) · 확인일
  10. 10.GitHub — openfoodfacts-server 커밋 히스토리 (main) · 확인일
  11. 11.GitHub raw — openfoodfacts-server LICENSE (AGPL-3.0) · 확인일
  12. 12.GitHub raw — FUNDING.yml · 확인일
  13. 13.GitHub — robotoff 저장소 (AI 예측 서비스) · 확인일
  14. 14.GitHub — lib/ProductOpener 디렉터리 목록 · 확인일
  15. 15.GitHub raw — EnvironmentalScore.pm (그린스코어 모듈) · 확인일
  16. 16.GitHub raw — Nutriscore.pm (뉴트리스코어 모듈) · 확인일

Read in English →