I agree with this break down with the exception that cgo wrapper packages that are not related should be in separate repos. The rationale for this is fairly base pragmatism; cgo wrapper packages can be slow to run tests, so only testing related/entangled packages should be the goal. In the case of hdf5 and lapacke, there does not seem to be any real coupling between them that would need to be tested.
--
afk
Dan
I agree with this break down with the exception that cgo wrapper packages that are not related should be in separate repos. The rationale for this is fairly base pragmatism; cgo wrapper packages can be slow to run tests, so only testing related/entangled packages should be the goal. In the case of hdf5 and lapacke, there does not seem to be any real coupling between them that would need to be tested.
--
You received this message because you are subscribed to the Google Groups "gonum-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to gonum-dev+unsubscribe@googlegroups.com.
On Wed, 2017-01-04 at 13:20 +0100, Seb Binet wrote:gonum.org/pkg/internal
> But I see one possible issue with serving the mono repo like is
> currently proposed: the 'internal' package.
> Where should it be rooted?
Why is this different from the current situation? At the moment you
> Also, if we go the mono repo route, with packages hosted at
> github.com/gonum/gonum/pkg but served by gonum.org/pkg, we loose (I
> think) the ability to do 'go get gonum.org/...' to install the whole
> kaboodle on a new machine.
can't do go get github.com/gonum/... on a fresh machine. If we really
wanted to support this we could have a gonum.org/{,pkg/}meta that has
dependencies on all the others and then allow go get
godoc.org/{,pkg/}meta. I think this is a bad idea - one of the nice
things about go packages is their lazy resolution with go get.
It was my understanding that the pkg category path was going to be
> I believe we should insert an /x/ or /pkg/ (or your favorite colored
> bikeshed).
used.
gonum.org/pkg/plot
> There's also the issue on how to map the other packages ('hdf5, plot,
> clapack,...) under the gonum.org/... import path.
gonum.org/pkg/hdf5
gonum.org/pkg/lapacke
The package indirection meta data handles all of this.
> Anyways, just my 2c, and kudos to move forward with this :)
This is possibly my biggest concern. I think porting the issues to the new repo is the way to go, but the prices requires thought and discussion - and mechanisation.
Things that need to be considered in my view are:
1. Cross matching between issues.
2. Temporal consistency of issues across the entire suite, not just within each donor repo. This means the whole thing need to be done as one operation.
3. Porting of PRs. I don't even know if this is possible, particularly since the SHAs will be wrong.
The issue of commit history is trivial in comparison.
--
afk
Dan
This is possibly my biggest concern. I think porting the issues to the new repo is the way to go, but the prices requires thought and discussion - and mechanisation.
Things that need to be considered in my view are:
1. Cross matching between issues.
2. Temporal consistency of issues across the entire suite, not just within each donor repo. This means the whole thing need to be done as one operation.
3. Porting of PRs. I don't even know if this is possible, particularly since the SHAs will be wrong.
The issue of commit history is trivial in comparison.
I would prefer that take something from that and quite or own that we can experiment with.
--
afk
Dan
One thing that has not been discussed here is the possibility of
including versioning in the import paths. I am not talking about minor
version changes since we (I think) are agreed that minor changes that
break compatibility are not going to be allowed. However, there may be
major changes elsewhere that force breaking changes on us.
Having import paths like "gonum.org/pkg/v1/stat" from the outset would
allow us to gracefully include versioning. (I don't like the gopkg.in
approach of including the version last.)
Thoughts?
--
To unsubscribe from this group and stop receiving emails from it, send an email to gonum-dev+...@googlegroups.com.
I asked Dominik Honnef's opinion on this in light of his recent post to
golang-nuts where he announced a merge of repos. I'm inclined to agree
that keeping the old repos as archives is worthwhile. His position on
the cgo wrappers is also worth considering.
Have we looked into how this would affect the gonum/internal repo? If gonum.org/v2/matrix can't import gonum.org/v1/internal, we should address that up front.
hi,
It is my understanding that the plan is for version skew to go away. At the beginning, some packages will be v0, some will be v1, but all under gonum.org/v1. If we have a v2, all will jump simultaneously.On Wednesday, January 25, 2017 at 3:42:30 PM UTC-7, Kunde21 wrote:Have we looked into how this would affect the gonum/internal repo? If gonum.org/v2/matrix can't import gonum.org/v1/internal, we should address that up front.Keeping around the old repos SGTM. Still not convinced about the cgo in the monorepo. One argument is that we can't guarantee API stability for the C-code, while we can for the Go versions. Another argument is that cgo-wrappers are also different in style. The monorepo can be installed and used with a single call to "go get". The cgo packages require more expertise, understanding how to install C code and using CGO_LDFLAGS among them. They also serve a different purpose. Gonum code seeks to be consistent and transparent, looking at a fresh implementation of these algorithms that is approachable. The cgo wrappers serve the purpose to increase the capability of Go as a language for scientific computing, either because of speed or because there's no spec to implement.
Additionally, it gives us more flexibility to "decommission" the cgo wrappers if necessary, for example if hdf5 wanted to create and maintain their own Go wrappers.
On Wednesday, February 8, 2017 at 10:36:11 AM UTC-7, Sebastien Binet wrote:
hi,
On Thu, Jan 26, 2017 at 9:38 PM, Dan Kortschak <dan.kortschak@adelaide.edu.au> wrote:I asked Dominik Honnef's opinion on this in light of his recent post to
golang-nuts where he announced a merge of repos. I'm inclined to agree
that keeping the old repos as archives is worthwhile. His position on
the cgo wrappers is also worth considering.FYI, I have done my own mono-repo migration for go-hep:with the new mono-repo:I only had one cgo-based repo (plus a self-contained one that I simply dropped for the moment) so the migration was somewhat easier.so far, I am happy with it.(I am still working on the migration of the issues, though)-s
Anything that you saw that would prevent us from using a similar procedure?
--
You received this message because you are subscribed to the Google Groups "gonum-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to gonum-dev+unsubscribe@googlegroups.com.
I went through and modified all of the issues to have the appropriate prefixes.Are we settled enough to try and move forward on this?
Another option would be to borrow the naming convention from chewxy and go with something like vector/{ vecf64 vecf32 vecc64 vecc128 }
My thought/goal was to export the internal/asm functions with input validation, so there wouldn't be a reason to import both floats and internal in the same package.
On Wednesday, May 3, 2017 at 12:58:29 PM UTC-6, Kunde21 wrote:Another option would be to borrow the naming convention from chewxy and go with something like vector/{ vecf64 vecf32 vecc64 vecc128 }I understand the argument, but I dislike the idea that I'll have to type xxxf64 every time I want to use a gonum function. I feel the common case should have nice names. It's one thing for functions that should be using sparingly and carefully like vecf64 and internal/asm/f64. It's another thing to have floatsf64.Max()
My thought/goal was to export the internal/asm functions with input validation, so there wouldn't be a reason to import both floats and internal in the same package.I'm confused. A part of floats already is this (Add, AddTo). You mean "export the ones that aren't already"? I see that there are some implementations in asm/f64 that haven't been incorporated into floats (L1Norm), but that's an easy fix.
On Wednesday, May 3, 2017 at 12:15:48 PM UTC-7, Brendan Tracey wrote:
On Wednesday, May 3, 2017 at 12:58:29 PM UTC-6, Kunde21 wrote:Another option would be to borrow the naming convention from chewxy and go with something like vector/{ vecf64 vecf32 vecc64 vecc128 }I understand the argument, but I dislike the idea that I'll have to type xxxf64 every time I want to use a gonum function. I feel the common case should have nice names. It's one thing for functions that should be using sparingly and carefully like vecf64 and internal/asm/f64. It's another thing to have floatsf64.Max()vecf64.Max() and floats.Max() are the same char-count (I don't think floatsf64 was an option, as it's a bit redundant), so I'm not sure what you're looking for as to better-to-type name. Maybe vector/{ vec vec32 cvec cvec128 } would be better?
On Wednesday, May 3, 2017 at 12:15:48 PM UTC-7, Brendan Tracey wrote:
On Wednesday, May 3, 2017 at 12:58:29 PM UTC-6, Kunde21 wrote:Another option would be to borrow the naming convention from chewxy and go with something like vector/{ vecf64 vecf32 vecc64 vecc128 }I understand the argument, but I dislike the idea that I'll have to type xxxf64 every time I want to use a gonum function. I feel the common case should have nice names. It's one thing for functions that should be using sparingly and carefully like vecf64 and internal/asm/f64. It's another thing to have floatsf64.Max()vecf64.Max() and floats.Max() are the same char-count (I don't think floatsf64 was an option, as it's a bit redundant), so I'm not sure what you're looking for as to better-to-type name. Maybe vector/{ vec vec32 cvec cvec128 } would be better?