OrekitCSharp : C# version of Orekit

Hello everyone,

Is anyone interested in a C# version of Orekit ?

At Neoxio, we work extensively in C# and we would like to integrate Orekit into some of our products. We have already tried the wrapper approach, but we are not satisfied with the performance.
So, we have decided to transcode Orekit and Hipparchus to C#.

The goal is to make it available to the entire community once we have completed the work. We will regularly update on the progress of the project, and here are the main steps :

  1. Transcoding and initial compilation
  2. Publishing the sources online (public access)
  3. Pre-validation (implementation of comparative tests in Java vs C# for our main requirements)
  4. Release
  5. Extended validation (implementation of comparative tests in Java vs C# for all methods)

From step 2 onwards, any help from the community is welcome :blush:

If you have any questions or remarks, feel free to respond to this post.

See you soon,

Benoit,
Founding Member of Neoxio

Hi Benoit and welcome to the Orekit forum !

This is a very interesting idea and such a tremendous task ! I will definitely look out for your progress :+1:.

Likewise, if you have any issues regarding things you do not completely understand in the source code, feel free to ask any questions you may have on the forum.

I’m cheering for you !

Cheers,
Vincent

I have very strong doubts about the viability of this project.
If you need to transcode everything, it will be a huge task, and once done you will have to maintain and port every single change in the main libraries back into the transcoded version. The Orekit team has already quite some work on its plate, so will most probably not be able to help, you will be almost alone there.
So at the end, I fear it will end up just as another fork maintained by a single entity and diverging from the public Orekit library. Do you think you will be able to maintain this?

1 Like

Thank you @bdelaforge for the idea and welcome to the Orekit forum!

As Luc said, translating Orekit in C# will represent a lot of work. Maintaining it according to new Orekit versions will also represent a lot of work.
Because we already have a lot of work in maintaining the Java version, I’m not sure we will be able to provide help in the development. If your project is open-source maybe some Orekit nerds will help you. But we will be happy to answer questions on the forum!

Good luck in the development! :slightly_smiling_face:

Bryan

Hi Benoit,

It’s great that you guys are using Orekit. I think that rewriting it in another language is a huge challenge. And so is maintaining it actually, coz the dev team releases early and often (I mean we try). Wrappers single handedly managed can already be short-lived.

Besides somewhat enhanced performance, I would say that the main advantage of using another programming language would be to leverage operator overloading in order to avoid having to rewrite everything “with words” basically for Field stuff. Kotlin would be the best candidate probably given its tight link to Java. Anyway, not sure C# nor Kotlin are very much used in the astrodynamics community, so there’s also that…

Good luck, I’ll keep an eye on your progress.

Cheers,
Romain.

Hi Benoit,

At CS GROUP, some initiatives had emerged to transcode Orekit (in C++). In fact i’m working in image processing department where Python and C++ are commonly used. We used extensively Rugged for geolocation function when dealing with earth observation optical satellites. JAVA programming langage is a constrain for us. However this initiative to transcode a part of orekit (hipparchus rotation/vector,… and orekit date and frame ) has been cancelled for some reasons :

  • It’s a very huge work
  • Maintenance is not garantee
  • The community use JAVA and it’s python bindings

Actually for python project we use a python version of Rugged, with python binding of OREKIT (wih some performance issues)

I’m very intersted in your initiative and keep us aware of your advances