Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Flutter 2023 Roadmap @Flutter Forward Extended ...

Flutter 2023 Roadmap @Flutter Forward Extended Korea - 박제창

2023 Flutter Forward Extended Korea
Flutter 2023 Roadmap 박제창
2023년 4월 1일 (토요일)
건국대학교 프라임홀

JaiChangPark

April 01, 2023
Tweet

More Decks by JaiChangPark

Other Decks in Programming

Transcript

  1. 박제창 (Dreamwalker) • Dreamus Company • Flutter Seoul - Organizer

    • GDG Golang Korea - Organizer • Github: JAICHANGPARK • Twitter: @jaichangpark 소개
  2. Breakthrough graphics performance Seamless integration for web and mobile Early

    to new and emerging architectures Continued focus on developer experience New directions for Flutter: four themes of ongoing investment Disclaimer: This is a preview of features in development, planned to release over the next 12-24 months.
  3. Breakthrough graphics performance Seamless integration for web and mobile Early

    to new and emerging architectures Continued focus on developer experience New directions for Flutter: four themes of ongoing investment Disclaimer: This is a preview of features in development, planned to release over the next 12-24 months.
  4. • 가장 중요하게 생각하는것: 프로젝트의 전반적인 속도를 높이는것. ◦ flaky

    tests와 같은 기술부채 감소 ◦ 새로운 사람들이 팀에 합류하여 프로세스를 개선하는것 ◦ 생산성을 보다 따르게 높이는것 1. Technical debt & team velocity 기술부채와 팀 속도
  5. • Velocity 이슈들을 제기하거나 문서화하고 문제를 해결할 수 있는 팀원을

    위한 정기 미팅을 시작(진행)할 예정 • 정기 미팅은 Discord상에서 공지 예정 ◦ https://discord.gg/BS8KZyg ◦ https://github.com/flutter/flutter/wiki/Chat 1. Technical debt & team velocity 기술부채와 팀 속도
  6. 1. Technical debt & team velocity Access: 2023-03-27 Access: 2023-03-27

    Issues 11,326 Open 68,854 Closed PR 204 Open 42,394 Closed
  7. • issue backlog 검토 • 더 이상 사용되지 않거나 실행할

    수 없는 issue 종결 • 나머지 issue의 우선 순위를 지정하기위한 시간할애 1. Technical debt & team velocity 기술부채와 팀 속도
  8. 1. shader compiler jank를 완벽하게 제거하는것 ◦ iOS부터 시작해서 Android와

    데스크톱 플랫폼으로 확장 2. Web 성능 측면 ◦ WebAssembly(wasm) 지원 3. Multi-threading rendering Flutter 성능 측면 2. Performance
  9. 1. 플러터 앱 다운로드 사이즈 감소 2. Custom shader의 성능

    향상 3. VM 측면 ◦ Memory allocation 전략 성능향상 ◦ 앱 시작 속도에 대한 성능향상 ◦ 반응성에 대한 성능향상 Flutter 성능 측면 2. Performance
  10. 1. Accessibility (접근성) ◦ Flutter 애플리케이션에 쉽게 접근할 수 있도록

    지속적 투자 예정 ◦ 모든 플랫폼에서 접근성 지원의 품질 개선 2. Documentation (문서화) ◦ 버그 수정, 소규모 패치의 형태로 이루어질 예정 품질 3. Quality 3. Platform ◦ 빠르게 변화하는 Android, iOS에 대한 지원 ◦ iOS: ▪ Cupertino Widget + Widget 수 증가 ◦ Android: ▪ predictive back gesture ▪ Android handwriting input ▪ Camera플러그인 CameraX API 마이그레이션
  11. 1. SLSA-3 달성을 목표 ◦ 2022년 SLSA-2 달성 2. 2024년에는

    SLSA-4를 목표 3. Flutter Package & App 개발자의 보안 동일성 ◦ 동일한 수준의 보안을 달성 4. Security 보안과 SLSA(Supply chain Levels for Software Artifacts)
  12. SLSA 4. Security SLSA is a set of incrementally adoptable

    security guidelines, established by industry consensus. The standards set by SLSA are guiding principles for both software producers and consumers: producers can follow the guidelines to make their software more secure, and consumers can make decisions based on a software package’s security posture. SLSA’s four levels are designed to be incremental and actionable, and to protect against specific integrity attacks. SLSA 4 represents the ideal end state, and the lower levels represent milestones with corresponding integrity guarantees.
  13. 1. Popularity ◦ 이슈의 👍(“thumbs-up”)수가 얼마나 있는지 확인 ◦ 우선순위를

    정하는데 도움 2. Parity and Portability ◦ 1개의 플랫폼에서 기능을 지원한다면, 어느 플랫폼에서도 지원할 수 있는것이 중요 3. Supporting some other effort ◦ 예) 성능 향상을 가능하게 하는 새로운 기능 Feature를 선정하는 3가지 동기부여 요소 5. Features
  14. 1. Custom asset transformers, because they enable some performance improvements.

    2. Efficient 2D scrolling widgets (e.g. tables and trees), to improve the performance of applications with this kind of interface. 3. Multiple windows, especially for desktop platforms, because this is a very highly requested feature. 4. Platform Views on macOS and Windows, by popular demand. 5. Drag and drop, also by popular demand. 6. Wireless debugging on iOS, our second-most-requested feature. 7. Custom "flutter create" templates, which makes it much easier for third-parties (e.g. the Flame engine) to bootstrap developers. 8. Supporting element embedding (see also #32329), which allows Flutter content to be added to any standard web <div>, by popular demand. 5. Features
  15. 5.2. Efficient 2D scrolling widgets (e.g. tables and trees), to

    improve the performance of applications with this kind of interface. 5. Features https://github.com/orgs/flutter/projects/32/views/1
  16. 5.3. Multiple windows, especially for desktop platforms, because this is

    a very highly requested feature.aq 5. Features https://github.com/flutter/flutter/issues/30701 2019~
  17. 5.3. Multiple windows, especially for desktop platforms, because this is

    a very highly requested feature.aq 5. Features https://docs.flutter.dev/release/breaking-changes/window-singleton The window singleton is deprecated In preparation for supporting multiple views and multiple windows, the window singleton has been deprecated. Code previously relying on the window singleton needs to look up the specific view it wants to operate on via the View.of API or interact with the PlatformDispatcher directly.
  18. 5.5. Drag and drop, also by popular demand. 5. Features

    https://github.com/flutter/flutter/issues/30719 https://github.com/flutter/flutter/issues/30719#issuecomment-901185947 2019~
  19. 5.8. Supporting element embedding (see also #32329), which allows Flutter

    content to be added to any standard web <div>, by popular demand. 5. Features https://github.com/flutter/flutter/issues/118481 https://flutter-forward-demos.web.app/#/
  20. • 1. Adaptive Layout ◦ 많은 개발자의 니즈. ◦ 인터페이스를

    여러번 구현하지 않고 복수의 플랫폼을 지원하는 것 • 2. New graphics backend ◦ 3D를 Flutter Scenes에 통합 ◦ 2023년에는 3D 관련 실험/연구를 진행 예정 ◦ The low-level dart:ui API 및 새로운 shader 기능개선 내부에서 연구되고 있는것 6. Research
  21. • 3. Wide Color Gamut Support • 4. ICU4C에서 ICU4X로

    마이그레이션 ◦ Rust-based ICU Backend • 5. Dart의 새로운 기능을 활용한 Flutter 업데이트 ◦ Record & Pattern을 사용가능하도록 API 업데이트 ◦ RISC-V 지원하기 위한 toolchain 업데이트 ◦ 플러그인을 위한 새로운 FFI 기능 내부에서 연구되고 있는것 6. Research
  22. Wide Gamut Color Support 6. Research 2022.02 https://github.com/flutter/engine/pull/39111 • iOS

    먼저 사용해 볼 수 있음. • Beta 채널 또는 master 채널
  23. ICU4X 6. Research • 모든 플랫폼의 빌드 파이프라인데 Rust언어를 포함하는

    것 • Engine과 Dart FFI 패키지간 Rust 코드를 공유하는 방법 • 각 패키지들의 바이너리 코드에 대한 tree-shaking 방법 https://icu4x.unicode.org/doc/icu/ https://github.com/unicode-org/icu4x Unicode ICU4X 2022
  24. Rust? 6. Research • 2006년 Mozilla Research의 Graydon Hoare가 시작한

    프로젝트에서 시작 • 2010년 공식 발표 • https://www.rust-lang.org/ https://www.rust-lang.org/
  25. RISC-V 6. Research The ClockworkPi DevTerm R-01, an experimental RISC-V

    computer, running a Dart console app. https://medium.com/flutter/whats-next-for-flutter-b94ce089f49c
  26. • 2023년 중에 4번의 Stable 배포, 12번의 Beta 배포 예정

    • 2023년에는 새로운 기능을 Stable 버전이 아닌 Beta 채널에서 사용할 수 있도록 ◦ stable채널에서 기다리기 힘들어요 ◦ Beta채널을 이용해보세요~ 7. Releases Flutter 출시계획
  27. The road to Dart3 7. Release • Around January/February 2023:

    Dart 3 alpha released. • Around March/April 2023: Dart 3 beta released. ◦ This release previews the new features in Dart 3. • Around mid 2023: Dart 3 stable released. ◦ Sound null safety becomes the only supported mode.
  28. 🔮 2022년 12월 23년 1월 Flutter Forward Flutter 3.7 (적중)

    2023년 4월 23년 5월 10일 Google I/O Flutter 4.0 Dart 3 stable (과연?)
  29. The list of most popular issues 8. Non-goals Access: 2023-03-27

    https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+sort%3Areactions-%2B1-desc
  30. • 1. Web의 Hot Reload 기능 ◦ 현재 플러터 팀의

    모든 Web Compiler 전문가들은 Wasm (WebAssembly)지원을 위한 작업을 진행 중. • 2. Built-in 지원 ◦ Apple Watch ◦ Android Wear ◦ Automotive (IVI와 같은 자동차 플랫폼) 올해 목표하지 않는것들. 8. Non-goals
  31. Hot Reload on web 8. Non-goals https://github.com/flutter/flutter/issues/53041 • 현재 이

    이슈를 같이 작업할 Volunteered 가 없음. • 장기적인 Web 관련 작업은 wasm에 초점을 맞추고 있기 때문 • 곧 해결될 것으로 보이지 않음. • 기술적으로 어렵고 미묘한 문제 2020
  32. Built-in System - Automotive 8. Non-goals • Apple CarPlay는 Oğuzhan

    Atalay가 만든 flutter_carplay를 추천 ◦ CarPlay API 제어를 위한 Flutter API를 제공 ◦ Apple의 API는 템플릿 베이스이다. (Apple's API is template based) ◦ Flutter의 가치를 발휘하지 어려움. (렌더링 엔진, 위젯 프레임워크, 플랫폼 중립성 등) • Android Auto의 경우도 동일 • Oğuzhan Atalay와 함께 협업하여 작업하거나 새로운 플러그인을 만들기를 권장 • CarPlay와 Android Auto가 직접적으로 화면에 픽셀을 그리는 방식을 https://github.com/flutter/flutter/issues/26801#issuecomment-1013565542
  33. Built-in System - watchOS / tvOS 8. Non-goals • It

    would involve code changes in the buildroot, and some changes to Dart and Skia ◦ if we aren't totally off Skia and onto Impeller by then • Flutter 엔진에서 일부 리팩토링 작업을 진행중 ◦ macOS, iOS 및 tvOS 또는 watchOS와 같은 embedders 사이에서 더 많은 코드를 공유할 수 있도록 개선할 예정 • Xcode뿐만 아니라 flutter_tool에서도 작동하도록 하기 위해서는 무선 디버깅이 필수적 ◦ TV에 USB 테더 옵션이 없음. • watchOS SDK는 tvOS SDK보다 iOS와 더 다르므로 Flutter 임베더, WKApplication 수명 주기 이벤트 등에서 WatchKit 의미 체계도 구현필요. https://github.com/flutter/flutter/issues/26801#issuecomment-1013565542
  34. • 3. Code Push 기능 • 4. Web의 SEO 지원

    • 5. homebrew를 통한 설치 지원 올해 목표하지 않는것들. 8. Non-goals
  35. Code Push 8. Non-goals 2019 • Modular application delivery •

    Dynamic extension loading • Dynamic patching (2019년 Roadmap에 존재했음.) ◦ 1. 스토어 정책 + iOS에서 원하는 퀄리티를 만족하지 못 할거 같음. (“it would be too slow”) ◦ 2. 보안 문제 ▪ Malware vectors ◦ 3. patching applications를 위한 오픈소스 호스팅 솔루션이 부재함. ▪ 서드파티 서비스에 의존하게되는것을 지양
  36. Code Push 8. Non-goals 2022 • 2019년 이후에도 내부에서 Research는

    계속 진행 • stores(Google Play, App Store등)의 정책이 엄격해 짐 ◦ JS 기반 솔루션이 스토어상에서 환영받고 있지 못함 ◦ 상황상..make sense하지 못 한거 같음 • React Native의 경우 코드 푸시 솔루션을 직접 제공하지 않음 ◦ Microsoft에서 패키지를 제공하고 있음 ◦ 이슈 데이터베이스에 거절된 앱들에 대한 많은 문제보고가 있음 • package:rfw와 같은 UI-push 대체 솔루션이 있음. ◦ 코드푸시를 대채 하기는 어려움
  37. Flutter Web WASM Flutter, Dart, and WASM-GC: A new model

    for Web applications by Kevin Moore @ Wasm I/O 2023 https://youtu.be/Nkjc9r0WDNo
  38. Let flutter be installable via homebrew 8. Non-goals https://github.com/flutter/flutter/issues/14050 •

    2022 Update • Latest status here is that nobody working on Flutter's release processes currently has expressed an interest in implementing this. • 기여 ◦ Discord: ◦ #hackers-releases 2018 https://namu.wiki/w/%EA%B0%9C%EA%B7%B8%EB%A7%8C%ED%99%94%20%EB%B3%B4%EA%B8%B0%20%EC%A2%8B%E C%9D%80%20%EB%82%A0
  39. Summary Breakthrough graphics performance Seamless integration for web and mobile

    Early to new and emerging architectures Continued focus on developer experience Impeller Shaders for web and mobile 3D support Element embedding JNIgen and FFIgen WebAssembly RISC-V Language features Sound null safety Flutter News Toolkit
  40. • State of the market ◦ As of January 2023,

    there are over 700,000 apps in the Play Store that are built with Flutter, and one in five new apps on the Play Store use Flutter ◦ Unlike traditional web frameworks, Flutter looks beyond the DOM and JavaScript to a new generation of Canvas and WebAssembly based APIs. Flutter in 2023: strategy and roadmap
  41. We Must • migrate our ecosystem to null safety without

    fragmentation • continue to advance Dart tastefully and carefully • eradicate jank and other performance impediments with minimal customer effort • deliver unparalleled performance on all platforms • reduce or eliminate friction when calling system APIs • build in supply-chain security without impeding non-Google contributors • build an ecosystem that is self-sustaining • maintain and grow our reputation for quality • win a reputation with design agencies and iOS developers • close API and package divergences between platforms • grow the diversity of our community • support or integrate emerging ways of building UI, such as ML code completion and low-code tools.
  42. This makes the developer experience one of the most critical

    aspects of Dart and Flutter. 2023 strategy
  43. we’ll shift our focus over 2023 away from stable releases

    as the primary vehicle for announcing new features and towards beta releases as the proving ground, as Chrome does.