10년 전, 대한민국 어딘가의 어느 회사 사무실에선 기술자들의 고심이 깊어졌다. 200대 가량의 산업용 장비를 대상으로 신규 개발이 들어가야하는데, 프로그램을 업데이트할 수 있는 시기가 매우 한정되어있었기에 변경된 프로그램을 배포할 수 있는 기회 역시 극히 적었다.
하지만 개발해야 할 내용은 매우 잦은 업데이트가 요구될 수 밖에 없는 것들로 가득했다.
회사에서는 이 문제를 해결해주기를 원했고 나름 자체 기준으로 내노라하는 경력을 가진 개발자들을 섭외해 대책을 마련해줄 것을 요구했으나... 견디지 못하고 나가기 일쑤였고 팀은 하루를 멀다하고 갈등이 빚어졌다.
고심 끝에, 내린 결정.
산업용 스크립팅을 적용해보자는 것이었다!
이런 환경에서는 프로그램(바이너리) 업데이트는 기회가 많지 않으나, 프로그램이 처리할 수 있는 스크립트에 대한 제한은 일반적으로 없기 때문이다.
자바스크립트(및 타입스크립트)가 주로 웹에서 프론트 개발이 차지하는 비중이 매우 높다고 하지만, 자바스크립트 생태계 일부에는 산업용 스크립팅(Industrial Scripting)이라는 분야가 존재한다.
산업용 스크립팅 개념은 굳이 자바스크립트에만 한정되는 것은 아니지만 (Lua나 Perl도 있긴하다), 나는 힙스터답게 자바스크립트를 선택하기로 했다.
자바스크립트가 산업용 스크립팅으로 활용될 수 있다는 것을 증명한 잘 알려진 사례로는 미국 NASA의 제임스 웹 망원경이다.
제임스 웹 망원경은 2021년에 발사되었는데, 유연한 제어를 위해 2002년에 발표된 자바스크립트 엔진(Nombas ScriptEase 5.00e)를 사용하여 제어를 수행한다. (현재 이 스크립팅 엔진을 만든 회사의 대표는 개발자를 은퇴하고 간호사로 일하고 있다고 한다.)
제어하고자 하는 장비의 제어 시스템들이 대부분 Windows를 사용하고 있었다. Windows는 운영체제에 기본 내장된 스크립팅 엔진이 존재하며 운영체제 기능과도 매우 잘 통합되어 있다.
이 점에 착안하여 프로젝트를 시작했고, 드디어 결과물이 나오기에 이른다.
내부적으로는 "코드네임 마카다미아"로 명명하고 시작한 이 프로젝트는, 이후 WelsonJS 라는 이름을 달고 오픈소스로 공개되었다.
오픈소스 프로젝트이니 관심있는 분들은 참여해도 좋다.