NumFOCUS small development grants round 3 CFP

78 views
Skip to first unread message

Aaron Meurer

unread,
Aug 5, 2022, 4:10:13 PM8/5/22
to sympy
NumFOCUS has opened 2022 round 3 of their small development grants. 

NumFOCUS small development grants allow funding NumFOCUS projects, such as SymPy for work. Each project may submit at most one grant proposal.

If anyone is interested in applying for this grant to do some work on SymPy, please reach out to me. In the past, we have used these grants to pay people to do maintenance work and to pay people to develop some features.

I have included the details below. If you are interested in applying, please reach out to me about it by August 26 so that we will have time to create and submit a proposal to NumFOCUS.

Timeline:

  • Deadline for Proposal Submission: Sep 02, 2022

  • Projects will be Notified: Oct 14, 2022 (or sooner)


Available Funding:

  • Approx. $90,000 available to be awarded

  • Up to $10,000 per proposal


Eligibility:

  • Any NumFOCUS Fiscally Sponsored or Affiliated project may submit one proposal on behalf of the project per grant cycle.

    • If you wish to solicit proposal ideas from your project community, the project leaders must organize their own review process to select the proposal that the leadership will put forward to NumFOCUS.

  • Funding can be used for: code development, documentation work; website updates; workshops and sprints; educational, sustainability, and diversity initiatives, travel to meetings & events, or other types of projects.

  • Proposed work must be achievable within the 12 months following the award.

  • The call is open to applicants from any nationality and can be performed at any university, institute, or business worldwide (US export laws permitting).


Funding Distribution:

  • For fiscally sponsored projects only, NumFOCUS can deposit the grant funding directly into the project’s account. The project would then submit invoices through the usual channels (i.e. Open Collective) to pay the grant expenses.

  • NumFOCUS can set up an independent contractor agreement with an individual or company for work that exceeds $600 USD.

  • NumFOCUS can award the money as a grant or subcontract to a student or postdoc at a university (depending on the university's rules).

  • NumFOCUS can directly pay for expenses associated with the grant (e.g. booking flights on behalf of project leaders to attend a workshop, per diems for travel days)


You can see past successful proposals here:  https://numfocus.org/programs/small-development-grants.


Aaron Meurer

phi ARCHITECT

unread,
Aug 29, 2022, 10:47:43 AM8/29/22
to sympy
Hi Aaron and the Sympy team ~

I hope I am not too late to propose the GEOMETOR Explorer project for a NumFOCUS development grant.

GEOMETOR Explorer is a Python library for modelling, analyzing and rendering complex geometric constructions using symbolic algebra. Of course, Sympy is at the heart of it. 

But first, an introduction. My friends call me phi, as in φ, the Greek letter, for reasons that will be obvious. I am not a mathematician, but I have had a career as an architect beginning with buildings and later in developing software and enterprise systems. But my true love has always been drafting - making beautiful drawings.

A few years ago, I decided to indulge my interest in the golden ratio, particularly making geometric constructions that demonstrate golden sections. I started with hand drawings, reteaching myself geometry and algebra. I noticed that constructing one golden section often led to other sections in the field. It seemed to be everywhere. But the challenge of demonstrating that was daunting. I first turned to Geogebra, which greatly expanded my knowledge allowing me to create large geometric constructions and confirm the golden sections, but it required a lot of manual intervention and the results were numeric values. I felt if we were to really discover patterns, we would need to build the model symbolically.

I set out to develop an scriptable system to generate the constructions, find all intersection points, and then find all the golden sections. After a false start with a browser-based solution, last January I found Sympy and Matplotlib. I had never worked with Python before so it was a big step, but the capabilities I have been able to pull together in less than a year are amazing to me.

The most recent video on my YouTube channel demonstrates a series of constructions generated with GEOMETOR Explorer resulting in an incredible numbers of golden sections uncovered.
22.187 • finding golden sections with the new GEOMETOR Explorer

GEOMETOR on Github
I have established a Github organization (https://github.com/geometor) to be the center of all of the development and interaction around the projects, including hosting websites and documentation.

Shifting GEOMETOR Explorer to Python has led me to shift all my content development and publishing tools to Python, as well. This will allow me to standardize on ReST for everything. So, the websites are in a state of flux but I have most the infrastructure in place.

There is a lot to further develop. At the core are the GEOMETOR Explorer libraries. The current version in the main branch is very "scripty" - grown organically as I was learning. In the develop branch, I have started refactoring the library into a simpler and more functional interface and adding documentation. I also want to add more analysis capabilities to identify harmonic ranges / symmetries. And ultimately, publish a reliable version for anyone to use on PyPI.

Context for further development:
  • Deep Field project
    how many elements can we add to a geometric model?
    how many more golden sections in the field?
    generating large models is compute intensive -
    will it push Sympy to limits?
  • Euclid project
    create a functional hierarchy of all the constructions of Euclid's Elements
    development on parsing the heath edition
  • Phyllotaxis project
    study golden ratio and fibonacci patterns in plant formation
    3d modeling
  • Polynumbers project
    based on the lectures of Norman Wildberger
    introduces polynomials into the Explorer capabilities
    crazy cool renderings
  • Pappus project
    demonstrate Pappus Theorem with analysis
    leading to Hexagrammum Mysticum.
  • Heptadecagon project
    create a symbolic construction of a regular 17-sided figure
I hope this is enough to start a conversation. I have been wanting to step into the Sympy community for some time. Consider it done.

I have two YouTube channels if you want to see more:
  • phi ARCHITECT channel
    where I talk about what I am working on
  • GEOMETOR channel
    generated content from the research. The most recent videos were generated, orchestrated, accompanied and assembled with Python.
Let's see if any of this is a good fit for a grant!

~ φ

Aaron Meurer

unread,
Aug 29, 2022, 3:57:40 PM8/29/22
to sy...@googlegroups.com
Hi.

Thanks for sharing. This looks like a great use of SymPy and other tools in the Python ecosystem. I'd love to see more geogebra-like tools that make use of SymPy and sympy.geometry to get exact algebraic expressions surrounding geometric constructions.

On Mon, Aug 29, 2022 at 8:47 AM phi ARCHITECT <illu...@gmail.com> wrote:
Hi Aaron and the Sympy team ~

I hope I am not too late to propose the GEOMETOR Explorer project for a NumFOCUS development grant.

The deadline is this Friday, so it's possibly too late. Can you go into detail on what you'd like to propose to do? I'd prefer for these small development grants to go towards making improvements to SymPy itself, rather than to projects that make use of SymPy. But perhaps there are some improvements that you've seen that could be made to sympy.geometry while working on this. 

Also, generally speaking, I'd like to use the small development grants to fund people who have already contributed to SymPy before, so that there is a clear track record that they are able to complete the work.

Aaron Meurer 
 
--
You received this message because you are subscribed to the Google Groups "sympy" group.
To unsubscribe from this group and stop receiving emails from it, send an email to sympy+un...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/sympy/79e109f0-3588-4817-b644-056950297b13n%40googlegroups.com.

phi ARCHITECT

unread,
Aug 30, 2022, 10:16:45 AM8/30/22
to sympy
Hi Aaron ~

Thanks for your quick reply and encouragement. I definitely understand we may be running into a time crunch. And I understand that you want to drive the development of Sympy.

Perhaps we could come up with a small, straightforward project that gets the ball rolling on making Sympy the foundation for a Geogebra style app for building geometric models.

My next step for GEOMETOR Explorer is to consolidate the construction logic into a Model class, which could easily become a part of sympy.geometry. The Model can extend from List - so it is just a container of elements. But it would also handle:
  • deduplicating elements
    determine if an new element is already in the list.
  • finding intersections
    test new elements against previous elements for new points.
  • maintaining ancestral relationships
    points contain references to all parent structures.
    structures contain references to all the points on them.
    the ancestral trail of an element is its proof.
  • applying classes to elements
    like css, associate a list of class names to an element.
    classes could be used in rendering and analysis.
    classes could also be used to exclude a structure from testing intersections.
  • querying subsets
    provide filtered lists for specific element types or classes
In the work I have done so far, I have come to think of elements in 3 categories:
  • points
    the data of the model.
    all points are derived except the given starting points.
    points are the food for structs.
  • structs
    the relationships of the model (lines and circles so far).
    structs are not a thing in the field, just a projection of a relationship of two points.
    intersecting structs create points.
  • graphics
    the highlights of the model (segments, polygons, wedges).
    like structs, but are used for highlighting a relationship of 2 or more points
    and extracting details (length, area, etc).
    graphics are not tested for intersections by default.
I am heading towards subclassing the sympy.geometry elements (Point, Line and Circle) to create attributes for classes and ancestral info that would be managed by the Model. But I can also see a path for maintaining this info outside of the elements in the Model.

One of the key considerations I have had from the beginning is to keep the Model separate from the rendering and analysis processes. While I am using Matplotlib today for rendering, I see the opportunity to do really cool things with Blender and FreeCad as well. And for analysis, I have implemented golden section identification so far, but I can see modules for cross ratios, harmonic ranges, etc.

Regardless of the decision on the grant, I am committed to developing these concepts. And now that I have opened the door, I hope to share my progress with the community here and hopefully gain insight and knowledge to make the project successful. And I believe that independent work on the Model class could be integrated with Sympy at a later time, once the ideas have matured. The whole concept is pretty straightforward.

Thanks again for your attention.

~ φ (phi)

Aaron Meurer

unread,
Aug 30, 2022, 4:52:10 PM8/30/22
to sy...@googlegroups.com
My view is that it's cleaner to keep track of this sort of data separate from the symbolic objects, rather than subclassing them (this applies to any sort of SymPy expression, not just geometry objects). The immutable design of SymPy objects makes this pretty straightforward. Just store the metadata in a dictionary.
 

One of the key considerations I have had from the beginning is to keep the Model separate from the rendering and analysis processes. While I am using Matplotlib today for rendering, I see the opportunity to do really cool things with Blender and FreeCad as well. And for analysis, I have implemented golden section identification so far, but I can see modules for cross ratios, harmonic ranges, etc.

Regardless of the decision on the grant, I am committed to developing these concepts. And now that I have opened the door, I hope to share my progress with the community here and hopefully gain insight and knowledge to make the project successful. And I believe that independent work on the Model class could be integrated with Sympy at a later time, once the ideas have matured. The whole concept is pretty straightforward. 

So I guess the question then is whether sympy.geometry should have some code that is tied to geometric constructions. It sounds like it could be useful, but I'd also like to hear feedback from some of the users of sympy.geometry on your proposal (I personally don't use it very much). 

I think we should skip this round. As I said, I prefer to fund people for this grant who are already experienced SymPy developers. So far you haven't contributed any code to SymPy (correct me if I am wrong). Furthermore, I feel like your proposal requires a lot more feedback and thought than can reasonably be done in a few days. I would suggest opening an issue in the SymPy issue tracker to discuss any thoughts for extensions to sympy.geometry, so we can discuss there whether the design makes sense and whether the suggested improvements would be in scope.

However, the NumFOCUS small development grants are done regularly (see https://numfocus.org/programs/small-development-grants), so please keep an eye out for future calls. 
 
Aaron Meurer

phi ARCHITECT

unread,
Aug 31, 2022, 2:29:54 PM8/31/22
to sympy
Hi Aaron ~

I think this is a good strategy. Let's continue developing and communicating. I would welcome any feedback and creative discussions. Feel free to connect me with anyone you think would be interested in the concepts behind Explorer.

As you suggested, I will start on the following:
  • setup a SymPy dev environment -
    I have not contributed yet, so first step is to get setup. There is so much to learn from getting a closer look at the architecture, as well. And I want to follow the same standards you are, particularly for documentation.
  • make some videos on how I am using SymPy in Explorer -
    I think this will be a good way to start a conversation about the concepts and functionality in Explorer. I will share these here on the forum if that is OK.
  • make a proposal on GitHub Issues -
    making the videos first will help to gather my thoughts and provide background for the discussion.
I really have no qualifications for any of this. I just want to build some tools to answer some questions I have. And perhaps we can find some patterns that can reveal a larger truth. This has been a solitary effort for some time, so I am grateful to make this connection and for being taken seriously.

SymPy has been an epiphany for me. Thank you for the work you are doing.

~ φ

Aaron Meurer

unread,
Aug 31, 2022, 3:43:26 PM8/31/22
to sy...@googlegroups.com
Great. Looking forward to it. And don't worry, most people who have contributed to SymPy aren't really "qualified". Most people are hobbyists or students who are interested in some aspect of symbolic computing, often motivated by some other project such as yourself.

Aaron Meurer

phi ARCHITECT

unread,
Aug 31, 2022, 11:08:17 PM8/31/22
to sympy
BTW - I embedded the attached image in my first message but it got filtered out. Here it is again, hopefully.

1281 golden sections in the field.

More to come.
summary.png
Reply all
Reply to author
Forward
0 new messages