Hi, No objection. I'll start a vote for this.
Thanks, -- kou In <20240820.091745.710358189219212077....@clear-code.com> "Re: [DISCUSS] Split Go release process" on Tue, 20 Aug 2024 09:17:45 +0900 (JST), Sutou Kouhei <k...@clear-code.com> wrote: > Hi, > >> I think we'll need a vote on it *eventually*, but we probably can wait >> until the repo is up and ready with the vote being when we "pull the >> trigger" so-to-say and turn off Go releases from the main >> github.com/apache/arrow repository and start releasing through >> github.com/apache/arrow-go. We'll also probably need to shift open PRs / >> issues to the new repo after we do this. > > OK. I'll start a vote next week if nobody objects this > proposal in this week. I think that a vote after preparing > github.com/apache/arrow-go may inhibit -1 vote. So a vote > before preparing github.com/apache/arrow-go will be fair. > > > Thanks, > -- > kou > > In <cah4123bccmr2lgvprbsjc7-sktsfy5bwomeseafosrbwyph...@mail.gmail.com> > "Re: [DISCUSS] Split Go release process" on Mon, 19 Aug 2024 16:15:52 -0400, > Matt Topol <zotthewiz...@gmail.com> wrote: > >>> Based on 6., users need to change their import paths on >>> upgrade whether we keep using apache/arrow or we use new >>> apache/arrow-go. >>> >>> If we use new apache/arrow-go, we will be able to reduce >>> maintenance cost for apache/arrow (e.g. we can remove Go >>> related scripts, CI jobs and so on from apache/arrow). Let's >>> use apache/arrow-go. >>> >>> If nobody objects splitting Apache Arrow Go to >>> apache/arrow-go in this week, I'll start working on this >>> next week. (Do we need a vote for this?) >> >> I think we'll need a vote on it *eventually*, but we probably can wait >> until the repo is up and ready with the vote being when we "pull the >> trigger" so-to-say and turn off Go releases from the main >> github.com/apache/arrow repository and start releasing through >> github.com/apache/arrow-go. We'll also probably need to shift open PRs / >> issues to the new repo after we do this. >> >> I'm happy to review any of the scripts being added to the new repository >> and help out if you need it in getting this going. I think the prospect of >> fewer major releases, and thus easier upgrades, is very worthwhile for us >> to pursue this. >> >> --Matt >> >> On Mon, Aug 19, 2024 at 1:14 AM Sutou Kouhei <k...@clear-code.com> wrote: >> >>> Hi, >>> >>> Sorry for not working on this. >>> >>> Thanks for sharing the standard docs! I've read it and >>> related docs. >>> >>> Here is the summary I learned in this thread and the >>> standard docs: >>> >>> 1. We're using "github.com/apache/arrow/go/v${VERSION} >>> <http://github.com/apache/arrow/go/v$%7BVERSION%7D>" such >>> as "github.com/apache/arrow/go/v17" as our module name >>> * https://pkg.go.dev/github.com/apache/arrow/go/v17/arrow >>> * Including the version number part ("v${VERSION}") is >>> important >>> * Users can avoid unexpected backward incompatibility by >>> this style >>> 2. We used to use "github.com/apache/arrow/go" as our module >>> name in v5 or earlier >>> * https://pkg.go.dev/github.com/apache/arrow/go/arrow >>> * 133 modules still use this >>> 3. We want to avoid user side changes as much as possible >>> * As 2. shows, users may keep using old version if there >>> is any change is required >>> 4. The current users need to change Apache Arrow Go's import >>> path to "github.com/apache/arrow/go/v${VERSION >>> <http://github.com/apache/arrow/go/v$%7BVERSION> + 1}" when >>> they want to upgrade Apache Arrow Go >>> * We don't want to require more changes than "changing >>> import path" for users as mentioned in 3. >>> 5. We can't provide backward compatible module name such as >>> "github.com/apache/arrow/go/v18" for >>> "github.com/apache/arrow-go/v18" >>> * Go doesn't provide the feature >>> 6. We want to keep "v${VERSION}" in our module name even if >>> we split Apache Arrow Go to apache/arrow-go >>> * It's for avoiding unexpected backward incompatibility >>> in users' projects >>> >>> >>> Based on 6., users need to change their import paths on >>> upgrade whether we keep using apache/arrow or we use new >>> apache/arrow-go. >>> >>> If we use new apache/arrow-go, we will be able to reduce >>> maintenance cost for apache/arrow (e.g. we can remove Go >>> related scripts, CI jobs and so on from apache/arrow). Let's >>> use apache/arrow-go. >>> >>> If nobody objects splitting Apache Arrow Go to >>> apache/arrow-go in this week, I'll start working on this >>> next week. (Do we need a vote for this?) >>> >>> >>> Thanks, >>> -- >>> kou >>> >>> In <cah4123zxadcug6yrkz2mxupke1muftyrvhg0hh1bqck5fw+...@mail.gmail.com> >>> "Re: [DISCUSS] Split Go release process" on Mon, 22 Jul 2024 20:47:57 >>> -0400, >>> Matt Topol <zotthewiz...@gmail.com> wrote: >>> >>> > Hey Kou, >>> > >>> > https://go.dev/doc/modules/release-workflow is the standard docs for >>> > developing module versioning and publishing with Go. >>> > >>> > There isn't really a way to alias an import path to a different git repo >>> > because it uses the GitHub URL itself as the import path. >>> > >>> > But it does seem like people seem to prefer the idea of shifting the Go >>> > implementation to its own repository. I'd still push for us to include >>> the >>> > major version number in the import path, and since we'll have fewer major >>> > releases and more minor releases, users shouldn't have to update their >>> > import paths as frequently. >>> > >>> > --Matt >>> > >>> > On Mon, Jul 22, 2024, 8:37 PM Sutou Kouhei <k...@clear-code.com> wrote: >>> > >>> >> Hi, >>> >> >>> >> > Kou, is your plan also counting on moving the >>> >> > specific nightlies there and removing them from the main repo? >>> >> >>> >> Yes. I should have mentioned it explicitly. >>> >> >>> >> We will remove most Go related CI jobs from apache/arrow. We >>> >> will keep Go in integration test CI jobs like we do for >>> >> apache/arrow-rs. >>> >> >>> >> >>> >> Thanks, >>> >> -- >>> >> kou >>> >> >>> >> In <cad1rbrr2vtxaunppfrrjgfd+ofca3q4f+yr6npku4ttzlx2...@mail.gmail.com> >>> >> "Re: [DISCUSS] Split Go release process" on Fri, 19 Jul 2024 17:14:25 >>> >> +0200, >>> >> Raúl Cumplido <raulcumpl...@gmail.com> wrote: >>> >> >>> >> > Hi, >>> >> > >>> >> > The conversation around more frequent minor releases and version split >>> >> > per component has been a long one. >>> >> > >>> >> > I am in favour of these changes for the Go implementation because we >>> >> > have several maintainers. >>> >> > >>> >> > It might be difficult to release other implementations that do not >>> >> > have the same amount of maintainers. I am not sure what our plan is if >>> >> > one of the split implementations has less maintainers and there's a >>> >> > requirement for a release (i.e. security fix) but that might be >>> >> > something to consider in the future. >>> >> > >>> >> >> I would defer to Raul and Jacob to corroborate this, but because >>> >> >> changes to the CI configuration and release verification scripts >>> don't >>> >> >> affect other implementations, I have been able to maintain that >>> >> >> infrastructure myself without too much effort and don't have to lean >>> >> >> on them for anything except reviews. >>> >> > >>> >> > I think releasing and maintaining release scripts / verifications per >>> >> > component is much easier than for the mono repo. We currently have >>> >> > over 200 nightly CI jobs in the mono repo that are required to pass >>> >> > before releasing. Moving some of those to its own repo helps >>> >> > maintainability. Kou, is your plan also counting on moving the >>> >> > specific nightlies there and removing them from the main repo? >>> >> > >>> >> > I would be in favour of doing a new major release (v18) once the repo >>> >> > and the changes are in-place to update the import path to something >>> >> > like: >>> >> > github.com/apache/arrow-go/v18 >>> >> > >>> >> > This would avoid confusion with previous releases. We can then follow >>> >> > up with patch/minor/major as required. >>> >> > >>> >> > I am also happy to help with the releases and infrastructure if >>> >> > necessary as I've done with the main Arrow one (I can also help on >>> >> > nanoarrow, adbc if necessary). >>> >> > >>> >> > Kind regards, >>> >> > Raul >>> >> > >>> >> > >>> >> > >>> >> >> >>> >> >> [1] https://github.com/apache/arrow-nanoarrow/pull/557 >>> >> >> >>> >> >> On Thu, Jul 18, 2024 at 7:53 PM Matt Topol <zotthewiz...@gmail.com> >>> >> wrote: >>> >> >> > >>> >> >> > Part of the goal of splitting out the release processes is that >>> we'd >>> >> be >>> >> >> > able to do minor version releases more frequently instead of major >>> >> version >>> >> >> > releases. >>> >> >> > >>> >> >> > The general convention in the Go community is to include a major >>> >> version >>> >> >> > "v#" in the import path for all major versions past v1 so that if >>> >> there's a >>> >> >> > breaking change, it's explicit and prevents potential issues from >>> >> different >>> >> >> > major versions being used simultaneously. Being able to do minor >>> >> version >>> >> >> > releases more frequently would lead to not having to change the >>> import >>> >> >> > paths every 3-6 months, but only if we actually do a breaking >>> change. >>> >> >> > >>> >> >> > On Thu, Jul 18, 2024, 3:55 PM George Godik <ggo...@gmail.com> >>> wrote: >>> >> >> > >>> >> >> > > > If we shift the Go lib to a new/different import >>> >> >> > > path we'll end up with the same problem where people will rely on >>> >> older >>> >> >> > > versions and an incorrect path. >>> >> >> > > >>> >> >> > > Major version upgrades already require changing the import paths >>> by >>> >> >> > > increasing the version. The proposed change would require >>> everyone >>> >> to go >>> >> >> > > through a similar process one last time. >>> >> >> > > >>> >> >> > > > More to the point, there would be the question of whether or >>> not >>> >> we >>> >> >> > > should port over the same major version >>> >> >> > > number, i.e. `github.com/apache/arrow-go/v17` >>> <http://github.com/apache/arrow-go/v17> >>> >> <http://github.com/apache/arrow-go/v17> >>> >> >> > > <http://github.com/apache/arrow-go/v17> >>> >> >> > > <http://github.com/apache/arrow-go/v17> or something to that >>> end? >>> >> Or >>> >> >> > > do we restart back at v1 (which I think would be confusing)? >>> >> >> > > >>> >> >> > > My vote - for whatever it's worth - would be to do away with the >>> >> >> > > version-in-path naming convention and relying on the go >>> >> version/package >>> >> >> > > system for major upgrades. >>> >> >> > > >>> >> >> > > Benefits: I don't have to change import paths every 3-6months >>> >> >> > > >>> >> >> > > On Thu, Jul 18, 2024 at 3:34 PM Matt Topol < >>> zotthewiz...@gmail.com> >>> >> wrote: >>> >> >> > > >>> >> >> > > > My thoughts: >>> >> >> > > > >>> >> >> > > > > * Go doesn't depend on other components such as C++ >>> >> >> > > > > * Go has some active PMC member (Matt) and committer (Joel) >>> >> >> > > > > * Could you become a release manager for Go? >>> >> >> > > > >>> >> >> > > > I'd happily be the release manager for the Go implementation. >>> >> >> > > > >>> >> >> > > > > Here is my idea how to proceed this: >>> >> >> > > > > >>> >> >> > > > > 1. Extract go/ in apache/arrow to apache/arrow-go like >>> >> >> > > > > apache/arrow-rs >>> >> >> > > > > * Filter go/ related commits from apache/arrow and create >>> >> >> > > > > apache/arrow-go with them like we did for >>> apache/arrow-rs >>> >> >> > > > > * Remove go/ related codes from apache/arrow >>> >> >> > > > > 2. Prepare integration test CI like apache/arrow-rs does: >>> >> >> > > > > >>> >> >> > > > >>> >> >> > > > >>> >> >> > > >>> >> >>> https://github.com/apache/arrow-rs/blob/master/.github/workflows/integration.yml >>> >> >> > > > > 3. Prepare release script based on apache/arrow-julia, >>> >> >> > > > > apache/arrow-adbc and/or >>> apache/arrow-flight-sql-postgresql >>> >> >> > > > >>> >> >> > > > Personally I would prefer that we do not extract it to its own >>> >> separate >>> >> >> > > > repository purely because I don't want to change the import >>> path >>> >> for >>> >> >> > > users >>> >> >> > > > again. We already have this issue from before we introduced the >>> >> major >>> >> >> > > > version into the import path and shifted it up to allow for the >>> >> Parquet >>> >> >> > > lib >>> >> >> > > > in the same repository. If you look at [1] you see that there's >>> >> still >>> >> >> > > over >>> >> >> > > > 100 projects that never upgraded to v6 or higher because they >>> are >>> >> still >>> >> >> > > > using the old import path. If we shift the Go lib to a >>> >> new/different >>> >> >> > > import >>> >> >> > > > path we'll end up with the same problem where people will rely >>> on >>> >> older >>> >> >> > > > versions and an incorrect path. >>> >> >> > > > >>> >> >> > > > If we as a community decide that splitting out the >>> >> implementations all >>> >> >> > > into >>> >> >> > > > separate repositories is the best way forward, I won't hold it >>> up >>> >> by >>> >> >> > > > strictly hammering on this. I'm just concerned about the >>> >> realities and >>> >> >> > > > difficulties of communicating the import path change, ensuring >>> we >>> >> don't >>> >> >> > > > break any consumers, and ensuring that users still end up being >>> >> able to >>> >> >> > > > upgrade easily. >>> >> >> > > > >>> >> >> > > > > The import path could be "github.com/apache/arrow-go" >>> instead >>> >> of " >>> >> >> > > > github.com/apache/arrow-go/arrow". Since go will allow users >>> to >>> >> use >>> >> >> > > > `arrow.Abc` directly if user imports ` >>> github.com/apache/arrow-go` <http://github.com/apache/arrow-go> >>> >> <http://github.com/apache/arrow-go> >>> >> >> > > <http://github.com/apache/arrow-go> >>> >> >> > > > <http://github.com/apache/arrow-go> >>> >> >> > > > <http://github.com/apache/arrow-go>. >>> >> >> > > > >>> >> >> > > > The import path would still have to be ` >>> >> >> > > github.com/apache/arrow-go/arrow` >>> <http://github.com/apache/arrow-go/arrow> >>> >> <http://github.com/apache/arrow-go/arrow> >>> >> >> > > <http://github.com/apache/arrow-go/arrow> >>> >> >> > > > <http://github.com/apache/arrow-go/arrow> >>> >> >> > > > since it would also contain the parquet implementation in ` >>> >> >> > > > github.com/apache/arrow-go/parquet` >>> <http://github.com/apache/arrow-go/parquet> >>> >> <http://github.com/apache/arrow-go/parquet> >>> >> >> > > <http://github.com/apache/arrow-go/parquet> >>> >> >> > > > <http://github.com/apache/arrow-go/parquet>. More to the >>> point, >>> >> there >>> >> >> > > > would be the >>> >> >> > > > question of whether or not we should port over the same major >>> >> version >>> >> >> > > > number, i.e. `github.com/apache/arrow-go/v17` >>> <http://github.com/apache/arrow-go/v17> >>> >> <http://github.com/apache/arrow-go/v17> >>> >> >> > > <http://github.com/apache/arrow-go/v17> >>> >> >> > > > <http://github.com/apache/arrow-go/v17> or something to that >>> >> end? Or >>> >> >> > > > do we restart back at v1 (which I think would be confusing)? >>> >> >> > > > >>> >> >> > > > --Matt >>> >> >> > > > >>> >> >> > > > [1]: https://pkg.go.dev/github.com/apache/arrow/go/arrow >>> >> >> > > > >>> >> >> > > > On Thu, Jul 18, 2024 at 7:33 AM Antoine Pitrou < >>> >> anto...@python.org> >>> >> >> > > wrote: >>> >> >> > > > >>> >> >> > > > > >>> >> >> > > > > Hi Kou, >>> >> >> > > > > >>> >> >> > > > > Le 18/07/2024 à 11:33, Sutou Kouhei a écrit : >>> >> >> > > > > > >>> >> >> > > > > > Here is my idea how to proceed this: >>> >> >> > > > > > >>> >> >> > > > > > 1. Extract go/ in apache/arrow to apache/arrow-go like >>> >> >> > > > > > apache/arrow-rs >>> >> >> > > > > > * Filter go/ related commits from apache/arrow and >>> create >>> >> >> > > > > > apache/arrow-go with them like we did for >>> >> apache/arrow-rs >>> >> >> > > > > > * Remove go/ related codes from apache/arrow >>> >> >> > > > > > 2. Prepare integration test CI like apache/arrow-rs does: >>> >> >> > > > > > >>> >> >> > > > > >>> >> >> > > > >>> >> >> > > >>> >> >>> https://github.com/apache/arrow-rs/blob/master/.github/workflows/integration.yml >>> >> >> > > > > > 3. Prepare release script based on apache/arrow-julia, >>> >> >> > > > > > apache/arrow-adbc and/or >>> >> apache/arrow-flight-sql-postgresql >>> >> >> > > > > >>> >> >> > > > > I think this is a good idea, but I'm not part of the Go >>> >> maintainers. >>> >> >> > > > > >>> >> >> > > > > > Cons of this idea: >>> >> >> > > > > > >>> >> >> > > > > > * This is a backward incompatible change >>> >> >> > > > > > * Users need to change their "import" to >>> >> >> > > > > > "github.com/apache/arrow-go/arrow" from >>> >> >> > > > > > "github.com/apache/arrow/go/arrow" >>> >> >> > > > > >>> >> >> > > > > Is there no way to leave some kind of alias or redirection in >>> >> the >>> >> >> > > > > apache/arrow repository? >>> >> >> > > > > >>> >> >> > > > > Regards >>> >> >> > > > > >>> >> >> > > > > Antoine. >>> >> >> > > > > >>> >> >> > > > >>> >> >> > > >>> >> >>>