Speeding up AstroPy?

289 views
Skip to first unread message

Francesco Maggiore

unread,
Nov 16, 2020, 9:51:12 AM11/16/20
to astro...@googlegroups.com
What about an AstroPy version speeded up in calculations through the use of GPUs and tools such as nvc++ and Cython?

Kris A. Stern

unread,
Nov 16, 2020, 10:59:39 AM11/16/20
to astro...@googlegroups.com
Think GPU use could caused some unplanned for costs. Cython is already in use in some way. 

K.S. 

On Mon, 16 Nov 2020 at 22:51, Francesco Maggiore <frama...@gmail.com> wrote:
What about an AstroPy version speeded up in calculations through the use of GPUs and tools such as nvc++ and Cython?


--
You received this message because you are subscribed to the Google Groups "astropy-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to astropy-dev...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/astropy-dev/CABi%2B6AvEC5vzSDrUf6mLasf%2Bj2i48Unao1BZe_n2t%3DrUU%3DMAAg%40mail.gmail.com.

Kris A. Stern

unread,
Nov 16, 2020, 11:20:38 AM11/16/20
to astro...@googlegroups.com

Thanks for bringing this to our attention though. 

K.S.

Francesco Maggiore

unread,
Nov 17, 2020, 8:35:39 AM11/17/20
to astro...@googlegroups.com
Indeed, Kris. It was precisely the reading of articles like that one that recently aroused my interest, even if for years now I have started to mount Nvidia graphics cards on my workstations, and to try  exploring the HPC perspectives through the exploitation of CUDA cores.

Kris A. Stern

unread,
Nov 17, 2020, 8:37:28 AM11/17/20
to astro...@googlegroups.com
That sounds very interesting indeed...

Francesco Maggiore

unread,
Nov 18, 2020, 9:09:28 AM11/18/20
to astropy-dev
I believe that there is no doubt about the possibility of speeding up some routines through the Nvidia cards. The central point of the matter, as far as I'm concerned, is that most of these opportunities are currently open only to those who work under Unix, while they remain precluded to who - like me - prefer to work in a Windows environment.




Kris A. Stern

unread,
Nov 18, 2020, 9:14:49 AM11/18/20
to astro...@googlegroups.com
Maybe you could look into using NVIDIA GPUs for gaming laptops, sine work on Windows... 

On Wed, 18 Nov 2020 at 22:09, Francesco Maggiore <frama...@gmail.com> wrote:
I believe that there is no doubt about the possibility of speeding up some routines through the Nvidia cards. The central point of the matter, as far as I'm concerned, is that most of these opportunities are currently open only to those who work under Unix, while they remain precluded to who - like me - prefer to work in a Windows environment.


