EmberCLI: 곧 여러분에게 찾아옵니다!

Discourse의 에셋 파이프라인을 EmberCLI 기반으로 전환하기를 원합니다. EmberCLI는 Ember 애플리케이션을 개발하는 표준 방식이며, Discourse의 기존 접근법은 Ember.js 배경을 가진 사람들이 프로젝트를 접할 때 오랫동안 혼란의 원인이 되어 왔습니다.

배경

Discourse는 EmberCLI이 등장하기 이전부터 존재해 왔으며, 당시에는 Rails 에셋 파이프라인과 같은 도구를 사용하는 것이 모범 사례로 여겨졌습니다. 수년에 걸쳐 우리는 JavaScript 모듈, Babel.js, 소스 맵 등 Ember 애플리케이션에 점점 더 많은 기능을 추가해 왔지만, Rails 에셋 파이프라인을 더 이상 확장하기는 어렵다고 느낍니다. async/await와 같은 일부 새로운 기능은 현재 시스템에 통합하기가 매우 어렵습니다.

Discourse의 다음 주요 버전(2.5)에서는 EmberCLI로의 전환을 계획하고 있습니다. 이 작업에는 상당한 시간이 소요될 것으로 예상되므로, 프론트엔드 애플리케이션의 두 버전을 동시에 유지하는 데 최선을 다할 것입니다. 모험적인 사용자는 EmberCLI로의 전환을 선택적으로 사용할 수 있으며, 다른 사용자는 시스템이 안정화될 때까지 기존 애플리케이션을 그대로 사용할 수 있습니다.

로드맵

  1. 기존 패턴을 EmberCLI 패턴으로 전환: 2.4 버전에서 이미 일부 작업을 수행했습니다. 기본적으로 목표는 JavaScript 코드를 Ember-CLI이 기대하는 형식에 가깝도록 서서히 이식하는 것입니다. 여기에는 다음이 포함됩니다:

    • 모든 것을 동일한 경로에서 가져오기
    • 원시 handlebars / ember handlebars에 서로 다른 확장자 사용
    • 계산된 속성(computed property) 비권장 사항 제거
    • 자체 모듈 대신 ember의 Location 모듈로 변경
  2. EmberCLI를 통해 Discourse 부팅: (1)의 문제가 수정되는 과정에서 새로운 문제가 발견될 가능성이 높으며, 동일한 접근 방식을 반복하게 될 것입니다.

  3. 테마 컴포넌트 및 플러그인 통합: 기존 Discourse 확장 기능을 최대한 매끄럽게 통합하기 위해 조사가 필요합니다.

  4. 성능(또는 기타) 병목 현상 식별: 현재 시스템과 동일한 속도이거나 더 빨라야 합니다.

  5. 전환 시간표 수립: 사용자가 기능을 베타 테스트하고 피드백을 제공할 수 있도록 충분한 시간을 확보해야 합니다.

장점

전환이 완료되면 현재 깨져 있거나 구현하기 어려운 소스 맵이나 async/await와 같은 많은 부분이 정상적으로 작동하게 될 것입니다.

또한, Discourse의 프론트엔드 부분만 작업하려는 일부 개발자를 위해, Redis/Postgres가 포함된 전체 Ruby/Rails 서버를 실행하지 않고 try.discourse.org와 같은 서버를 가리키는 EmberCLI만 실행하여 프론트엔드 애플리케이션을 개발할 수 있도록 설정할 수 있을 것입니다.

이는 대규모 프로젝트이지만, 궁극적으로 우리의 애플리케이션은 훨씬 더 좋아질 것입니다!

로빈, 감사합니다! 물론 우리에게 이 부분은 매우 중요합니다.

테스트해볼 브랜치가 있으면 알려주세요.

P.S. 이번 마이그레이션이 얼마나 많은 작업이 될지 상상만으로도 감탄스럽습니다. 정말 감사드립니다.

결국 discourse 플러그인을 rails 플러그인으로 만들 계획도 있으신가요? 그렇다면 정말 좋을 것 같습니다! :smiley: rails가 플러그인을 위해 기본적으로 제공하는 생성기가 정말 많거든요. 또한 discourse는 가장 큰 오픈소스 rails 앱이므로, 노력을 합치는 것이 좋은 방법이 될 수 있을 것 같습니다.

그것은 이 작업과 관련이 없어야 하는 전혀 다른, 그리고 훨씬 더 복잡한 요청입니다.

이제 몇 가지 대규모 템플릿 린팅 변경 사항을 병합하기 시작하겠습니다. 대부분은 "그냥 작동"할 것으로 예상되지만, 일부 회귀 현상이 발생할 수 있습니다. 최대한 빠르게 수정하겠습니다. UI 요소가 업데이트되어야 할 때 업데이트되지 않는 등 이상한 증상이 발견되면 반드시 보고해 주세요.

오늘 app/assets/javascripts/discourse 폴더의 모든 .js.es6 파일을 .js로 이름 변경하는 대규모 커밋을 병합했습니다. 이는 Ember CLI 표준 파일 명명 규칙에 맞추기 위한 단계입니다.

다음 단계는 .js 트랜스파일링에 대한 플러그인 지원 및 .es6의 비추천 처리입니다.

Hi @eviltrout

방금 이걸 발견했어요. 진행 상황은 어떤가요? :slight_smile:

좋습니다. @eviltrout가 며칠 전에 이 커밋을 병합했습니다:

이것은 이를 향한 거대한 이정표입니다.

좋네요. 기대가 됩니다. @angus @merefield 도 이걸 좋아할 거예요. :heart:

네, 지금 바로 개발 모드로 Ember CLI를 실행할 수 있습니다! 사용법이 좀 더 매끄러워지면 곧 더 자세히 알려드릴 예정입니다.

기대됩니다 :slight_smile: