상상해보기
"오픈소스 프로젝트의 운영이나 주도적 참여 경험이 없는 것는 것 같다"라는 상상을 해보았습니다.
이 상상의 바탕은 몇 가지가 있습니다.
첫째로, 커밋 로그가 없는 것은 베타 버전이라서, 정식버전 개발에 바빠서 지저분한 커밋로그를 정리하며 푸시할 수 없어서라고 이해할 수도 있습니다만, 수 많은 변경사항을 담은 단일 커밋보다는 지저분한게 차라리 낫죠.
정식 버전에서는 변경사항의 추적이 가능한 상태가 되면 좋을 것 같네요. 버전관리 시스템에 잘 적응한 팀이라면 이렇게 코드의 변경이력을 감추는 개발자가 팀에 있으면 싫어하겠죠.
둘째로, 빌드 과정이 필요없는 JSON 레이아웃 엔진을 내세웠지만, 결코 쉽지는 않습니다.
React 기반 개발자들도 직접 쓸일이 없는 CreateElement를 이해해야하고, 기존처럼 HTML 코드를 만드는 것처럼 생산성을 높이려면 AI를 필수로 사용하여 의존해야합니다.
메인 컨셉의 하나로 SPA를 두고 React를 채택했으나 빌드 과정이 없어야한다는 조건하에 JSON 레이아웃 엔진이 만들어진 것으로 보입니다. 물론 React 컴포넌트를 만들어 활용할 수 있다지만, 배포나 판매형 제품들도 이 빌드 과정을 거치지 않으려면 JSON 엔진의 스펙을 따르는게 거의 강제되겠죠.
이런 문제를 만드는 것은 React 사용이 강제되어 발생하는 문제인데, G7에 구현된 방식은 상당히 폭력적이고 Blade 템플릿이나 다른 프론트엔드 프레임워크나 라이브러리를 사용하기 어렵게 되어있죠. 라라벨의 개방성을 G7이 방해하고 있는 셈이죠. 배포형 솔루션에서 이러한 강제성이나 기술 선택이 적절했는지 의문이 듭니다.
셋째로, 컴포저, NPM, vite 등을 사용하려는 사용자에 대한 고심이 부족해 보입니다.
G7에 포함된 composer.json 등의 파일들은 이를 활용하려는 사용자에게는 코어 업데이트 시 충돌이 발생할 소지가 크죠. 하지만 이에 대한 고민이 전혀 없었던 것으로 보입니다.
넷째로, 보안취약점을 공개적으로 게시하라고 합니다.

몇가지 더 있는데, 당장 떠오르지 않아서 상상했던 내용이 떠오르면 더 적어보겠습니다.
이 상상의 바탕은 몇 가지가 있습니다.
첫째로, 커밋 로그가 없는 것은 베타 버전이라서, 정식버전 개발에 바빠서 지저분한 커밋로그를 정리하며 푸시할 수 없어서라고 이해할 수도 있습니다만, 수 많은 변경사항을 담은 단일 커밋보다는 지저분한게 차라리 낫죠.
정식 버전에서는 변경사항의 추적이 가능한 상태가 되면 좋을 것 같네요. 버전관리 시스템에 잘 적응한 팀이라면 이렇게 코드의 변경이력을 감추는 개발자가 팀에 있으면 싫어하겠죠.
둘째로, 빌드 과정이 필요없는 JSON 레이아웃 엔진을 내세웠지만, 결코 쉽지는 않습니다.
React 기반 개발자들도 직접 쓸일이 없는 CreateElement를 이해해야하고, 기존처럼 HTML 코드를 만드는 것처럼 생산성을 높이려면 AI를 필수로 사용하여 의존해야합니다.
메인 컨셉의 하나로 SPA를 두고 React를 채택했으나 빌드 과정이 없어야한다는 조건하에 JSON 레이아웃 엔진이 만들어진 것으로 보입니다. 물론 React 컴포넌트를 만들어 활용할 수 있다지만, 배포나 판매형 제품들도 이 빌드 과정을 거치지 않으려면 JSON 엔진의 스펙을 따르는게 거의 강제되겠죠.
이런 문제를 만드는 것은 React 사용이 강제되어 발생하는 문제인데, G7에 구현된 방식은 상당히 폭력적이고 Blade 템플릿이나 다른 프론트엔드 프레임워크나 라이브러리를 사용하기 어렵게 되어있죠. 라라벨의 개방성을 G7이 방해하고 있는 셈이죠. 배포형 솔루션에서 이러한 강제성이나 기술 선택이 적절했는지 의문이 듭니다.
셋째로, 컴포저, NPM, vite 등을 사용하려는 사용자에 대한 고심이 부족해 보입니다.
G7에 포함된 composer.json 등의 파일들은 이를 활용하려는 사용자에게는 코어 업데이트 시 충돌이 발생할 소지가 크죠. 하지만 이에 대한 고민이 전혀 없었던 것으로 보입니다.
넷째로, 보안취약점을 공개적으로 게시하라고 합니다.

몇가지 더 있는데, 당장 떠오르지 않아서 상상했던 내용이 떠오르면 더 적어보겠습니다.
|
댓글을 작성하시려면 로그인이 필요합니다.
댓글 5개
오픈 베타 자나요
❌ 보안취약점을 제보해달라고 공개적으로 말했다는 의미가 아니라
✅ 누구나 열람 가능한 깃허브 이슈에 보안취약점 내용을 제보하라는 것에 대한 지적입니다.
보통 이메일이나 비공개 게시판 또는 깃허브 시큐리티탭에 보안취약점 제보 기능을 이용하게하죠.
1. 커밋 로그가 없었던 점
내부 사정상 그누보드7 저장소를 내부용/공개용으로 따로 운영하고 있습니다.
오픈 베타 당시 내부 저장소에서 개발 완료된 버전을 단일 커밋으로 병합하여 출시하다 보니 벌어졌던 일인데, 정식 출시 이후에는 커밋 이력을 모두 남기도록 개선하였습니다.
2. JSON 레이아웃 엔진 관련
- 7.1.0 부터 JSON 레이아웃 엔진은 그대로 두고 HTML 문법을 도입 예정입니다. 개발은 거의 완료되었고 출시만 남은 상황인데 이번달(8월 중)이나 늦어도 9월 초순경 출시 예정입니다.
- 개발자가 HTML로 템플릿을 작성하면, 그누보드7에 템플릿 설치/업데이트 시 이를 JSON으로 변환하여 적용하는 형태가 될 예정입니다. (기존 JSON 엔진까지 HTML로 변환하는 것은 리스크가 커서 부득이하게 이러한 방식을 취했습니다)
- 블레이드나 다른 템플릿을 그누보드7에서 공식적으로 제공하는 문제는 10월 전후로 대응 예정입니다.
로드맵 참고: https://sir.kr/boards/free/1738398
3. 컴포저, npm, vite 대응 관련
다른 선순위 작업들이 많다 보니, 이 부분에 대한 고려는 미처 못했습니다. 라라벨 기반이므로 그누보드7 기반으로 다양한 기능을 직접 개발하여 붙이는 경우 다양한 컴포저 패키지를 설치하게 되는데, 이 상태에서 코어 업데이트시 기존 composer.json을 덮어쓰게 되므로 말씀하신 충돌 문제가 발생하게 됩니다.
이 부분은 내부적으로 대응책을 논의해서 개선하겠습니다. 당장 떠오르는 생각으로는, composer.json 등이 업데이트 당시 기준 버전과 다른 경우 이를 자동 감지해서 신 버전 composer.json 에 병합하는 형태가 좋을것 같습니다.
4. 보안 취약점 제보 관련
sir 버그 제보 게시판이나 담당자 이메일로 제보하도록 안내를 변경했습니다.
올려주신 시점이 3개월여 전인데, 당시에는 정식 출시 준비로 정신없다보니 답변을 누락하게 되었습니다.
이 점 양해 말씀드립니다.
감사합니다.
지난 내용까지 확인해 이해를 도와주시니 좋습니다. 👍
G7 담당 쪽의 커뮤니티 피드백을 대하는 방식, 긍정적으로 느끼고 있습니다.
항상 응원합니다.