<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABP4AAALACAYAAAADoLwnAAAgAElEQVR4AeydB7QURb6H17CGDerqoq4ZzAF3jWACBHMGV8SEoCImFAREJBgQARVRMCcMoIgBEwgGQEFRUDEsQURB0WcOD/Ma6p3vf19hM8y9M9PVc+9Mz6/P6TP3zkxVV31V3TP9zb+q/uC0iYAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIpI7AH1JXI1VIBERABERABERABERABERABERABERABERABETASfypE4iACIiACIiACIiACIiACIiACIiACIiACIhACglI/KWwUVUlERABERABERABERABERABERABERABERABEZD4Ux8QAREQAREQAREQAREQAREQAREQAREQAREQgRQSkPhLYaOqSiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIg8ac+IAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIpJCDxl8JGVZVEQAREQAREQAREQAREQAREQAREQAREQAREQOJPfUAEREAEREAEREAEREAEREAEREAEREAEREAEUkhA4i+FjaoqiYAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIDEn/qACIiACIiACIiACIiACIiACIiACIiACIiACKSQgMRfChtVVRIBERABERABERABERABERABERABERABERABiT/1AREQAREQAREQAREQAREQAREQAREQAREQARFIIQGJvxQ2qqokAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAhJ/6gMiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIikEICEn8pbFRVSQREQAREQAREQAREQAREQAREQAREQAREQAQk/tQHREAEREAEREAEREAEREAEREAEREAEREAERCCFBCT+UtioqpIIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAISPypD4iACIiACIiACIiACIiACIiACIiACIiACIhACglI/KWwUVUlERABERABERABERABERABERABERABERABEZD4Ux8QAREQAREQAREQAREQAREQAREQAREQAREQgRQSkPhLYaOqSiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIg8ac+IAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIpJCDxl8JGVZVEQAREQAREQAREQAREQAREQAREQAREQAREQOJPfUAEREAEREAEREAEREAEREAEREAEREAEREAEUkhA4i+FjaoqiYAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIDEn/qACIiACIiACIiACIiACIiACIiACIiACIiACKSQgMRfChtVVRIBERABERABERABERABERABERABERABERABiT/1AREQAREQAREQAREQAREQAREQAREQAREQARFIIQGJvxQ2qqokAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAhJ/6gMiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIikEICEn8pbFRVSQREQAREQAREQAREQAREQAREQAREQAREQAQk/tQHREAEREAEREAEREAEREAEREAEREAEREAERCCFBCT+UtioqpIIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAISPypD4iACIiACIiACIiACIiACIiACIiACIiACIhACglI/KWwUVUlERABERABERABERABERABERABERABERABEZD4Ux8QAREQAREQAREQAREQAREQAREQAREQAREQgRQSkPhLYaOqSiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIg8ac+IAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIpJCDxl8JGVZVEQAREQAREQAREQAREQAREQAREQAREQAREQOJPfUAEREAEREAEREAEREAEREAEREAEREAEREAEUkhA4i+FjaoqiYAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIDEn/qACIiACIiACIiACIiACIiACIiACIiACIiACKSQgMRfChtVVRIBERABERABERABERABERABERABERABERABiT/1AREQAREQAREQAREQAREQAREQAREQAREQARFIIQGJvxQ2qqokAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAhJ/6gMiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIikEICEn8pbFRVSQREQAREQAREQAREQAREQAREQAREQAREQAQk/tQHREAEREAEREAEREAEREAEREAEREAEREAERCCFBCT+UtioqpIIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAISPypD4iACIiACIiACIiACIiACIiACIiACIiACIhACglI/KWwUVUlERABERABERABERABERAB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/lLQiGVeBYm/sAaU+Avjp9RVBCpK/HHjzE0zgoJopYcfftjmLevZs6fNQXbMMcfYPGXMaYX4O+CAA2xoI8MbGcJ4yCGH2JBE5ho74YQT3LnnnusGDRrkRowY4Z577jlbeOCbb74pqG8hP5CHSESipu655x538803O+Y1IzJqzJgx7v33318mT8QJkoV5uK688sqcO3mxMAMLLxSyEQWJqCF9TcehHKELKdSK+Jt6g/v+4gap2f87rm9RxB/9mCG3p556qtt6662tvyPz+PJY3cb5RX9+77337FzghofNi78NNtjAhgyzAAjPRTcWe2DONyILN954Y1vso7Yj/pCXRCLS32+44QaTnO+884574okn3O23325l4nkWo2DuQD8XYbQeMIARkYyPPvqovZc5B6+99lq71pCWRUw4rxCemfKOKEkii7k2cV1hLjw+7B955JEl1wWuCUQcM9ch+0svvWTXieHDh9v8hldffbVFZZKeeftmz55t7ULZ/JaU+OM6RF1oU+rGIi3IYhZWYUEXoqbhxHXXH19z/PlW0GOxCUj8FZuw8s9FQOIvFyG9XhsEJP5qg7KOURMBib+a6OR+TeIvNyO9IzeBihJ/rBrJzf306dNtjrGWLVs6opDWXHNN9/e//91tt912tshAu3btLDKJ1UqREQxDZPVSFiggDXORrbfeem611VZz6667rkUE8l6GBSM9ChmGR/QUJzM364jH3Xff3cTHSiutZAsaHH744XbznNmUCAnETJMmTdwf//jHrPuKK65oCyost9xylhdCE4lRyMYwTOZuYyGG5Zdf3pFntuMxdxs3/9zkx90k/goXksUSf/RLVtvda6+9bOEOFneIu/hCPuKP84aI28MOO8wxFyBzB9a2+EOwM4y5devWjmHJDDlGuHE9QH5yneC8ZzGSiy66yBY8QdpHN859ohcR9+Tzr3/9y/3jH/+w68vaa69t/7OQxn333WfCDCEW3ZD5ffr0MQ5cZ1g5mdWM//3vf7tNN93Urjnkyw8NRCoTlUkkJtcJrl8ci8U6WDyFBVcYms18i59++qlFCfpjhYo/JB51pbxch2AEl7XWWsv97W9/s+vi3nvv7fhRhR9ZWInZS06JP98Keiw2AYm/YhNW/rkISPzlIqTXa4OAxF9tUNYxaiIg8VcTndyvSfzlZqR35CZQUeKPlSOJRunYsaNr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

Kris A. Stern

unread,
Nov 18, 2020, 9:15:48 AM11/18/20
to astro...@googlegroups.com
Typo: sine->these

E. Madison Bray

