Haisam Ido <haisam.ido@gmail.com> a écrit :
My responses are below. On Sun, Oct 9, 2011 at 11:10, MAISONOBE Luc <luc.maisonobe@c-s.fr> wrote:haisam.ido@gmail.com a écrit :This may be of interest to others. I've added my crude Space Flight Dynamics as a Service (SFDaaS) application on GitHub here https://github.com/haisam/**SFDaaS <https://github.com/haisam/SFDaaS> .Thank you very much Haisam, this is interesting. I have two questions about this project. The first question is a legal one. Are people allowed to use this code, change it and publish it ? I did not find any copyright nor licensing terms. Orekit by itself is Apache licensed, to allow almost any use, but without any hint about the licensing scheme, we do not know even if we can simply use your project locally, notwithstanding modifying or republish it.Good question! Your guidance in this area would appreciated. Let me know how I can make it "legal".
It depends on what you want. If you want as many people as possible use it and if you don't mind if a few of them don't share their changes, you should go to a permissive type license, like the Apache which is already used for Orekit, Apache Commons Math, Apache Tomcat ... If you want to force every one to either share their work or not use your product at all, you should use a copyleft type license like GNU GPL.
Our rationale when we chose the license was that the space flight dynamics field is not a large market, so we could not afford upsetting potential industrial users who often don't like copyleft license, so we chose a permissive license, and since Apache Commons Math was already using Apache, we used it. I don't know if this rationale apply to you.
Whatever license you choose, you should simply put it prominently in the project, in the README file, in the source files headers, in dedicated license text files ... For Apache license, usage is to put the LICENSE and NOTICE files in the top level folder. For GPL license, you generally put a COPYING file with the GPL text.
By the way, as you distribute copies of Orekit and Apache Commons Math, you should also fulfill the requirements of the apache license for these two projects, which imply you state you use some products that are available under the apache license, and you should put their LICENSE file and merge the contents of there NOTICE files so your users can see them (see points 1 and 4 of section 4 of the Apache license here: <http://www.apache.org/licenses/LICENSE-2.0.html>).
The second question is a technical one. One of the current problem in Orekit is thread-safety (see issue <https://www.orekit.org/forge/** issues/3 <https://www.orekit.org/forge/issues/3>>. The reason this problem is not solved yet is due to data caching needs, which implies that simply adding a bunch of "synchronized" statements does NOT work (see < https://www.orekit.org/forge/**projects/orekit/wiki/SOCIS#** secure-multi-threading-in-**Orekit-while-preserving-data-** caching-features<https://www.orekit.org/forge/projects/orekit/wiki/SOCIS#secure-multi-threading-in-Orekit-while-preserving-data-caching-features>>). This is a major problem and it typically appears in web services. Thomas addressed the problems of Frames, but there are more problems like this one in the library. Did you experience any concurrency problems ? Do you have some ideas about how to solve it ?I haven't experienced it yet because my testing has not been extensive enough. I assume you're using a distributed shared memory service like memcached. I think one should setup appropriate key value pairs that take care of this. As an example, process id (PID) 111111 should have 111111 as one of its primary keys such that only that PIDs cached data is returned. If there are global data caching needs then one of the keys could be GLOBAL, etc.
We also thought about a thread-dependent cache. However, I'm not sure that a multi-threaded server would always use the same thread to answer successive requests from the same remote client.
Luc
Can you elaborate on the best regards,LucCurrently, its only capability is to propagate state forwards or backwards in time using the http://orekit.org Java library. Requirements: * Eclipse IDE * Tomcat 6.0 * apache.commons.math (included) Usage: http://localhost:8080/SFDaaS/**PropagateServlets?t0=2010-05-** 28T12:00:00.000&tf=2010-05-**29T12:00:00.000&r0=[3198022.** 67,2901879.73,5142928.95]&v0=[**-6129.640631,4489.647187,1284.**511245]<http://localhost:8080/SFDaaS/PropagateServlets?t0=2010-05-28T12:00:00.000&tf=2010-05-29T12:00:00.000&r0=[3198022.67,2901879.73,5142928.95]&v0=[-6129.640631,4489.647187,1284.511245]> Output: ------------------------------**------------------------------** ------------------------- Run Start : 2011-10-07T23:48:48.894-0400 Run End : 2011-10-07T23:48:48.907-0400 A priori state : Epoch = 2010-05-28T12:00:00.000 r = [3198022.67,2901879.73,**5142928.95] v = [-6129.640631,4489.647187,1284.511245] Posteriori state : Epoch = 2010-05-29T12:00:00.000 r = [5630517.796159,-3606350.**100536,-606046.049292627] v = [3048.698685,3756.457104,6000.**256417807639] The epochs are assumed to be UTC and r0 and v0 are in meters and in the J2000 Earth-centered frame. ------------------------------**------------------------------** -------------------------------------------------------**------------------------------**---- This message was sent using IMP, the Internet Messaging Program.
---------------------------------------------------------------- This message was sent using IMP, the Internet Messaging Program.