Skip to content
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

Release 0.15 #399

Closed
metasim opened this issue May 18, 2023 · 27 comments
Closed

Release 0.15 #399

metasim opened this issue May 18, 2023 · 27 comments
Assignees

Comments

@metasim
Copy link
Contributor

metasim commented May 18, 2023

I'd like to advocate for a new release. It's been 6 months since 0.14. Internally in my org, we're building from GitHub URLs, which I don't like doing for too long.

I'd also like to learn how to do a release if the project owners are amenable to that.

Open Items

https://github.com/georust/gdal/milestone/1

@metasim
Copy link
Contributor Author

metasim commented May 18, 2023

A convenience summary of the changes since 0.14:


@lnicola
Copy link
Member

lnicola commented May 18, 2023

I was planning to work on exposing the GCPs, since somewhat requested it recently, and it works as a counterpart to #397. What do you think?

We might also want #400.

@metasim
Copy link
Contributor Author

metasim commented May 18, 2023

I was planning to work on exposing the GCPs

I started looking into that as well, and I came back to thinking we needed to define a better set of principles around pointers to foreign types, which led to the foreign_types prototype, which leads to a bunch of breaking changes, which leads to debates on if we should or shouldn't do it, etc. etc. etc 😆

So it's one of those "is perfect being the enemy of good enough" evaluations. Where I sit right this moment is: Let's get what's working released now, and have a fresh baseline for the next round of improvements, which may or may not include cleaning up pointer handling.

What might help me in considering this is understanding the "cost of releasing". I've only been around for 2 or 3 releases, but each time it seems to create an urge to get straggling features in before cutting the release, making me believe that a release is a "costly" activity.

Is this true, and if so, are there some structural changes we can make to enable us to more easily do releases more regularly?

In my other projects I usually feel more comfortable when PRs can live unreleased state for a bit to allow willing participants to give them some extra testing before getting released, while unwilling users can just stick to feature that have matured for a while longer. But that's just personal preference.

@lnicola
Copy link
Member

lnicola commented May 18, 2023

For GCP's, I think we could simply copy the data and return a Vec, bypassing the fancy pointer question. But okay, we can postpone that if you want. I'd still want to get in the GDAL 3.7 bindings though -- it shouldn't be hard, I can try that tomorrow.

Is this true, and if so, are there some structural changes we can make to enable us to more easily do releases more regularly?

I'd personally like a workflow where we bump the version and it would get published automatically 😅.

Other than that, no, I don't have any specific ideas.

@metasim
Copy link
Contributor Author

metasim commented May 18, 2023

For GCP's, I think we could simply copy the data and return a Vec

I'm not adverse to that if it's just fetching the values. Would it be all of the fields here?

Comprehensively speaking (again, beyond "good enough"?), I was assuming it would include:

  • GDALInitGCPs (...::new??)
  • GDALDeinitGCPs (Drop??)
  • GDALDuplicateGCPs (Clone??)
  • GDALGCPsToGeoTransform
  • GDALGetGCPCount
  • GDALGetGCPProjection
  • GDALSetGCPs
  • GDALSetGCPs2.

I'd still want to get in the GDAL 3.7 bindings though -- it shouldn't be hard, I can try that tomorrow.

Sounds great! Do it!

@metasim
Copy link
Contributor Author

metasim commented May 18, 2023

I'd personally like a workflow where we bump the version and it would get published automatically.

I saw that in another project recently but forgot which. I'll see if I can find it. I think it was triggered from on.release event, which is cool.

@metasim
Copy link
Contributor Author

metasim commented May 18, 2023

PS: I should have done GDALGetGCPProjection when I did GDALGetGCPSpatialRef, but I was responding to a colleague's specific request and didn't pay close attention to neighboring functions.

@jdroenner
Copy link
Member

I am on vacation and will be back next week. Will look into this issue then :)

@lnicola
Copy link
Member

lnicola commented May 18, 2023

