Ethersocial / go-esn

Archived old repository: Official Go implementation of the EthersocialNetwork protocol.
GNU Lesser General Public License v3.0
6 stars 9 forks source link

하위 호환성 깨는 패치 #18

Closed hackmod closed 6 years ago

hackmod commented 6 years ago

리브랜딩때문에 하위 호환성 깨는 패치가 들어있네요.

keystore / chaindata 저장하는 폴더는 ESC를 다른 것으로 바꾸면 일반 사용자는 혼란을 느낄 수 있습니다.

  1. ESC 폴더를 아예 바꾸지 말거나
  2. ESC => EtherSocial 디렉토리를 rename하는 기능을 넣거나
  3. ESC 라는 디렉토리가 있을 경우 경고를 내고 종료시키고 수동으로 디렉토리 이름을 옮기게 하거나
  4. ESC가 있으면 ESC를 사용하고 없으면 EtherSocial 이름을 기본 디렉토리로 하거나,

여러 방법이 있겠지만, 저는 1번을 유지해도 아무런 문제가 없다고 생각합니다.

Gesc => Gesn으로 이름 바꾸실 것은 아니시겠죠?

Gesc 역시 이름 바꿀 이유는 사실 별로 없다고 생각하고 go-esc => go-esn으로 바꿀 이유도 별로 없다고개인적으로 생각하며, 원래의 Geth 이름으로 그대로 사용해도 아무 문제가 되지 않는다고 생각하고 있습니다.

단, go-ethersocial의 경우라면 이게 더 나을 수도 있을 것입니다만,

제 요점은 ESN는 1) 대외적인 ticker이자 브랜드 네임으로 두고, 내부적으로 esc라고 불러도 아무런 문제가 되지 않는다는 것입니다. 2) dataDir을 ESC => EtherSocial로 바꾸면 하위 호환 문제가 생김

하위호환성 깨는 패치를 그대로 사용하는 경우라면 버전이 0.2.0 => 0.2.1이 되면 안됩니다. 물론 버전 번호는 정하기 나름이라지만, 관행적으로 하위 호환 문제가 없을때에 major.minor.patch-level 에서 patch-level 번호를 올립니다. 이 경우 하위 호환 문제가 생기므로 0.3.0이 되어야 더 맞습니다.

좀 혼란스러운 내용이겠으나, 개발자 피드백을 공식 라인을 통해서만 할 방법밖에 없으므로 이슈로 올립니다. 개발자 채팅방을 새로 만드시거나 다른 개인적인 연락방법을 알려주시면 좋겠습니다.

ghost commented 6 years ago

@hackmod

  1. chaindata는 동기화 시 자동 갱신되고 keystore 파일은 블록체인과 지갑 프로그램의 특성상 보관이 아닌 조회의 의미를 가지며, 해당 파일의 보관 및 관리의 책임은 사용자에게 있다고 보고 있습니다.
  2. Gesc의 불필요한 변경은 계획되지 않았습니다.
  3. 버전 번호는 하위호환에 문제가 있다고 말씀하시지만 하위 버전의 시스템 파일을 사용할 수 없는 정도의 버전업도 아닐뿐더러 keystore파일을 별도 보관한다면 아무런 문제가 되지 않을 것입니다.
ghost commented 6 years ago

2번이 현실적인 방안이라고 생각됩니다.

hackmod commented 6 years ago

@ethersocialnet 뭐 알아서 판단하셨겠지만, 이 변경은 일반 사용자를 혼란을 일으키는 아주 불필요한 변경이라고 생각됩니다.

0.2.0을 0.3.0으로 올리자는 얘기가 아닙니다. 저의 잘못 설명으로 오히려 혼란을 줬네요.

0.2.0 실행 후에 0.2.1 아무 생각없이 실행시키면 체인 데이터를 다시 받고, 키 스토어 없어진줄 착각에 빠질 수 있는데 아무런 문제가 없다니요... patch-level 버전은 기능상 버그를 고쳤을때 바뀌는 것입니다. 이것은 기능상의 문제를 고치는 것도 아니고, 전혀 맞지 않습니다.

단, 0.2.x 버전대에는 그냥 원래대로 두고, go-ethereum 1.8.1 베이스 변경일 때에 이 변경을 적용한다면 상관 없을 것입니다. 이 경우 patch-level 버전 변경이 아니므로 호환성에 대한 암시도 있으니까요.

hackmod commented 6 years ago

https://github.com/ethersocial/go-esc/commit/258a5415e803b19f9367af9168235084e81bd473

그밖에 내용

  1. 유닉스/리눅스에서는 관행적으로 소문자로 이름을 사용합니다. 기왕에 바꾸신다면 ~/.Ethersocial이라고 되어있는데 ~/.ethersocial이라고 하는 것이 나아보입니다.

제 홈디렉토리에 여러 코인들의 저장 위치는 다음과 같네요.

유닉스는 보통 대소문자를 가리고, /usr/lib/, /usr/bin/ 아래의 거의 대부분의 파일 이름은 소문자로 둡니다. 그 근거에 대한 링크를 걸어보자면 (이미 알고계시리라 생각되는 내용입니다만) https://softwareengineering.stackexchange.com/questions/186313/lowercase-in-linux-file-names 정도 입니다. 우리는 다르게 하겠다고 하신다면 뭐 할 말은 없습니다만...

P.S.

ghost commented 6 years ago

@hackmod

  1. 재차 말씀드리자면 지갑프로그램은 조회와 전송을 지원할 뿐 keystore 파일의 보관과 관리등 사용상의 모든 책임은 사용자에게 있습니다.
  2. 리눅스 상의 소문자처리는 이미 다른 브렌치로 작업이 진행되어있고 여타 작업과 함께 merge될 것입니다.
  3. 리눅스 실행파일은 현재 구버전이 맞습니다. 차후 재배포 할 예정입니다.
hackmod commented 6 years ago

충분한 시간이 흘렀네요. 이 이슈는 닫습니다~