파워쉘7 연동 테스트 추가 by naratteu · Pull Request #1 · lukewire129/Delta
애플리케이션, 솔루션의 역사는 사실상 GUI의 역사라고 볼수있다.
사용자들은 언제나 자기가 잘 못하고 모르는것을 마치 잘하고 아는것마냥 다룰수 있게 받들어주는 소소한 딸깍변환시스템을 필요로 한다. 뭐 누구나 그렇다.
문제는 그깟 변환작업 하나때문에 전세계의 개발자들이 오랜세월동안 부조리한 희생을 치뤄오고있다는점이다.
GUI는 인간이 가진 어떤 문제를 해결해주지 못한다. 닫힌계에서의 총량을 산출해본다면 실제 해결하는 비중보단 간사한 인간의 욕구를 증폭시키고 없던 문제도 생산해내는데 가희 최적화된 영역이라 볼수있다.
그냥 언어가 달라서, 혹은 체제가 달라서, 플랫폼이달라서, 생태계가 달라서, 접근법이 달라서, 혁신적인UX를 제공하고자, 트렌드가 바껴서, 좀더예쁘게하려고, 좀더 효율적으로 하려고, 쪼개진걸 통합하기위해서, 재사용하고자, 또는 다갖다버리고 새로시작하고자, 꼴랑 GUI라는 하나의 목적을 위해 헤아릴수없는 온갖 프레임웍이 난립하고 통합되고 한계에 봉착하고 갈아엎고 바닥부터 다시공부하고 오늘만 사는 복붙코드들이 끝없이 나스에 쳐박히고 누군가는 대책없이 누적되는 복잡성에 휘말려 파묻힌다. 인류 스스로가 빚어낸 벗어날수없는 연옥이다.
이를 직시하여 탈피하고자 하여도, 안타깝게도 70억인구의 소비자 절대다수가 눈깔 두쪽이 멀쩡히 달려있기에, 언제나 자신들의 초고해상도 바이오 광센서를 활용해 두뇌와 육체의 적은 수고만으로도 보다 많은 인지와 해소가 가능하길 원한다. 개발자들이 괜한 엄살떨지않고 알잘딱깔센하게 데이터를 취합해 시각적 피드백을 성실히 아름답게 제공해주길 원한다.
처음엔 같은 비개발자의 시선으로 당장눈에보이고 익숙하여 GUI개발에 입문하겠지만, 본질적으로 해소할수없는 모순과 더러움에 필연적으로 마주하고만다. 제정신이면 그 답없는 더러운 꼴에 질려 도망치고 아무것도 모르는 신입이나 꼬득여 짬때리는게 정상일것이다.
모든걸 겪은 이후에도 여전히 GUI에 뜻을 둔다면, 일종의 가스라이팅에 절여져 아예 노예가 된 상태이거나 어떤 받아들이기 힘든 경지에 이른 인간이라 볼수있다.
왜 이런 현상이 관찰되는걸까? 우리는 GUI애플리케이션들이 가지는 소소하고 별것아닌 목적들을 너무 당연하고 만만하게만 바라본다. 문제를 체계적으로 정복해낼 일관적인 기준과 방법없이 그저 모순적인 인간의 근시안적인 목적에 휘둘려 매순간 이를 효율적으로 재빠르게 사정시키는데에만 관심을 가지고 평가한다. 이렇게 후딱 성취한 해결이 자신을 유능한 상품으로 치장하거나 어떤 가능성을 빠르게 증명할수있을지는 모르나, 그리 이룩한 성취는 언제든 거짓말처럼 상실되거나, 아예 없느니만 못했을 거대한 업보로 돌아올 위험이 있는, 본질적으로 위태로운 산출물들이며, 이런 오염된 산출물에 거리낌이 없이 의존하게만드는 자본주의 목적주의자들이 전파시킨 폐혜 그자체이다. 완벽한 최선의 방법을 찾는데 매몰되어 의미없이 길을 잃기도 하지만, 철두철미한 목적에 매료되어 눈이먼다면, 자신의 헌신이 정작 구원받아야 할 자신과 주변부터 황폐화시키고 말것이다.
예를들어, 대부분의 동영상인코더 프로그램들은 그저 ffmpeg라이브러리를 GUI에서 쓸수있도록 래핑한것에 불과하다.
비개발자들은 명령줄같이 코딩?같은걸 작성하는것에 경기를 일으키며 두려워하지만 어쨋든 동영상편집은 하고싶기에 수요가 많은것일터이다.
헌데 단순한 래핑임에도 불구하고 아름답게 치장하고, 브랜딩하고, 자체적인 특수기능을 탑재하고 과도한 개발비용을 지불하여 생산하고있다.
고객이 래핑의 본질을 파헤칠수 없도록 은닉시켜 제공된 상품에서 벗어난 자유로운 사고를 차단하고 이미 만들어진 솔루션위에 덧붙이는 부적절한 요구를 하도록 만든다.
무지하거나 무신경한 고객과, 그런 고객들의 모든 니즈를 자신들에 경유시켜 비용을 빨아먹고싶어하는 기업이 일궈낸 기형적인 산업생태계이고
그러길 원하지 않는 자유로운 유저와 개발자 조차 이런 만연한 문화속에서 성장해버려 자신들의 일상적인 괴로움을 뚜렷이 인지하지 못하고 거부감없이 제스스로 기형적 부정을 저지르는데 무감각히 일조하곤 한다.
소소한 모든 요구사항이 실제 소소한것이라면, 소소한 공부를 통해 모든환경에서 소소하게 개발하고 소소하게 유용할수 있어야 한다. 어거지로 복잡하고 어거지로 어려운 모든문제를 해결할수있다 주장하는 만능통합솔루션을 팔아먹으려 거대자본이 투입될 필요도, 이를 능숙히 다루고 인정받기위해 인생을 바쳐 공부하고 그것의 전문가로 거듭나야할 필요도 없어야 하는것이다.
답없는 GUI와는 다르게, CLI는 개발자 커뮤니티의 노력으로 최대한 많은환경에서 일관성있고 확장성이 보장된 인터페이스로 수렴시키는데 어느정도 성공하였다. 물론 CLI고 GUI고 시스템에서 사람이 닿는곳은 좋은꼴을 보기 힘들지만 적어도 가망이라도 있는것이다.
그래서 나는 모든 GUI를 개발하기에 앞서 CLI에 뿌리를 두게함으로써 GUI프로젝트의 비대한 규모를 분산시키고 비일관성을 CLI를 기준으로 가시적으로 통제하고 해소하며, 끝내 최종사용자가 스스로 GUI를 졸업하도록 돕는, 모든문제를 짊어지고 사라지는게 가능한 프레임웍을 구상코자 한다.
GUI를 위한 자잘한 스크립트와 실질적인 처리를 위한 명령줄이 통합된 형태의 사람이 읽을수 있는 텍스트파일 몇줄로 GUI응용프로그램을 간소화 하는것이 가능할것이며,
이를통해 GUI프로그램의 코드가 스스로가 참조한 CLI사용법을 사용자에게 설명하는 형태의 실행가능한 문서로써 기능하게 만들 수 있을것이다.
응용프로그램의 소스코드를 적게작성한다는것은 프로젝트를 통째로 폐기하는것을 포함해 미래에 발생할 모든 요구사항을 적은비용으로 유연하게 대응할 확률을 높여주는것이다.
"스크립트와 명령줄의 통합"이 이미 구현된게 파워쉘인지라, 위 동영상과 코드는 앞서제시한 모든문제의 해법인 CLI중심의GUI개발의 유효성을 증명하기위해 인터넷이 되는 윈도우 파워쉘7 이라는 최소 실행 요구사항만을 가지고 선언형 GUI라이브러리를 활용해 최소한의 복잡성만을 감당하여 CLI도구를 래핑하려는 시도의 시발점으로 보면 되겠다.
나와같은 의도였는지는 모르겠지만, 기존에도 많은개발자들이 이미 비슷한 시도를 한 흔적이 있다. 예를들어 파워쉘에서 윈폼라이브러리를 불러와 스크립트상에서 GUI폼을 생성해 실행시키는유형이 대부분이다. 헌데 그런거 다 봐놓고 Naratteu가 왜 또 뒷북을 치고 자빠졌는가 묻는다면, 파워쉘을 뒤늦게 학습해보니 세상에 어떻게 이렇게 장황한동시에 은닉되있으며 그저 구사하기위해 방대한 정보를 섭렵하여 치밀하게 직조해야만하는 스크립트 언어가 존재하는것인지, 당하고나서도 받아들이기 어려운 물건이었다는 문제가 있었다. 실시간으로 숨쉬듯 간단하고 유연하게 사용할수 있어야하는게 명령줄과 스크립트의 존재의의일터인데, 아무래도 그 두개를 온전히 뒤섞기위해서는 내 환상보다는 훨씬 더 많은 논리적 비용을 지불해야하는듯 하다. 게다가 정작 바로 쓸수있는 기본 GUI프레임워크가 네이티브로 개발해도 유지보수가 답이없도록 디자인된 윈폼이라는 치명적인 문제가있었다. 쉽게 찾아볼수 있는 파워쉘 GUI 라이브러리나 결과물들을 조사해보면, 본인 스스로의 복잡성을 감당하지 못한채 주화입마되어있는 그 참혹함을 이루말할수가 없는것들이 대부분이다. 그때그때 읽고 편의에 따라 수정하여 실행할 수 있는게 장점일 스크립트를, 사람이 쉬이 읽지도 못할 형태와 분량으로 제너레이션 해주는 GUI디자이너 유틸리티에 의존해서까지 만들어서 쓰는게 무슨소용이겠는가??
다행히도 그런것과 여러 단점들덕인지 파워쉘 자체부터 모던 개발생태계에서 철저히 외면받고있다. 다만 인기있는 자스나 파이썬이라고한들 방금 성토한 스크립트의 가치를 제대로 지킨적이 있나 싶은 의문이 들기는 한다. 그냥 데스크톱 앱이 웹보다 돈이 된적이 없어서이기 때문일지도 모른다. 웹은 구글을만났는데 데스크톱 앱은 망나니시절 MS를 만난덕에 여전히 이모양 이꼴인걸수도있다. 가만 생각해보면 지금 구상이 모던 웹개발에서는 진작에 표준화된 방식이다. api백엔드와 웹앱프론트를 cli유틸과 gui툴로 대응시킬수 있는것이다. 만일 웹에서 이미 정립된 형태를 데스크톱에 가져와 재정립하려는것이라면? 아무래도 비슷한 형태를 적용하는데의 합리성을 뒷받침 할수는 있겠다만 적용한다 한들 GUI의 구원에 전혀 가까워지지 못할수도 있겠다. 모던 프론트업계가 지금껏 어떠한 통찰력을 발휘하여도 자유로운 영혼들의 탐욕적 증식을 적절히 통제하는데 실패하고 보수화되고있다는 결과를 상기해본다면 말이다.
도보시오
https://ugui.io/ - 분명 동일한 비전을 가지고 설계되었으나, 시대적 한계인지 실질적으로 아무것도 해결하지 못한걸로 보이는 프레임워크
이 댓글은 게시물 작성자가 삭제하였습니다.
https://clig.kr/#foreword
https://www.joelonsoftware.com/2002/11/11/the-law-of-leaky-abstractions/
GUI개발 전체가 누수추상화 그자체같음