I saw that in another project recently but forgot which.

rowan does that by checking whether there's already a git tag with the current version. There's a little crate for it, xaction.

@metasim
Copy link
Contributor Author

metasim commented May 18, 2023

@lnicola Since we have a week until jdreonner gets back, would you like help on the GCP stuff? Want me to take an initial stab at it, or were you really wanting to do it?

Edit: Started this branch: #402

@lnicola
Copy link
Member

lnicola commented May 19, 2023

@metasim I pretty much got the GCP access working.

@metasim metasim added this to the 0.15 milestone May 22, 2023
@jdroenner
Copy link
Member

i'm back from vacation :)
Are there things we want to get into the release? Is the GCP access done?

@lnicola
Copy link
Member

lnicola commented May 30, 2023

Welcome back!

I'll rebase it today and the API is a bit questionable. Then there's also #406, which might be nice to get in. That one has some pending changes I'd like to see, but might benefit from another pair of eyes.

@metasim
Copy link
Contributor Author

metasim commented May 30, 2023

@jdroenner I know this is annoying scope creep beyond the request to cut a release, but would you be willing to take a peek at #404 and #406 and give us your opinion of these API "shapes"?

I think #404 is probably fine (I wonder if there's a way of removing the replication of C struct in Rust for instantiation convenience purposes).

#406 has a situation where the C API uses the error code as side-band communications for indicating a default value was used, and the proposed solutions don't feel fully idiomatic.

Whether or not we get these exact APIs "perfect" is probably not that critical, but I don't think they are unique, and your advice might help us come up with a replicable solution for future cases of similar shape.

@lnicola
Copy link
Member

lnicola commented May 30, 2023

This is going to be the best release ever 😃.

@metasim
Copy link
Contributor Author

metasim commented May 30, 2023

Maybe we should blog/reddit about it (briefly) so we can announce it in This Week in Rust. 🤠 🦀

See: TWIR on link only announcements

@metasim metasim removed this from the 0.15 milestone Jun 1, 2023
@metasim
Copy link
Contributor Author

metasim commented Jun 1, 2023

Anything else we want to add?

image

@lnicola
Copy link
Member

lnicola commented Jun 1, 2023

I'm tempted to file a PR to tweak this API, but I think we can stop now :-).

@metasim
Copy link
Contributor Author

metasim commented Jun 1, 2023

I'm tempted to file a PR to tweak this API, but I think we can stop now :-).

Interesting. I use this API at work. Are you looking to replace the tuples with something more semantically explicit?

@lnicola
Copy link
Member

lnicola commented Jun 1, 2023

Yeah, to unpack the tuples. And I'm not use isize is useful there. I've used it a number of times, and it was always annoying :-). Anyway, doesn't matter.

@metasim
Copy link
Contributor Author

metasim commented Jun 1, 2023

And I'm not use isize is useful there.

IMO, the discrepancy between isize, usize, and i32 is all over the place, and often the fault of the C API being unclear as to whether negative values are valid, niche or invalid. I'd suggest tackling that will take careful inspection of of the C code. It is annoying, but when i tried to normalize over it in my work code it became a mess.

@metasim
Copy link
Contributor Author

metasim commented Jun 1, 2023

@jdroenner Anything else we need to do or can help with to cut a release (and document the process)?

@lnicola
Copy link
Member

lnicola commented Jun 1, 2023

I wouldn't be surprised if some format (looking at you, NetCDF) supported negative cell coordinates. 🙄

@lnicola
Copy link
Member

lnicola commented Jun 1, 2023

Just asked on the mailing list, the block offsets are always positive.

@jdroenner
Copy link
Member

i can do the release today if all PRs you want are merged. The process is not that complex. All i need to do is editing the changelog and running cargo release 😅

@jdroenner
Copy link
Member

https://crates.io/crates/gdal

@metasim
Copy link
Contributor Author

metasim commented Jun 2, 2023

Thanks @jdroenner !! 😄

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants