Reddit

We still maintain a development tool first released in 1993. Here’s what 30+ years of backwards compatibility looks like

1993년에 처음 나온 개발 도구를 아직 유지하고 있습니다 — 30년 넘게 하위 호환성을 지킨 방식

1993년 DOS용 전자책 제작 도구로 출발한 NeoBook은 사용자 요구에 따라 범용 개발 환경으로 확장됐고, 2018년 VisualNEO Win으로 이어졌습니다. 개발팀은 Delphi 7에서 Delphi 11로 환경을 옮기면서도 기존 프로젝트와 플러그인을 보존하기 위해 Win32와 구형 플러그인 체계를 유지했습니다.

에디터 노트

30년 된 플러그인 생태계를 깨지 않기 위해 64비트 전환을 포기한 결정이 인상적입니다. 기술적 부채를 안고 가는 대신 사용자의 기존 작업물을 지키는 선택인데, 로우코드 도구의 수명은 기능보다 이런 신뢰에 달려 있다는 점을 보여줍니다. 다만 AI 개발 키트 도입 이후 이 도구가 '옛날 물건'이 아닌 현역으로 남을 수 있을지가 다음 관전 포인트입니다.

AI 요약

VisualNEO Win은 1993년 DOS용으로 나온 NeoBook에서 시작한 개발 도구입니다. 개발자이자 소유자인 글쓴이는 NeoBook의 창시자는 아니며, 2018년 개발권을 넘겨받은 뒤 제품 이름을 VisualNEO Win으로 바꿨다고 설명합니다. 처음에는 텍스트와 이미지, 버튼을 배치해 전자책과 인터랙티브 출판물을 만드는 도구였지만, 사용자가 유틸리티와 데이터베이스, 교육용·업무용 프로그램까지 만들면서 범용 개발 환경으로 발전했습니다.

시각적 제작과 확장 기능

VisualNEO Win에서는 인터페이스를 화면에서 구성하고, 객체에 동작과 스크립트를 연결합니다. 변수와 함수를 활용해 로직을 작성한 뒤 Windows 실행 파일로 빌드합니다. 데이터베이스, 통신, 멀티미디어, 하드웨어 제어, 리포트, 이미지 처리 기능은 플러그인으로 확장해 왔으며, 이를 바탕으로 상용 프로그램을 만든 개발자도 있습니다.

제품의 장수는 단순히 오래된 프로그램을 최신 Windows에서 실행하는 문제와 다릅니다. 사용자가 오래 유지해 온 프로젝트와 스크립트, 사라진 제작자가 만든 플러그인이 남아 있기 때문입니다. 개발팀은 새 아키텍처로 다시 시작하면 기존 작업물이 깨질 수 있다고 판단했습니다. 그래서 2021년부터 NeoBook에 없던 명령과 기능을 추가하면서도 구형 프로젝트를 열고 빌드하는 기능을 유지했습니다.

Delphi 7에서 Delphi 11로

2026년에는 개발 환경의 코드베이스를 Delphi 7에서 Delphi 11로 옮겼습니다. 이 과정에서 Unicode 지원을 넓히고 WebView2, HTTP, JSON, WebP 기능과 편집기 개선, Windows 통합 기능을 추가했습니다. AI 개발 키트와 새 플러그인 아키텍처도 도입했습니다.

새 플러그인 시스템은 시각적 컨트롤, 동작, 속성, 이벤트를 개발 환경에 직접 추가합니다. 동시에 수십 년간 만들어진 기존 .nbp 플러그인을 위해 옛 체계도 남겼습니다. VisualNEO Win 자체도 Win32 애플리케이션으로 유지합니다. 오래된 플러그인 생태계가 Win32에 기대고 있어, 64비트로 전환하면 기존 개발자에게 실질적인 손실을 줄 수 있다는 설명입니다.

글쓴이는 호환성을 어디까지 보존할지, 언제 기존 기술을 교체할지에 늘 정답이 있는 것은 아니라고 말합니다. NeoBook은 오늘날의 용어로는 로우코드(low-code) 도구에 가깝습니다. 1993년 당시에는 로우코드라는 이름이 없었지만, 전문 프로그래밍 스택을 익히지 않고도 필요한 소프트웨어를 만들게 하려는 목적은 지금도 유효하다고 설명합니다. 글쓴이는 Delphi 이전 작업의 구체적인 과정도 별도 글로 다룰 수 있다고 덧붙입니다.

Reddit 반응

  • @u/alex_xxv — 제 앱도 당신의 앱만큼 오래 살아남았으면 좋겠습니다. 저도 Delphi 프로그래머입니다. 이런 이야기를 보니 좋습니다.
    • @u/tooclosetocall82 — 20년 동안 일하면서 지금 다니는 회사의 제품을 빼면 아직 운영 중이라고 확신할 수 있는 애플리케이션은 하나뿐입니다. 이 업계에서는 자신이 만든 작업물이 얼마나 빨리 사라지는지 생각하면 정말 대단합니다.
    • @u/turniphat — 저는 경력 25년인데, 제가 만든 것 대부분은 아직 운영 중인 것 같습니다. 2000년에 시작한 오픈소스 프로젝트도 계속 커밋이 올라옵니다. 15년 넘게 쓰지 않았고 아직도 쓸모가 있는지 모르겠는데도요.
    • @u/tooclosetocall82 — 운이 따르는 문제인가 봅니다. 저는 정부 계약 사업에서 맞춤형 소프트웨어를 만들며 경력을 시작했습니다. 대부분 대형 SaaS 제품으로 대체됐습니다. 그다음에는 에듀테크 업계에 갔는데, 대기업이 경쟁사를 인수한 뒤 제품을 종료하면서 업계가 크게 통합됐습니다.
    • @u/TheThiefMaster — 개인 프로젝트로 Delphi 4 실행 파일을 리버스 엔지니어링하고 있습니다. 기능은 놀랍지만 코드 생성은 형편없습니다.
  • @u/Skaarj — Delphi 7에는 제네릭이 없었던 걸로 기억합니다. 포인터를 담는 일반 목록은 있었지만 TList<TMyClass> 같은 형태는 아니었습니다. 아프셨겠네요.
  • @u/Ythio — 1998년부터 운영 중인 기업용 애플리케이션을 다루고 있습니다. 코드가 약 천만 줄인데, 10~12년보다 오래된 줄은 하나도 없다고 봅니다. 이런 하위 호환성의 악몽은 코드 나이보다 회사의 사업 결정이나 재배포·업그레이드 제약에 더 좌우됩니다.
  • @u/bigmell — 30년 넘었다니 대단하네요. Unix는 들어보셨나요? 코드가 엉망이 아니라면 유지할 앱을 고르는 기준은 그만큼 쓸모가 있느냐입니다. 새 도구를 반복해서 배우기 어려운 비전문가도 많으니 오래된 도구를 계속 쓰는 편이 비용이 적게 들 때가 많습니다. 예전 메인프레임 프로그램을 Ruby로 바꾸려던 직장에서는 문제가 계속 생겼고, 메인프레임과 기존 프로그램을 유지하는 편이 더 싸고 쉬웠습니다.

원문: VisualNEO Win / 번역·요약: Trawling