unread,
Nov 22, 2020, 1:18:43 PM11/22/20
to astropy-dev
On Mon, Nov 16, 2020 at 3:51 PM Francesco Maggiore <frama...@gmail.com> wrote:
>
> What about an AstroPy version speeded up in calculations through the use of GPUs and tools such as nvc++ and Cython?

Hi Francesco,

There are several parts in Astropy that could possibly benefit from
using the GPU. Convolution comes to mind. However, unless you
suggest a specific use case you have in mind this discussion can't go
beyond idle speculation. Is there a use case you have that could
benefit from using the GPU?

Best,
Madison

Kris A. Stern

unread,
Nov 22, 2020, 2:59:47 PM11/22/20
to astro...@googlegroups.com
He said it is for a performance boost already. 

--
You received this message because you are subscribed to the Google Groups "astropy-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to astropy-dev...@googlegroups.com.

Aldcroft, Tom

unread,
Nov 22, 2020, 4:55:15 PM11/22/20
to astropy-dev
On Sun, Nov 22, 2020 at 2:59 PM Kris A. Stern <krisa...@gmail.com> wrote:
He said it is for a performance boost already. 

Hi Kris,

I believe Madison was asking for a specific calculation or a particular function in Astropy that could benefit from the use of GPUs. I will second their point that the discussion needs to have a narrower focus in order to help the developers see how to make Astropy more useful in research that demands such performance.

Best,
Tom
 

Kris A. Stern

unread,
Nov 22, 2020, 5:08:29 PM11/22/20
to astro...@googlegroups.com
Aren’t we (or Madison) in a better position to provide recommendations as to how to improve overall Astropy performance according to the article cited? I thought he/she should have the expertise to make such a judgment call, instead of blindly asking for some prescriptions from the user. I don’t see in Madison’s email any mentioning if either the performance issue or the original article, hence was concerned, since GPUs are in general used to accelerate graphical stuff like ones in computer vision. He/she did say there would be no further discussion is the user cannot provide further info for discussion, however, which does now seem very reasonable for me. 

Kris A. Stern

unread,
Nov 22, 2020, 5:09:24 PM11/22/20
to astro...@googlegroups.com
Typo: *now -> not. 

Kris A. Stern

unread,
Nov 22, 2020, 5:21:17 PM11/22/20
to astro...@googlegroups.com
While we are at it, we might as well also discuss the hardware requirements, since not everyone has access to GPUs like ones offered by NVIDIA graphics card. Honestly it depends on the AI software like the Intel OpenVINO toolkit to bridge the gap. In this case say my IRIS GPU in my Apple MacBook Pro suffice as a GPU... but if I have some other software then my machine is just some plain CPU. So are we or are we not going to get into AI could be a determining factor of whether to incorporate such to be “idle” discussion as well. Why could you just ask for clarification instead of assuming I am not trying to chip in my two cents? I am very concerned indeed. 

Kris A. Stern

unread,
Nov 22, 2020, 5:35:43 PM11/22/20
to astro...@googlegroups.com
I do however feel very strongly that Astropy appears to not value junior member input very highly or have the desire to groom a new generation of computational specialists to allow the sustained and further and future growth of Astropy, judging from the many personal experiences contributing to the ecosystems like participation in the discussion of this thread here. Which is fine to me since what else can I say or do anyway. I see way too many times our GSoC student developers never get promoted to any more visible positions for real codebase development upon successful completion of their projects, which truly is a disappointment on its own merits. I am simply asking can I get the basic respect from a fellow member in this instance. Maybe Tom you do have some feedback to make in this regard? 

K.S. 

Kris A. Stern

unread,
Nov 22, 2020, 11:09:57 PM11/22/20
to astro...@googlegroups.com
Hi Francesco,

Meant to send this to you earlier, but were too afraid. Now what the heck! All my guy friends wanted one of these for GPU-enabled CUDA-capable ML training on a local machine: https://www.pcmag.com/reviews/razer-blade-stealth-13-2020

It's reasonably priced while meets the minimum requirements, especially the one with the 4K screen. 

Cheers,
Kris 

Kris A. Stern

unread,
Nov 23, 2020, 2:31:36 AM11/23/20
to astro...@googlegroups.com
Also Francesco,

There is a package called astroML for offloading some machine learning tasks in astronomy in case you are not familiar with it, which originated from a book. Also there is PyTorch and Tensorflow + Keras if you plan to do ML work in astrophysics like me. (Plus something like scikit learn for more basic modules.)


Cheers,
Kris

Aldcroft, Tom

unread,
Nov 23, 2020, 8:36:12 AM11/23/20
to astropy-dev
Hi Kris,

