Refinitiv / Real-Time-SDK

Other
180 stars 128 forks source link

Mavenize the build (for the Java parts of the lib) #21

Closed addicticks-dev closed 6 years ago

addicticks-dev commented 7 years ago

As-is the Elektron SDK open source project is really difficult to setup in an IDE and doesn't allow for easy debugging with full source. The current project layout is a far cry from most other open source projects in this respect.

I've taken the repository (Java parts only) and Mavenized the whole lot. It now opens instantly in any IDE and it builds in any IDE. Have a look at https://github.com/Addicticks/ElektronSDK-Mavenized.

The project now looks like this when opened in an IDE:

image

Sub-projects with the name "Provider" in them is for closed-source projects where only the binary is provided. External artifacts are taken from Maven Central where ever possible (e.g. SLF4J, Apache Commons, etc).

The project doesn't require the developer to have access to upload to a Maven repo. Therefore any junior Java developer (or senior) should be able to open the project in his favorite IDE and be instantly productive.

Dependencies are defined between sub-projects ... as you would expect.

Mavenizing the project build is also a pre-cursor (although not strictly required) for making the Elektron SDK released artifacts available in some centralized Maven repository, e.g. Maven Central or Thomson Reuters' own Maven repo.

Please, can you consider this. I believe the setup cost is currently just too high for anyone to really bother with the open source Elektron SDK ... and that's just too bad, because it deserves more.

(Apologies for not creating a pull request. This is fundamental change in build structure, directory structure, etc, and therefore doesn't lend itself towards a pull request).

Regards

Lars

BrianSandri commented 7 years ago

We have seen several requests for Maven and we are planning to take a look at this in the near future. Thank you for the time you have spent to restructure and make the layout more Maven-like. This will help the team hit the ground running as we begin investigation.

seba5 commented 6 years ago

We have just made the preview branch available for download that contains updates to make use of gradle for Java and cmake for Cpp-C. Please take a look and let us know your thoughts. We are still planning to make the ESDK distribution available on MavenCentral. Updating the build environment for Java to use gradle is the first step.

addicticks-dev commented 6 years ago

Looks good to me.

addicticks-dev commented 6 years ago

One comment on the new preview branch:

The DACS lib (jdacsUpalib.jar) isn't as such available in the repo itself. I know it is in Elektron-SDK-BinaryPack, but there's no dependency link to it. In order for users to understand which DACS lib version is suitable for a given version of ETA or EMA, there needs to be some kind of link.

DACS lib is pure java, but is currently closed-source. Since it is pure Java, i.e. no OS lib which is shared with the C++ version, there's really no point in having in the Elektron-SDK-BinaryPack repo. It might as well sit directly in the Java tree as a project with no source, as a so-called 'lib provider project'. See ElektronSDK-Mavenized for an example of how this might work.

Another option - which would make it all a lot easier - would be to host also DACS Java lib in Maven Central. This is possible even for closed-source, albeit you have to ask for a waiver, because your submission won't meet the standard requirements which says that you must publish source too.

Anyway, looking forward to you taking the Gradle + Maven Central process forward from here.

seba5 commented 6 years ago

Thanks a lot, great feedback. We are pushing for hosting of our libs in Maven Central, the DACS however might not make it in the first roll out, so putting in the repo directly might be a good alternative that we will discuss internally. We don't want to reorganize the ESDK package every release to make things hard to find for existing users.

gauravmahajan25 commented 6 years ago

Can someone share any updates on Releasing EMA on Maven Central?

seba5 commented 6 years ago

Hi Gaurav,

we are targeting the new release to be available on maven central.

gauravmahajan25 commented 6 years ago

Thanks Sebastian!

Can you please answer below questions, as we are migrating from RFA to EMA, what are the EMA modules which can cover the below use cases which we are currently handling using RFA.

  1. Replacement for reuters session configuration. Reuters_config.xml.
  2. API support for streaming subscription.
  3. API support for non-streaming subscription.
  4. API support for chain resolving.

Request your valuable inputs for them.

On 6 Mar 2018 09:58, "Sebastian Musial" notifications@github.com wrote:

Hi Gaurav,

we are targeting the new release to be available on maven central.

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/thomsonreuters/Elektron-SDK/issues/21#issuecomment-370808568, or mute the thread https://github.com/notifications/unsubscribe-auth/ACwEE4Mzf_A06HxXehQ1As_Eb11YONuQks5tbqQigaJpZM4MlYNI .

seba5 commented 6 years ago

I would encourage you to take a look at the Docs section of the EMA Java as well as the example applications. The Consumer 100 example application shows how to implement a streaming request. The Consumer 102 example illustrates how to request a snapshot. Please take a look at this pdf for a complete list of the examples with sample implementation for different features of the API's.

seba5 commented 6 years ago

We went ahead and uploaded the upcoming release as a SNAPSHOT to maven central. Take note that the SNAPSHOT jars are not yet fully tested! We decided to make it available prior to the official release to garner community feedback on the availability of the jars on maven central

I have attached a sample build.gradle file showing the location of the SNAPSHOT jar file for EMA. build.gradle.txt

Thanks.

thomasthebaker commented 6 years ago

Thanks Sebastian. I’ll try and give the build process a test locally this week. We’ve just been running some tests with the 1.1.1.E1 release.

By the way, what’s the difference between RRG and ELOAD packaging? I came across them because I’ve been unpacking the SDK and then uploading the ema and eta jar files to our internal artifactory repository.

Thanks

Tom

On Mar 14, 2018 at 8:37 pm, <Sebastian Musial (mailto:notifications@github.com)> wrote:

We went ahead and uploaded the upcoming release as a SNAPSHOT to maven central. Take note that the SNAPSHOT jars are not yet fully tested! We decided to make it available prior to the official release to garner community feedback on the availability of the jars on maven central

I have attached a sample build.gradle file showing the location of the SNAPSHOT jar file for EMA. build.gradle.txt (https://github.com/thomsonreuters/Elektron-SDK/files/1812997/build.gradle.txt)

Thanks.

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub (https://github.com/thomsonreuters/Elektron-SDK/issues/21#issuecomment-373166155), or mute the thread (https://github.com/notifications/unsubscribe-auth/ABkrymZLALZ7VbfjiwZOQKTNIuNmXiQlks5teX-JgaJpZM4MlYNI).

seba5 commented 6 years ago

Hi Tom,

thank you for volunteering to do the test. The RRG releases are loads that went through full QA regression testing. The ELOAD (Emergency Load) releases includes bug fixes. Because of the time critical nature of Emergency Loads, the ELOADS have only been development tested as opposed to fully regression tested.

seba5 commented 6 years ago

Hi All,

the Elektron-SDK 1.2.0 Java is now published on Maven Central:

ema-3.2.0.1.jar upaValueAdd-3.2.0.1.jar upa-3.2.0.1.jar` upaValueAddCache-3.2.0.1.jar ansipage-3.2.0.1.jar

seba5 commented 6 years ago

The Elektron-SDK-1.2.0 that was just released it is utilizing gradle with maven central.