d2iq-archive / mesos-rxjava

RxJava client for Apache Mesos HTTP APIs
Apache License 2.0
42 stars 27 forks source link

Please release non-snapshot jar :) #53

Closed waynr closed 8 years ago

waynr commented 8 years ago

As the Apache Mesos HTTP APIs are experimental this library should also be considered experimental. The project reserves the right to change any interface at any time until the first release is made.

This is compatible with the semver definition of the 0.y.z version numbers:

Major version zero (0.y.z) is for initial development. Anything may change at any time. The public API should not be considered stable.

So there is really no reason not to just explicitly state in README.md on this library that it follows semantic versioning and release as many incompatible 0.y.z versions as you want.

If you think about it, using SNAPSHOT versions is really the worst possible case for potential users of this library because if in my pom.xml I say "depend on 0.1.0-SNAPSHOT" there is nothing I can do to prevent two different builds my dependent project from using two different 0.1.0-SNAPSHOT (incompatible) versions.

Thanks for your consideration!

BenWhitehead commented 8 years ago

Hi @waynr currently the project is waiting on some features to be implemented and released in mesos to be able to use this library (even from fairly trivial usage). The issues that are blocking the first release 0.1.0 can be tracked here: https://github.com/mesosphere/mesos-rxjava/milestones/0.1.0

You are correct that using a snapshot has the potential to introduce instability for a user, if they are referring exactly to 0.1.0-SNAPSHOT. If however you want to have "pinned" jars, you can use the generated coordinate that is created when the artifacts are published. These artifacts are stable and won't change, for example if you use the following it will ensure that a specific snapshot is used:

    <dependency>
      <groupId>com.mesosphere.mesos.rx.java</groupId>
      <artifactId>mesos-rxjava-protobuf-client</artifactId>
      <version>0.1.0-20160428.002344-7</version>
    </dependency>

Please also note that SNAPSHOT artifacts are not intended to be used in something else that is released, right now they are built for users that want to experiment or get their feet wet with the library. Snapshots are built for every merge to master, also making it challenging to release a brand new version instead of a snapshot.

waynr commented 8 years ago

@BenWhitehead I don't know if I believe in the stability of generated coordinates for SNAPSHOTs...how long have you been releasing SNAPSHOT coordinates to oss.sonatype.org? Looking at https://oss.sonatype.org/content/repositories/snapshots/com/mesosphere/mesos/rx/java/mesos-rxjava-client/0.1.0-SNAPSHOT/, I only see artifacts dating back to the beginning of April yet this repo has been worked on periodically since Oct/Nov. I could be wrong, but this is the reason I didn't pin to a generated artifact (not knowing what the repository cleanup policy is)

That being said, since you think that this library isn't ready for even trivial usage then I will wait to use it. Thanks for your thoughtful response!

BenWhitehead commented 8 years ago

Hi @waynr you're correct. I started doing work on the project back in november, but didn't have time to setup everything for artifact publishing until the beginning of April.

From the progress side of things, mesos 0.29.0 is supposed to have the fix for master redirection which I think is the biggest blocker to this being practical to use for a framework. If mesos doesn't do the redirects (or does them wrong, which was the case prior to 0.29.0 then it's really easy for a framework to fall over).

I believe the auth stuff is mesos is schedule for 0.29.0 as well so hopefully we'll be able to get the fixes in place and have a 0.1.0 released soonish.

Thanks for your interest in checking out the library.

drcrallen commented 8 years ago

Looks like 0.29 might be skipped in favor of direct to 1.0.0

frankscholten commented 8 years ago

I suggest to use jitpack.io

First add jitpack as a repository

<repository>
  <id>jitpack.io</id>
  <url>https://jitpack.io</url> 
</repository>

and now reference a dependency in your pom.xml. You can use a commit hash as the version.

<dependency>
  <groupId>com.github.mesosphere.mesos-rxjava</groupId> 
  <artifactId>mesos-rxjava-client</artifactId>
  <version>b06c663b88bbbbf697f64bbddec85d87af373b9d</version> 
</dependency>

Jitpack will build the project if necessary.

BenWhitehead commented 8 years ago

Snapshots are released with explicit timestamps for each merge to master. jitpack should not be necessary.

BenWhitehead commented 8 years ago

Release 0.1.0 is on maven central.