I'm very sorry you feel this way and feedback from your experience in the Astropy project is very highly valued.

One of the highest priorities in our project has been to expand the number of core developers, helping people go beyond making a few pull requests and become regular contributors to either the core or an affiliated package. This has been the subject of much discussion at the annual developer coordination meeting and is one of our highest priorities. Unfortunately this is a challenging problem that we have not succeeded in addressing. Ideas and input about how to make this happen are most welcome.

At this point Astropy is still substantially a volunteer project and mostly a "do-acracy", which is to say that people who step up and make pull requests and comment on issues and get involved in discussions, those are the ones who end up being formally named as maintainers (what you might call "promotion"). Nevertheless we greatly encourage contributions, both small and large, from all members of the community.

The reality that many GSoC students have not transitioned to being long-term active members of the Astropy community is a tremendous disappointment to us as well. If you or others have any ideas on how we can make this happen then we would love to hear them.

- Tom

Francesco Maggiore

unread,
Nov 23, 2020, 9:20:03 AM11/23/20
to astro...@googlegroups.com
Dear Kris,
I am certainly glad to have stimulated a debate on this topic, even if it was certainly not my intention to provoke it!
However, I feel the need to clarify one thing: although I find very interesting ML researches in astrophysics like the one I'm learning now that you are carrying out, the subject of the question I asked the community about a week ago was completely different. The reason why I personally approached the world of GPUs, and in particular of Nvidia's cuda-cores, is not ML at all, but HPC, as those same cuda cores, as well as as inference engines, can be used as mathematical coprocessors to speed up complex but non-recursive calculations, such as those that in astrophysics - and in particular in positional astronomy, which is my specific field of interest - often have to be done.

Best wishes,
Francesco

Francesco Maggiore

unread,
Nov 23, 2020, 9:20:03 AM11/23/20
to astropy-dev
Dear Kris,
I am certainly glad to have stimulated a debate on this topic, even if it was certainly not my intention to provoke it!
However, I feel the need to clarify one thing: although I find very interesting ML researches in astrophysics like the one I'm learning now that you are carrying out, the subject of the question I asked the community about a week ago was completely different. The reason why I personally approached the world of GPUs, and in particular of Nvidia's cuda-cores, is not ML at all, but HPC, as those same cuda cores, as well as as inference engines, can be used as mathematical coprocessors to speed up complex but non-recursive calculations, such as those that in astrophysics - and in particular in positional astronomy, which is my specific field of interest - often have to be done.

Best wishes,
Francesco

Kris A. Stern

unread,
Nov 23, 2020, 9:39:11 AM11/23/20
to astro...@googlegroups.com
Hi Francesco, 

That’s even a more interesting topic as I don’t think many are currently tackling it. Does it happen to be something in the vein of Manodeep’s Corrfunc package?: 
https://corrfunc.readthedocs.io/en/master/index.html. I think he strives to use clusters of CPUs for carrying out n-way matching, which is pretty cool in its own right. There has been talk of some GSoC 2020 work to be carried out to establish an Astropy package for that, but unfortunately the project was cancelled due to COVID. However, if this counts as positional astronomy that definitely more discussion will surely lead to a better outcome for the plans if any future work is to be initiated. 

Cheers, 
Kris 

E. Madison Bray

unread,
Nov 23, 2020, 11:30:23 AM11/23/20
to astropy-dev
On Sun, Nov 22, 2020, 22:55 Aldcroft, Tom <tald...@gmail.com> wrote:

On Sun, Nov 22, 2020 at 2:59 PM Kris A. Stern <krisa...@gmail.com> wrote:
He said it is for a performance boost already. 

Hi Kris,

I believe Madison was asking for a specific calculation or a particular function in Astropy that could benefit from the use of GPUs. I will second their point that the discussion needs to have a narrower focus in order to help the developers see how to make Astropy more useful in research that demands such performance.

Tom read me as intended here. I'm sorry if anything in my wording suggested a desire to stifle discussion. To the contrary I think it's an interesting discussion to have, and wanted to stimulate it by asking if there was a specific use case in mind, e.g. a specific research task using existing code in Astropy on such a volume that the performance gains of using a GPU (if even feasible for this hypothetical task) would be with it. 

I did cite convolution as one such possibility that stands out as being clearly benefitting of GPU optimization if someone needed to use it for a lot of data. The existing convolution code is also already written in Cython and could be fairly easily adapted to, say, using C++ compiled with nvc++. 

But in general I think many Astropy developers are aware of the benefits of parallel computing (with or without GPU) computing as well as (at least some of) the wide variety of libraries and tools for achieving it, as well as the fact that Astropy could potentially benefit. E.g. I have thought about it before in the context of astropy.modeling. Depending on different areas of the package it could be relatively easy to do, or it could take months. So it's helpful to know if Francesco (or anyone else reading) has a specific case in mind to focus on, from which things like potential implementation details can follow, and if there's strong enough interest for anyone to actually take on the work. 

Best, 
Madison

Marten van Kerkwijk

unread,
Nov 23, 2020, 11:36:04 AM11/23/20
to astro...@googlegroups.com
Hi Francesco,

Speeding up astropy would be great, whether through GPUs or more plainly
by finding the bottlenecks and solving those (still quite a few around,
especially in astropy.coordinates, which might be particularly relevant
for you...).

For GPUs or other tricks, I think the great difficulty is to ensure that
code remains agnostic to the processor or way to switch between
processor -- one would want to avoid to become bound to CUDA or NUMBA.

Over at numpy, there has been quite a bit of effort to play nicer with
packages like dask, which led to the introduction of at least the
possibility to override how things get done (using __array_function__).
For astropy, one might want to similar see if one can get the current
code to allow using different containers for arrays (starting with
Quantity...). Sadly, I don't think this is easy, and am also not sure
astropy isn't too high up, i.e., whether efforts are not better spent on
numpy (which astropy would immediately benefit from), except perhaps in
a few parts where we've rolled our own low-level code (like for
convolution), where also simpler things like making use of CPU
vectorization may still be avenues for improvement.

All the best,

Marten

--
Prof. M. H. van Kerkwijk
Dept. of Astronomy & Astroph., 50 St George St., Toronto, ON, M5S 3H4, Canada
McLennan Labs, room 1203B, tel: +1(416)9467288, fax: +1(416)9467287
mh...@astro.utoronto.ca, http://www.astro.utoronto.ca/~mhvk

Kris A. Stern

unread,
Nov 23, 2020, 12:21:15 PM11/23/20
to astro...@googlegroups.com
Just wanted to chip in to say blog articles like https://developer.nvidia.com/blog/accelerating-python-on-gpus-with-nvc-and-cython/ where this discussion originated is highly specialized as to both the hardware and the software used, to the point where it prescribes a very narrowly focused recipe for one to follow as is. More than not the case, it will not work if one takes liberty from it. Hence, this discussion at the outset already has a very well as well as restrictive (perhaps even prohibitive) scope. This is exactly why I could not comprehend why it has to do with the architecture or design of astropy per se, except maybe on its performance, as prescribed in the article. 

K.S.

--
You received this message because you are subscribed to the Google Groups "astropy-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to astropy-dev...@googlegroups.com.

Francesco Maggiore

unread,
Nov 23, 2020, 12:36:33 PM11/23/20
to astro...@googlegroups.com
Dear friends,

I am very grateful to everyone who has spoken on the subject, and I am very pleased to see that this community is always open to new inputs, which is the only way to grow that I know!
I find the suggestion Kris provided to me in the first message interesting, but unfortunately the link she gave me doesn't seem to work, while I totally agree with what she says in the last one: I was the first to suggest reading the article by Nvidia, but I'm also the first to think that they pretend to impose their way of dealing with problems; I also agree with Madison when he points out that there are actually some mathematical libraries that could benefit most from the use of parallel computing; and of course I also agree with Marten when he says that the pursuit of greater speed must not make us lose sight of the bottlenecks that still remain unsolved.
What to tell you? If I have posed the problem it is obviously because I do not have the solution, and therefore I can only hope that my initiative can be a stimulus for the whole community!
Thanks again everyone,

Francesco


--
You received this message because you are subscribed to the Google Groups "astropy-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to astropy-dev...@googlegroups.com.

Kris A. Stern

unread,
Nov 23, 2020, 12:54:11 PM11/23/20
to astro...@googlegroups.com
No worries, it's been a good discussion. One thing I cannot help but notice though: The link of the article definitely worked and still works for me.  

Cheers,
Kris 

Kris A. Stern

unread,
Nov 26, 2020, 3:59:44 PM11/26/20
to astro...@googlegroups.com
Hi Tom,

If we look at the stats provided by GitHub: https://github.com/astropy/astropy/pulse... 

Screenshot 2020-11-27 at 4.58.10 AM.png

It appears that "excluding merges, 13 authors have pushed 45 commits to master and 97 commits to all branches" over the period spanning one week over November 19, 2020 – November 26, 2020. We have in total approximately 160 members serving the community, yet only about 1 in 12 have significantly contributed, and many of these are the core members. Perhaps this low number might have had to do with the recent release of version 4.2 of astropy/astropy. However, this low number is clearly a red flag to me in terms of the future sustainability of the Astropy Project. It looks to me most repo maintainers within the org are faculty members, who normally are overwhelmed by other duties such as publishable research. Perhaps it is time for Astropy to learn to trust a generation of younger developers and to let them have the opportunity to become co-maintainers as well, such as PhD students and Postdocs who normally would have more free time to spare (at least theoretically) and are equally competent at the tasks required? This appears to me the most obvious solution moving forward. Otherwise we will become another org that is simply "too big to fail". 

Cheers,
Kris 

Aldcroft, Tom

unread,
Dec 1, 2020, 9:24:21 AM12/1/20
to astropy-dev
Hi Kris,

It should be noted for the record the Astropy project has had quite a number of people at the postdoc or student level who have become maintainers, including former GSoC students. This sort of knowledge does require a long view of the project over its almost 10 year history, including people that have come and gone (e.g. due to leaving academia). Looking at a one-week snapshot of a 10 year project is bound to give a distorted view. I would suggest doing analysis on at least a year of activity if you'd like a clearer picture of where we stand at present.

As far as process, In order to be nominated as an astropy core maintainer, it is typical that a person will have been actively involved in the project for a considerable amount of time (at least a year and often longer) and have made numerous substantial code contributions.  They will have shown a sustained commitment to Astropy by participating actively in pull request reviews and discussions in other channels (mailing lists, slack, etc). Finally, they need to express a desire to maintain this involvement going forward and accept the responsibility of being a maintainer (interacting with users, responding to bug reports in a timely manner).  This is how trust is established, and that trust is entirely independent of age, gender identity, race, and employment status.

You are absolutely correct that recruiting maintainers and keeping them in the project is a key to future sustainability and we are keenly aware of this issue. Astropy is very much labor limited and we are thrilled when a person arrives to the project and starts making sustained contributions in any of the defined roles (including the roles that are not primarily about writing code).

Short version: make sustained and positive contributions to the Astropy project and community, and your voice will be heard. If you want the responsibility then you will be recognized with a formal role in the project.

- Tom


Marten van Kerkwijk

unread,
Dec 1, 2020, 9:50:16 AM12/1/20
to astro...@googlegroups.com
Hi Tom, others,

It would probably be good to have this short summary of how to get more
involved as a separate link in the "Developer Documentation" - I've been
asked at times how to proceed and answered essentially what you wrote,
but it might as well be explicit somewhere. The only thing to be clear
about is that it doesn't have to be code - it could be documentation,
infrastructure, tutorials, etc.

All the best,

Marten

Kris A. Stern

unread,
Dec 1, 2020, 9:52:47 AM12/1/20
to astro...@googlegroups.com
Hi Tom,

Thanks for the thoughtful response. To be honest the one week analysis is to give us a sense of the most recent snapshot at what really happened in a week’s time. It is not to be confused with some in-depth cross sectional study. 

From what I have personally experienced for the past two years since becoming active on Astropy, I do observe things that perhaps from a perspective you are not privy to. Overall, I expect that if Astropy is to grow into a bigger organisation which we expect it to be due to demand from the community, we will need more maintainers per package beyond the average two to three (active ones) we have now within the ecosystem. 

Also from what I have observed from a PhD student’s perspective, we really do need to step up and cultivate a new generation of To-be-core developers for Astropy. I have observed none of our recent GSoC alums opted to stay and contribute due to various reasons for the past three years in a row at least. This is not such a good sign. 

In summary, if we simply do not give for lack of a better way of putting it our best effort in motivating new members to stay and to contribute, but instead would rather opt for asking too much from new comers and in the process setting up barriers to their eventually acceptance is simply not an acceptable attitude for an open-source organisation, especially one of our reputation. This is also against the principle of inclusiveness which is one we have adopted. 

Thank you for your attention to this matter! 

Cheers, 
Kris


Peter Erwin

unread,
Dec 1, 2020, 11:49:34 AM12/1/20
to astro...@googlegroups.com
Hi Kris,

> On Dec 1, 2020, at 3:52 PM, Kris A. Stern <krisa...@gmail.com> wrote:
>
> Hi Tom,
>
>
> Also from what I have observed from a PhD student’s perspective, we really do need to step up and cultivate a new generation of To-be-core developers for Astropy. I have observed none of our recent GSoC alums opted to stay and contribute due to various reasons for the past three years in a row at least. This is not such a good sign.

