Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

MPP Thoughts #207

Open
gdude2002 opened this issue Mar 1, 2023 · 12 comments
Open

MPP Thoughts #207

gdude2002 opened this issue Mar 1, 2023 · 12 comments
Assignees
Labels
Priority: Low Task is considered lower-priority. Type: Enhancement Improvements to existing features.

Comments

@gdude2002
Copy link
Member

Having chatted with @DRSchlaubi a bit about MPP, I figured I should chat about what needs doing for KordEx MPP, outside of waiting for Kord.

There aren't tons of things, surprisingly:

  • Restructure the project for MPP development
  • Write a new MPP library that wraps ICU for all platforms
  • Switch to ICU Locale objects
  • Abstract and rewrite all filesystem and resource code
  • Make plug-ins a JVM-only concept for now
  • Replace anything from Apache Commons and other core JVM-only libs

This won't happen for quite some time, but it's definitely worth thinking about.

@gdude2002 gdude2002 added Type: Enhancement Improvements to existing features. Priority: Low Task is considered lower-priority. labels Mar 1, 2023
@gdude2002 gdude2002 self-assigned this Mar 1, 2023
@russellbanks
Copy link

Kord got JavaScript support in 0.9.0 and Kotlin Native support doesn't look far away - kordlib/kord#69 (comment)

@DRSchlaubi
Copy link
Contributor

Kord got JavaScript support in 0.9.0 and Kotlin Native support doesn't look far away - kordlib/kord#69 (comment)

Kord always was the least important blocker. Currently biggest blocker is probably icu

@gdude2002
Copy link
Member Author

For those keeping an eye on this issue over a year later - porting ICU4J to a Kotlin MPP project for all platforms is the major blocker at the moment. I think we can probably rewrite or find alternatives for most Java-based libraries otherwise, but an ICU4J port would be massive, will require accessing a ton of resources, and will need to be kept closely in-line with official releases.

It's a lot of work, and I don't see me managing to actually find the spoons for it - so I'm marking this issue as Help Wanted.

@DRSchlaubi
Copy link
Contributor

Maybe a list of features of ICU4J that are actually used by kordex would be helpful

@gdude2002
Copy link
Member Author

We've talked about this already - ICU4J is an exposed API for KordEx, and we don't know what consumers will need.

@DRSchlaubi
Copy link
Contributor

We've talked about this already - ICU4J is an exposed API for KordEx, and we don't know what consumers will need.

That doesn't matter, if we typealias to ICU4j on JVM, then users can still use all the features of ICU4J on JVM projects and people running Kord on JS/Native likely will have simpler bots anyw, so blocking the progress just for feature

@gdude2002
Copy link
Member Author

ICU doesn't even exist on JS, there is a native ICU4C tho at least, which helps for native, but if we have to do porting anyway..

@DRSchlaubi
Copy link
Contributor

ICU doesn't even exist on JS, there is a native ICU4C tho at least, which helps for native, but if we have to do porting anyway..

There is no way that JS doesn't have ICU

@gdude2002
Copy link
Member Author

Looks like there's no external library for it, whether you can use it depends on how your Node interpereter was compiled

@DRSchlaubi
Copy link
Contributor

Going back to the question which parts of ICU kordex actually uses, since kordex doesn't exist on js/native yet, I would not consider it as part of the API as the API doesn't exist yet

@gdude2002
Copy link
Member Author

gdude2002 commented Jun 3, 2024

We're using a few parts of it internally

  • Measure
  • MeasureFormat
  • MeasureUnit
  • MessageFormat
  • ULocale

This already requires a good chunk of ICU's resource files

@DRSchlaubi
Copy link
Contributor

We're using a few parts of it internally

  • Measure
  • MeasureFormat
  • MeasureUnit
  • MessageFormat
  • ULocale

Those should not be too hard to replace, I will try and see how doable this is without changing the JVM API surface and will let you know

@settings settings bot removed the Help Wanted label Aug 13, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Priority: Low Task is considered lower-priority. Type: Enhancement Improvements to existing features.
Projects
None yet
Development

No branches or pull requests

3 participants