-
Notifications
You must be signed in to change notification settings - Fork 224
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Policy on wrapping new GMT modules step by step from initial implementation to gallery example #1599
Comments
Thanks for the great write-up! I agree with both points about issues being ideal for tracking and also a bit of a hassle. Maybe it's just that I am not used to it yet, but I find it a bit difficult to determine where on the path to completeness a module is based on the project board. What do you think about having a separate |
I think this is a good idea. It's easy to say we want to wrap something in small, manageable chunks, but that's not specific and someone new to the project (or not new at all) may be confused on what the expectations are for wrapping a function. |
@weiji14 Are you envisioning this as an addition to |
Yes, I think it should be in |
I'm starting to get a bit more used to the project board and think this could be really helpful. I have a couple suggestions:
|
I'm a fan of the project board as well; I think it makes it easier to look at the big picture and see what tasks need to be done, rather than look to find issues for specific modules to see if they need additional features.
I don't think we have many new modules being tracked by an issue. I think it would be easiest to transition existing feature request issues to the project board, rather than leave issues open for potentially a long time while we wait for the later stages of a module getting wrapped.
Agreed. |
What do you think about modifying the project board so that the modules are placed in the column that requires completion rather than the column that has been completed? I think this would be more clear for finding out what needs to be done and would better account for the fact that not all steps are always completed in order. For example, wiggle is currently in the column 'Added gallery|tutorial example', which is true but not that helpful because it still has missing aliases. My suggested columns are:
|
Sounds good to me. Should we start to use the Projects (beta) instead? |
I think it is a good idea for modules to be in the column with work to be done instead of work last completed. I'm not opposed to Projects (beta), but looking at the GitHub page for it, I'm not sure what it will enable us to do that isn't already covered on the current module wrapping project. |
I don't know of a way to transfer projects from Projects to Projects (beta) anyways. Maybe they will add this feature when it's out of beta. For now, I think we could start try out Projects (beta) for new projects. |
The Projects (classic) has been sunset on August 23, 2024 and now we're using the new Projects at https://github.com/orgs/GenericMappingTools/projects/3. There are many differences between the classic and new Projects. To me, the most significant difference is that, in Projects (classic), items can be linked to issues, PRs, or notes, while in new Projects, notes are drafts that can be converted to issues with one click. This change is important since we can comment on issues but can't comment on notes.
When wrapping GMT modules, the most complicated thing is that each module usually have several options and many different features. So the stages previously proposed (quoted below) won't help much, because the "Add missing aliases" step will take years to complete and it's difficult to track whether an option or a feature is implemented or not.
Since in new Projects, each item should be linked to an issue or a PR, I think we can combine the functionality of both issues and project cards. Here are the steps in my mind:
For the Projects board, currently it has 6 columns, from "wishlist" to "On going maintenance". I feel we can simplify it to 3 columns,
|
I just realized the sub-issue feature (currently beta) as announced in https://github.blog/changelog/2024-10-01-evolving-github-issues-public-beta/. I haven't had the opportunity to try it yet, but it looks promising. With the sub-issue feature, I feel it makes more sense to have a "central" issue for each module and have sub-issues for related detailed issues. I've signed up the waiting list for the GMT organization and hopefully, we don't have to wait too long to try it. |
Description of the desired feature
Wrapping a new GMT module in PyGMT is usually a big task (as we've learned the hard way from #804), so it's better on both the contributor and reviewer(s) if small, manageable chunks are done (as per https://github.com/GenericMappingTools/pygmt/blob/v0.5.0/doc/contributing.md#general-guidelines-for-making-a-pull-request-pr).
This step-by-step process seems to have worked well for @willschlitzer and others in the past few months, and for the sake of new contributors, we should probably 1) document the step-by-step policy and 2) track the status of each GMT module being wrapped.
Documenting how new GMT modules should be wrapped
Easiest way would be to modify the 'Reminders' in the Pull Request template at https://github.com/GenericMappingTools/pygmt/blame/v0.5.0/.github/PULL_REQUEST_TEMPLATE.md#L11-L17. Specifically, the
- [ ] If adding new functionality, add an example to docstrings or tutorials.
line should be made optional or something.Other than that, we could put a note in https://github.com/GenericMappingTools/pygmt/blob/v0.5.0/doc/contributing.md that these are the general stages on wrapping a GMT module:
Note that step 3 and 4 can be done in parallel in some cases.
Tracking the status (feature completeness) of a PyGMT module
Ideally we would have an issue to track a PyGMT module from its initial implementation to the final gallery example/tutorial, but that's a bit of a hassle. So let's track it using cards instead. See https://github.com/GenericMappingTools/pygmt/projects/9
If any of you have a new wishlist item, or find an incomplete module that's not added, please add it to the project board!
Originally posted by @weiji14 in #1072 (comment)
Are you willing to help implement and maintain this feature? Yes/No
The text was updated successfully, but these errors were encountered: