StreetComplete در iOS اکنون در نسخه بتا عمومی است
آدرس مقاله: https://github.com/streetcomplete/StreetComplete/issues/5421 آدرس نظرات: https://news.ycombinator.com/item?id=49920160 امتیاز: 239 # نظرات: 54
<img src="https://github.com/streetcomplete/StreetComplete/assets/4661658/06911703-3822-4dfd-b6de-f48fc533eba6" align="left" width="144">
این بلیط چیزی شبیه بلیط اصلی برای هماهنگی توسعه در پورت iOS StreetComplete است. این جایگزین #1892 میشود که شامل بحثها و کارهای تحقیقاتی/مشاهدهای زیادی نیز میشود.
### TLDR: برای لیستی از وظایف، به [Project Board] (https://github.com/orgs/streetcomplete/projects/1) نگاهی بیندازید. مشارکت ها خوش آمدید!
همچنین نگاهی به [اسلایدها از بحث SotM Europe 2024](https://docs.google.com/presentation/d/11_k8Tf33xZ0fI2gc3yaMJAkXeQBbLzw0Be5m28P_oYI/edit?usp=sharing) بیندازید (این بلندگو را وقتی قابل فهم نباشد اضافه کردم).
#رویکرد
پایه کد این برنامه با 100% Kotlin نوشته شده است، یک زبان برنامه نویسی مدرن که کاملا شبیه به Swift است. کد کاتلین را می توان به جاوا اسکریپت و همچنین به کد ماشین منتقل کرد، درست مانند سوئیفت. علاوه بر این، بسیاری از وابستگی های این برنامه تاکنون کتابخانه های خالص Kotlin هستند.
<img align="left" width="64" src="https://github.com/streetcomplete/StreetComplete/assets/4661658/b1c25b4c-2f60-463e-a587-12793db95961">
از این رو می توان نسخه iOS این برنامه را با [Kotlin Multiplatform] (https://www.jetbrains.com/kotlin-multiplatform/) انجام داد.
کد رابط کاربری را می توان با استفاده از [Compose Multiplatform] (https://www.jetbrains.com/lp/compose-multiplatform/) به اشتراک گذاشت که در حال حاضر در <s>alpha</s> *بتا* برای iOS است. این یک فورک/افزونه از [Jetpack Compose] (https://developer.android.com/jetpack/compose) با همان API است. Jetpack Compose یک چارچوب UI واکنشی است که در آن توسعه دهندگان رابط کاربری را کاملا به صورت کد تعریف می کنند (ایده ای مشابه SwiftUI، Flutter، ...). با این حال، باید کل رابط کاربری (به صورت تدریجی) را در Compose دوباره ایجاد کنیم.
این مقدار کدی را که باید به پلتفرم وابسته باشد (اندروید / iOS) به حداقل می رساند.
این رویکرد دارای مزیت بزرگی نسبت به سایرین است زیرا نگهداری بیشتر این پروژه به طور قابل توجهی افزایش نخواهد یافت، زیرا تنها یک پایه کد وجود خواهد داشت. در مقایسه با استفاده از چارچوب Flutter برای چند پلتفرم (همانطور که توسط [Every Door] (https://every-door.app/) استفاده میشود)، به ما اجازه میدهد تا حد زیادی پایگاه کد Kotlin را لمس نکنیم. هنگام استفاده از فلوتر، باید همه آن را در دارت بازنویسی کنیم.
# مراحل به طور خلاصه
- همه کدهای خاص پلتفرم را از منطق برنامه جدا کنید. وابستگی های اندروید/جاوا را برای منطق برنامه با وابستگی های چند پلتفرمی Kotlin جایگزین کنید
- به صورت تدریجی کد UI را به Compose Multiplatform منتقل کنید:
1. دسترسی به داده و کد حالت رابط کاربری را از کد UI خالص جدا کنید (از مدل های view استفاده کنید: #5070)
دو نوشتن](https://developer.android.com/jetpack/compose). وقتی از پایین به بالا انجام می شود، می توان این کار را به صورت تدریجی انجام داد (به [راهنمای استراتژی مهاجرت] (https://developer.android.com/jetpack/compose/migrate/strategy) مراجعه کنید)
3. <img align="right" clear="both" width="48" break="both" src="https://github.com/streetcomplete/StreetComplete/assets/4661658/6fe5a62e-e351-4366-a8b1-8ab6ca4c83f، سپس از Multipackose Compose، فشرده سازی کنید. این یک قدم کوچک در مقایسه با مرحله اول است.
# وضعیت فعلی
_این بخش به طور مداوم به روز می شود.
مراحل لازم به تفصیل در یک [Project Board] به سبک Kanban توضیح داده شده است (https://github.com/orgs/streetcomplete/projects/1). (بعضی از وظایف هنوز ایجاد نشده اند زیرا 100٪ به کارهای دیگری که ابتدا انجام شده اند و برخی تحقیقات بستگی دارد). مگر اینکه غیر از این گفته شود، آنها به صراحت برای گرفتن توسط افرادی که این را می خوانند و (امیدوارم 😊) می خواهند به توسعه به سمت یک پورت iOS کمک کنند، علاقه مند هستند. اگر مایلید یکی از کارهایی که توضیح داده شده را اجرا کنید، در آن تیکت نظر دهید.
ما مدتی پیش تقریبا تخمین زدیم که توسعه یک پورت کامل برای iOS یک سال کار به طول خواهد انجامید. بنابراین، دامنه این امر بسیار گسترده است. ما فقط با مشارکت های زیاد جامعه به طور واقع بینانه به آن دست خواهیم یافت. خوشبختانه این دقیقا همان چیزی است که در سال های گذشته اتفاق افتاده است. در نیمه اول سال 2024، من توانستم به طور تمام وقت روی این کار کار کنم. مهاجرت اکنون حدود 50٪ کامل شده است.
پس بیایید دنده ها را عوض کنیم!
## چگونه می توانید کمک کنید
- شما می توانید وظیفه ای را از هیئت مدیره پروژه تحویل بگیرید! یا، می توانید با فناوری ها / چارچوب های ذکر شده آشنا شوید تا بعدا مشارکت های معناداری داشته باشید. به طور خاص: Jetpack Compose / [Compose Multiplatform](https://www.jetbrains.com/lp/compose-multiplatform/). این برای من نیز بسیار جدید است، بنابراین باید پاهایم را اینجا هم پیدا کنم
- شما می توانید توسعه حمایت! عنوان «حامی این پروژه» را در نوار کناری صفحه اصلی ببینید. پول بیشتر به من این امکان را می دهد که زمان بیشتری را به توسعه این برنامه به طور کلی اختصاص دهم. اگر منابع واجد شرایطی برای بودجه در مقیاس بزرگتر می شناسید، با من صحبت کنید!
- به طور کلی می توانید در تعمیر و نگهداری و تریاژ مشکل کمک کنید. زمان صرفه جویی شده در آن زمانی است که من می توانم برای توسعه بیشتر در این زمینه صرف کنم!
متن اصلی (انگلیسی)
StreetComplete on iOS is now in public beta
Article URL: https://github.com/streetcomplete/StreetComplete/issues/5421 Comments URL: https://news.ycombinator.com/item?id=49920160 Points: 239 # Comments: 54