How much should we expect this to happen, though? That is, is the “failure” of GSoC alums to continue contributing to astropy unusual in the context of GSoC projects, or even GSoC projects for scientific software? I have the impression that there is some research in this area that might be worth looking into. For example, this 2017 paper by Silva et al. ("How Long and How Much: What to Expect from Summer of Code Participants?”) notes that while about 43% of “newcomers” kept contributing more than a month past the end of the GSoC, only about 16% did so more than a year after the end. (So is astropy doing better or worse than average on this score?)

http://www.igor.pro.br/publica/papers/ICSME2017.pdf

(Arguably, the primary purpose of GSoC and similar projects is not so much “recruit new long-term contributors to projects” as it is something like “provide useful training and experience for students + contributions to a particular sub-project”. So assuming we *should* be getting new long-term contributors from GSoC might not be the best way to view astropy’s GSoC experience.)


cheers,

Peter

=============================================================
Peter Erwin Max-Planck-Insitute for Extraterrestrial
er...@mpe.mpg.de Physics, Giessenbachstrasse
tel. +49 (0)176 2481 7713 85748 Garching, Germany
fax +49 (0)89 30000 3495 https://www.mpe.mpg.de/~erwin




Kris A. Stern

unread,
Dec 1, 2020, 12:03:13 PM12/1/20
to astro...@googlegroups.com
Hi Peter,

I feel that’s a question for you or the Astropy core community to answer. It wouldn’t be appropriate to ask me since it’s like blaming the victim here. BTW, since being made a core member of SunPy recently after two GSoC projects with them, as well as having the privilege to either converse with or befriend all the Astropy GSoC alums from 2018 after, I do feel the pain for them more than for myself. I have always been lucky that way. Please don’t attack me personally for a fault that you are a part of implicitly by some research or another. We are people too, not some stats. 

Thanks,
Kris 

--
You received this message because you are subscribed to the Google Groups "astropy-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to astropy-dev...@googlegroups.com.

Marten van Kerkwijk

unread,
Dec 1, 2020, 1:02:29 PM12/1/20
to astro...@googlegroups.com
Hi Kris,

Before anything else: I think I speak for all of us if I ensure you that
nothing written here is meant personally or as an "attack". You bring
up good points and we want to improve, but we are, like everyone else,
limited by the number of hours in the day. Furthermore, many of us are
volunteers, and at least for me working on astropy is partially
something that I like because I can do something concrete and
constructive *myself* -- I don't mind supervision in principle, but my
day job has a lot of it already...

For GSoC, the main point Peter made seemed simply that one should not
assume that the goal is to train maintainers. And this is certainly
true for some: one student Tom and I jointly supervised made a great
contribution to astropy, but for her being part of GSoC and working on
astronomy was important in part to make connections and switch from her
background in computer science to astronomy. And it succeeded as it
helped her to get into graduate school here at UofT, where she is doing
very well. I think we can all agree that it is completely fine that she
has not contributed further to astropy: GSoC helped both her and astropy.

But what is worrying is that, from what you write, it seems like there
are other specific students who made good contributions who would have
wanted to continue to work with astropy, but we let that opportunity
slip. Do you have practical suggestions on how to improve that? (Beyond
the simplest possible, to lay out what the process actually is...)

A larger problem may be that astropy is becoming quite well developed,
which means that it requires increasingly higher skill levels to tackle
issues. And we are learning the hard way that every increase in the
code comes with increased maintenance... As a result, it is becoming
less and less clear that GSoC is a suitable programme for astropy (same
reason numpy doesn't really do GSoC) -- a GSoC on *trimming* code is not
very exciting....

But of course this all just makes clearer that more help would be
useful....

Anyway, as noted somewhere in the longwinded e-mail, concrete
suggestions are most welcome!

Erik Tollerud

unread,
Dec 2, 2020, 2:03:29 PM12/2/20
to astro...@googlegroups.com

To echo some of what Marten said above: your feedback is appreciated, Kris, and anything below is not meant as a blame or anything like it, but rather some explanation and exploration of potential solutions.

So with that in mind, I think I agree it's a *goal* but not an *expectation* for GSoC to lead to maintainers. I've mentored several GSoC students over the years, and in practice some have had the interest and  motivation to continue, while some have not. In my mind it's a lot like a "first project" that some PhD programs do - you work with a potential advisor to see if it's a good fit, but if not (and if the department is well-run...), you can switch to another one and try again. It's hard to know if you work well in a given environment until you try it! So in my mind we only expect some fraction to continue at all, and a subset of those to grow into a maintainer role. That's OK and even good to not force people to do things they aren't enjoying, as long as everyone knows that going in (which is a thing we need to fix if you don't think that understanding is known, Kris!). 

Having said that, I do think we have a bit of a GSoC issue that we've been struggling to get enough projects and bandwidth of mentors (certainly I *personally* have been struggling with this the last couple cycles). So it wouldn't be surprising if that leads to other problems, like either not communicating clear enough expectations of post-GSoC roles, or ensuring that the "right fit" process I'm describing above doesn't turn into a *biased* process (which is a very real danger we should be aware of!). I don't want to say too much about concrete fixes given that I haven't been able to mentor the last couple cycles, but I certainly would be interested in ideas of fixes if there's an issue there.


More broadly, as Tom said, it's been a long-term goal with at best uneven efforts to boost our contributor-to-maintainer pipeline. I posted an article about this on slack a few months ago about how this is definitely not unique to Astropy but is a broad problem across open source.  So there probably are not quick fixes, we have to keep working on this all the time. A good example of this is an idea that has come up several times as something pretty much everyone wants to see happen: a mentorship program to shepherd contributors into maintainer roles. But thus far no one has been able to summon up the bandwidth to make it happen since this sort of thing is very real work. I wonder if it would be useful to learn from this conversation and begin that program *specifically* focusing on past or incoming GSoC students?


So while there's probably no quick fixes on this, to do at least *something* on it right now, Tom A and I pushed through an update to the Astropy front page to give a bit more guidance on how to move into some of the more formal roles - see https://www.astropy.org/contribute.html#formal-project-role . Feel free to suggest clarifications or additions to that in the astropy.github.com repo!


And one other thing I wanted to mention: while feedback in public like this is definitely welcome and good for our community, anyone who wants to bring something up that they do *not* feel is suitable for public discussion can always send it to confid...@astropy.org, which goes to the ombudsperson (who may show it to the coordinating committee only if there's not a conflict of interest).

---
Erik T


--
You received this message because you are subscribed to the Google Groups "astropy-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to astropy-dev...@googlegroups.com.

Kris A. Stern

unread,
Dec 7, 2020, 5:13:39 AM12/7/20
to astro...@googlegroups.com
Hi Marten and Erik,

Thanks for the kind words and apologies for the delay in replying since I got sidetracked by some unforeseen circumstances. 

I agree with all of your concerns and find them valid actually. But the reality is that we need to secure financial support for some sustained form of apprenticeship-style training in order to recruit and absorb calibre software developers who are ideally also a member of the academia to improve our talent pool, while hoping against all odds that they would be willing to sacrifice a handsome chunk of their life possibly without pay and on a voluntary basis (much like what I am doing actually) to commit to the Astropy project. Our only options at this stage are likely Google Summer of Code and Outreachy, both paid internships supported by private corporations to facilitate engagement in open-source software development. 

Alternatively, I see the recent proposed funding as administered by our former ombudsperson Steve Crawford now with NASA as a potential funding opportunity for some such efforts of active engagement or recruitment (or whatever it is called  based on the actual implementation) like the ROSES.grant(s) opportunity. 

Anyway I feel it will probably take someone of a more senior position as well as with voting rights to perhaps follow this up. I am always open to dialogue however. 

Cheers,
Kris 

E. Madison Bray

unread,
Dec 10, 2020, 2:09:39 PM12/10/20
to astropy-dev
Hi all,

I've been meaning to follow up to this interesting discussion with a
small point for a while, but have been under water with other things.
I think most of the points I was otherwise going to make have been
addressed by others.

One thing I wanted to mention is that the in-progress draft of APE-0
[https://github.com/astropy/astropy-APEs/pull/61] does lay out some
guidelines for how one becomes a "Voting Member" of the project aka
core maintainer. I was thinking (based on memory) that while APE-0
laid out the rights and responsibilities of Voting Members it didn't
have much to say about how one becomes one. Actually that's not true;
on re-review it does list some minimum requirements.

However, it doesn't necessarily serve as a guide to someone who would
be interested in actually trying to meet the requirements.

To this end I was reminded that the Python developer documentation has
a contributor-oriented guide on how to become not just a contributor
(that's separate) but specifically how best to go about becoming a
"Core Developer". I think a lot of this might be useful to adapt into
a similar guide (separate from APE-0):
https://devguide.python.org/coredev/ In particular, it interestingly
proposes someone serve as a "mentor" for someone newly given commit
rights to the repository. As any GSoC mentor can tell you this can be
a non-trivial amount of time to ask of someone, though in this case
it's typically reserved for someone who's already shown their mettle
in other issues, and probably doesn't need a lot of "hands-on"
mentorship.

Just thought I'd bring it up.

M
> To view this discussion on the web visit https://groups.google.com/d/msgid/astropy-dev/CAMxZ8Sn1z3%3DXZUROhJxihOdZ6mP5en4Yw2mVg745HmFVE4zWQA%40mail.gmail.com.
Reply all
Reply to author
Forward
0 new messages