Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.Sign up
SOCIS 2017 Application
SOCIS website Application deadline: ?
Describe in a few words your open-source project, why would you like to participate in SOCIS and what do you hope to gain by participating.
poliastro is an open source library that helps perform calculations common in Astrodynamics and Orbital Mechanics with a focus on interplanetary applications. There are other open source libraries, such as Orekit and the SPICE toolkit and also COTS software such as STK, and with poliastro we aim to provide a different approach focusing on interplanetary problems, carrying all our development work in the open and using Python as a core progamming language.
Python is already a well-known language in many fields of Science, specifically in Astronomy, but hasn't seen its breakthrough in some areas of Engineering because of performance or type-safety concerns. We defend that not only Python is a great language for prototyping and scripting, but can also be a powerful tool for critical products - and besides, the openness, diversity and generosity of its community can bring big improvements on how we think about Engineering in general and the Space industry in particular.
Participating in ESA Summer of Code in Space would help poliastro gaining popularity within the Astronomical Python community, broadening its user base and establishing a true community in which several developers contribute to the project and make decisions about its future.
Describe your project's connection with space activities.
Computing the trajectory of interplanetary spacecraft, such as the New Horizons or Rosetta missions, is an extremely difficult task that must be carried out with utmost precision and is nevertheless subject to live corrections. One of the most stringent requirements is the amount of propellant that the spacecraft can carry on board, which is needed for any such maneuver or correction. To lower it as much as possible, the gravity of major bodies is used to change course and only small corrections are needed in specific moments. The branch of Physics devoted to the study of these trajectories is Orbital Mechanics (also known as Astrodynamics).
In the preliminary phases of the orbit design, several low-precision computations are carried out that do not take into account all the effects on the spacecraft but serve as an approximate sizing of the mission and as an initial guess for more sophisticated optimization methods. The mathematics behind these computations are relatively simple but the algorithms to perform them have to be very fast because often we want to map a solution space to visualize launch opportunities, estimate fuel consumption or solve the boundary-value problem.
poliastro provides fast algorithms to solve common Astrodynamics problems that appear in the preliminary phases of the orbit design (accelerated using Just-in-Time compiler technology) and a user-friendly Python API carefully designed so conversion between different orbit representations is easy, physical units are used everywhere without sacrifying much performance and simple plots can be made to get a picture of the problem.
All packages within poliastro will be distributed under the MIT License.
If there is a need to use existing code distributed under an incompatible open-source license, that package will be made available as a separate download.
Juan Luis Cano
Administrator email contact
hello [at] juanlu.space
SOCIS ideas page
Criteria for selecting mentors
At the moment the poliastro community is very small and the only available mentor is the project administrator, who has long experience in Python development and Orbital Mechanics and will be held responsible for the student(s).
For the reasons stated above, in case the mentor encounters an insurmountable inconvenience, we will first reach the user mailing list in hope some other poliastro user can oversee the student for the rest of the program and in case that is not possible we will tell the SOCIS committee as soon as possible to terminate the program.
In the event of a student not showing progress we will first try to communicate with them in case there is some sort of problem regarding the coding environment, the software itself or some missing skill that is preventing them from working on the project. We will then try to solve those problems in the best way we can.
Finally, if a student stops responding in all communication channels for an unexpected period of time of more than ten days, we will understand that they broke the agreement or do not want to be part of SOCIS anymore and we will promptly tell the SOCIS committee so they can take further action.
Interaction with students during and after the program
How do you plan to encourage the students to interact with your project's community before, during and after SOCIS? How are you going to ensure your students' continued involvement with the project after SOCIS concludes?
Before SOCIS begins we will encourage all candidate students to set up a Python development environment, download the latest development version of the code, run the tests to check that everything works as expected and glance through the examples. They will also be encouraged to try and fix some easy issues identified by us or increase the test coverage of particular functions so they start feeling comfortable with the pull request and code review processes. We are still considering the possibility of organizing an Orbital Mechanics master class via videoconference so they all understand the basics of the subject of the library.
When the selected student(s) is finally on board we will encourage them to regularly blog about their progress and create example Jupyter notebooks with applications of the library as they gain understanding of the code. Most of the discussion will take place on the public chat and, for more specific technical details, in GitHub issues.
After the program has finished, the mentor will be in charge of merging the code produced by the student as soon as possible so they can feel rewarded by their work, and also offer the opportunity to stay in touch with the community for future developments, participation in Python conferences and perhaps publishing one or several papers in engineering congresses and journals.
ESA Summer of Code 2017 will be recognized as the sponsor within the documentation of the packages developed under this programme.