Uploaded image for project: 'Realm Kotlin'
  1. Realm Kotlin
  2. RKOTLIN-40

Discussion: Artifact naming

    • Type: Icon: Task Task
    • Resolution: Fixed
    • Priority: Icon: Minor - P4 Minor - P4
    • None
    • Affects Version/s: None
    • Component/s: None
    • Labels:
      None

      This issue is part of https://github.com/realm/realm-kotlin/issues/31 and is an attempt at figuring out exactly what we should name our artifacts.

      Right now we having everything in the io.realm.kotlin group. Which is probably fine and sets it apart from io.realm which is our Java repos. Some other examples:

      Google: https://maven.google.com/web/index.html, is a bit all over the place but e.g. androidx.<product> follows the same pattern.

      Square: https://mvnrepository.com/artifact/com.squareup, does the same thing with e.g. com.squareup.okhttp3 and com.squareup.okhttp4

      Current artifacts

      Flavors used are base and objectServer

      // Base artifacts
      io.realm:realm-android-library:10.0.0
      io.realm:realm-android-kotlin-extensions:10.0.0
      
      // ObjectServer artifacts
      io.realm:realm-android-library-object-server:10.0.0
      io.realm:realm-android-kotlin-extensions-object-server:10.0.0
      
      // Shared artifacts
      io.realm:realm-annotations:10.0.0
      io.realm:realm-annotations-processor:10.0.0
      io.realm:realm-gradle-plugin:10.0.0
      io.realm:realm-transformer:10.0.0
      

      // Main entry point for people is

      io.realm:realm-gradle-plugin:10.0.0

      and

      apply plugin: realm-java

      Proposed new artifacts

      Proposed flavors: database and app. Proposal is to use app-library as the name for the current master where we don't have flavors yet, and then add the database-library package once we create the flavors.

      // Base artifacts
      io.realm.kotlin:database-library:1.0.0
      
      // Realm App artifacts
      io.realm.kotlin:app-library:1.0.0
      
      // Shared artifacts
      io.realm.kotlin:plugin-compiler:1.0.0
      io.realm.kotlin:plugin-compiler-shaded:1.0.0
      io.realm.kotlin:gradle-plugin:1.0.0
      
      // Shared KMP artifacts
      // I suspect we will end up with two variants for this
      io.realm.kotlin:runtime-api:1.0.0
      

      // Main entry point is

      io.realm.kotlin:gradle-plugin:1.0.0

      but it is a bit unclear exactly how we can support our multiple targets?

      Should we have multiple plugins?

      apply plugin: realm-kotlin-kmp
      apply plugin: realm-kotlin-android
      

      Or do we only want one with specific kmp settings? I.e. there is probably a use case where you have an KMP project, but only want Realm in the Android variant. Should this instead be solved through a single plugin and the a config closure:

      apply plugin: realm-kotlin
      
      realm {
      	kmp {
      		// Automatically true for all variants we can find
      		android = true
      		iOS = false
      		jvm = false
      	}
      }
      
      

      Alternative

      Alternatively, we keep io.realm as the group and prefix most of the above artifacts with realm-kotlin-<x>. Not sure if/how that would make things easier to manage. On purpose, we try to keep most of the artifacts away from users eyes anyway.

            Assignee:
            christian.melchior@mongodb.com Christian Melchior (Inactive)
            Reporter:
            unitosyncbot Unito Sync Bot
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated:
              Resolved: