Kord-Extensions / kord-extensions

Kord extensions framework, providing commands and distinct units of functionality
https://kordex.kotlindiscord.com
Mozilla Public License 2.0
106 stars 27 forks source link

MPP Thoughts #207

Open gdude2002 opened 1 year ago

gdude2002 commented 1 year ago

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:

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

russellbanks commented 1 year ago

Kord got JavaScript support in 0.9.0 and Kotlin Native support doesn't look far away - https://github.com/kordlib/kord/issues/69#issuecomment-1496680274

DRSchlaubi commented 1 year ago

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 commented 4 weeks ago

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 commented 4 weeks ago

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

gdude2002 commented 4 weeks ago

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

DRSchlaubi commented 4 weeks ago

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 commented 4 weeks ago

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 commented 4 weeks ago

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 commented 4 weeks ago

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

DRSchlaubi commented 4 weeks ago

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 commented 4 weeks ago

We're using a few parts of it internally

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

DRSchlaubi commented 4 weeks ago

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