GSoC Diaries 4.02: Wrapping up

Hello World!

The obscenity of time dumbfounds me as I find myself staring down the barrel of this final blog for my GSoC project. The past three months were filled with coding, debugging, optimising, taking feedback and working on suggestions. It feels like I just started contributing to Astropy, indeed how time flies!

For all those who haven’t been following my blog, my GSoC project “Learn Astropy” is with Astropy, an organisation under the umbrella of OpenAstronomy. Astropy is a python library which contains key functionalities and common tools needed for performing astronomy and astrophysics with python.

Astropy is a very welcoming and active community of like-minded people sharing common passion and interest for Astronomy. The community was very responsive to all my pull requests and doubts. I would like to thank the entire Astropy community, especially my mentors Kelle, Adrian and Erik for being to so helpful and supportive at every step.

My GSoC Project

Over the summer I worked on “Learn Astropy”, a website for the Astropy Learn ecosystem. The Learn ecosystem includes the Astropy documentation and associated examples, Astropy tutorials, and guides. The goal was to make the Astropy Learn ecosystem more organised, accessible and efficient by adding features like dynamic search that works across all of the Learn resources. Astropy aims to provide users packages that improve reuse, interoperability, and interface standards for python astronomy and astrophysics packages. Learn Astropy will help both amateurs as well as professional astronomers and astrophysicists in exploring and implementing the various utilities and functionalities provided by Astropy. It will also simplify the process for anyone who is learning to work with python astronomy/astrophysics packages or anyone developing astronomy software.

The project involved optimising the dynamic search, making custom Sphinx directives, indexing and tagging of Astropy Learn material. Work was also done on user interface design and user experience. I worked primarily with javascript and python, and used Sphinx for generating the html build files from jupyter notebooks. The project “Learn Astropy” was a very good learning experience as it gave me an exposure to open source development and at the same time allowed me to work with a community passionate about Astronomy and Computer Science.

It was truly a Eureka moment when my pull request successfully passed both Travis build and Circleci build.

Features

  • Dynamic Search across all the Astropy Learn material: A feature that searches for the query in all the Astropy Learn material simultaneously and displays the results in a unified list. The results are displayed on placards which are colour coded for different learn materials, have a thumbnail and an abstract to give the user a much better idea of the content. This search feature is implemented by extending and tweaking the default Sphinx full text search. Currently the dynamic search looks through the Astropy tutorials and documentation. This will be extended to Astropy examples and guides. I have covered this more extensively in this blog.
  • Filter by keyword: A list of relevant keywords are displayed on the sidebar which have a corresponding check-box. These check-boxes can be selected to apply filters by that keyword which narrows down the search results. It is possible to select multiple filters. This helps the user to easily find what he/she is looking for. To further improve the efficiency I have made these filters searchable. More on this here.
  • Navigation sidebar: All the tutorials have a table-of-contents sidebar, which has clickable links to the corresponding section. This gives the user an overall idea about the contents of the page and helps him/her to efficiently navigate through the page.

Other than these, there are some small features like scroll retention, intuitive user interface, thumbnails, toggle for guides placard, etc.

What next?

GSOC 2018 may be coming to an end but my passion for Astronomy isn’t going anywhere. I want to contribute more to the Astropy community. The successful completion of the intended work has opened up new avenues to extend my work, like making a Sphinx plugin to extract examples from the Astropy documentation and developing a unified theme for all of Astropy. I have already started working on them and will continue even after my GSoC period ends.

All in all my GSoC experience was a memorable one and one that I will cherish. What made this special was the work, the learning and the people who came together to help me complete this amazing journey.

Signing off…

PS: Huge shout out to Numfocus for promoting me.