[릴리스] Experimental.System.Messaging v1.2.0 - 6년 만의 대규모 업데이트와 회고

2018년에 .NET Core용 MSMQ 라이브러리를 포팅해서 NuGet에 배포했었는데, 그 후로 거의 6년간 방치하고 있었습니다. 최근 커뮤니티에서 PR과 버그 리포트를 보내주셔서 다시 들여다보게 되었고, 이번에 v1.2.0을 릴리스하게 되었습니다.

주요 변경 사항

라이선스 수정 (MIT → Ms-RL)

가장 큰 변경 사항입니다. 원본 소스가 Microsoft Reference Source의 Ms-RL 라이선스였는데, 당시 라이선스에 대한 이해 부족으로 MIT로 잘못 배포했었습니다. 이번 버전에서 올바르게 수정했습니다. 사용하시는 분들께 혼란을 드리게 되어 죄송합니다.

Target Framework 변경 (netstandard2.0 → net8.0)

MSMQ는 Windows 전용 기술이라 크로스플랫폼 타겟팅이 불필요했습니다. .NET 8.0으로 전환하면서 최신 기능과 성능 개선의 혜택을 받을 수 있게 되었습니다.

새로운 기능: 큐 접근 제어(ACL) 지원

GitHub 사용자 @j0hnth0m 님의 기여로 AccessControlEntry, MessageQueueAccessControlEntry, MessageQueuePermission 등 ACL 관련 클래스들이 추가되었습니다.

버그 수정

StringToBytes 메서드의 Unicode 문자열 null 종료 처리 버그를 수정했습니다. MessageQueue.Label, Message.Label 등 여러 속성에 영향을 주던 문제였습니다.

기타

  • GitHub Actions CI/CD 워크플로우 구축
  • 테스트 프로젝트 .NET 8.0 업그레이드
  • 문서 개선 (원격 큐 경로 포맷 등)
  • “counterfeit” → “unofficial port” 용어 수정

개인적인 회고

이번 업데이트를 하면서 여러 가지 생각이 들었습니다.

라이선스에 대한 반성

솔직히 당시에는 오픈소스 라이선스에 대한 이해가 많이 부족했습니다. "어차피 공개된 코드니까 MIT로 해도 되겠지"라는 안일한 생각이었던 것 같아요. Ms-RL이 파생 저작물에도 동일 라이선스를 요구한다는 걸 이번에야 제대로 알게 되었습니다. 오픈소스 생태계에서 라이선스 준수는 기본 중의 기본인데, 이런 기본적인 부분을 놓쳤다는 것이 부끄럽습니다.

"counterfeit"라는 표현에 대해

README에 이 패키지를 "counterfeit"라고 표현했었는데요. 당시에는 영어가 익숙하지 않아서 그냥 “공식이 아닌 것”, “원본을 흉내 낸 것” 정도의 가벼운 뉘앙스로 생각했습니다. 그런데 최근에야 이 단어가 “위조품”, “가짜”, 심지어 불법적인 복제물을 의미하는 상당히 강한 부정적 표현이라는 걸 알게 되었어요. 합법적으로 공개된 소스 코드를 기반으로 만든 파생 저작물을 스스로 "위조품"이라고 부른 셈이니… 정말 부끄러운 표현 선택이었습니다.

방치에 대한 반성

6년이라는 시간 동안 이슈와 PR이 쌓여있었는데 제대로 대응하지 못했습니다. 누군가 이 패키지를 실제로 사용하고, 버그 때문에 고생하고, 심지어 기능을 추가해주려고 PR까지 보내주셨는데 말이죠. 오픈소스를 배포한다는 건 어느 정도의 책임이 따른다는 걸 다시 한번 느꼈습니다.

그래도 다행인 것

늦었지만 다시 손보게 된 계기가 생겨서 다행입니다. 커뮤니티 분들의 기여가 없었다면 아마 계속 방치했을 거예요. PR 보내주신 @j0hnth0m 님, 버그 리포트 해주신 분들께 진심으로 감사드립니다.

앞으로는 좀 더 책임감 있게 이 패키지를 관리하려고 합니다. Microsoft가 공식 MSMQ 클라이언트를 출시할 가능성은 낮아 보이지만, 여전히 레거시 시스템에서 MSMQ를 사용하시는 분들이 계시니까요.


링크


혹시 비슷한 경험 있으신 분 계신가요? 오래된 프로젝트 다시 열어보면 부끄러운 게 한두 개가 아니더라고요 :sweat_smile:

버그 리포트나 PR은 언제든 환영합니다. 감사합니다!

8개의 좋아요

저도 오래 전에 만든 것들 보면 이불킥을 하게 되네요~ㅋㅋ:grin:

그래도 과거 결과물에 대한 부끄러움은 곧 오늘의 성장을 의미하는 것이 아닐까 하고 생각하며 긍정적으로 여겨 봅니다. :sweat_smile: 어제 내가 만들었던 결과물을 오늘 쓰레기로 취급하는 사람이 되자! 라는 마인드로 살아보려 노력 중이긴 합니다…만! 그래도 이불킥은 하게 되네요~ㅎㅎ:grinning_face_with_smiling_eyes:

4개의 좋아요