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
fix for SLE11SP3 #5
Conversation
Sorry, I don't know how to send parts of my work as pull request...any one help? |
@@ -21,6 +33,9 @@ end | |||
requires = [] | |||
|
|||
unless filelist.empty? then | |||
|
|||
requires << "golang(API) = " + go_get_version() |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
That is still wrong, We don't have any runtime requirement for that, it's always buildtime requirement only.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hi,
I do respect you and this is not personal. but actually your style of collaboration...really...I can't fit.
I hate when I replied a lot, you didn't make any correction with strong evidence, and just told me "no it's not". then conversation certainly stopped.
About this commit. it's already been discussed here: https://lists.opensuse.org/opensuse-go/2016-06/msg00000.html. (the last reply came from you too, telling me to talking to someone I don't even know he's actually in the development talk, when I've got support from other objective contributors).
Please remember I'm the author of golang-packaging. If you guys can't make me figure out what you are going to achieve, it'll be really hard to make progress in this project. Because I can switch the Source to https://github.com/marguerite/golang-packaging any time.
Sorry for the inconvenince. But look, you didn't even tell me where I was wrong and I didn't know what you were talking about. How will our collaboration go on?
Marguerite
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
maybe I am stupid. but Linus style of collaboration has one fundamental fact that Linus is one of the major authors of the Kernel. this is not the case. I see little code that convince people. so it sounds to me like an outsider who don't have his hands dirty is pointing here and there without solid evidences and codes.
Or maybe, please, you can treat me as an idiot who hold the nuclear suitcase. You have to stop her from pressing the wrong button. That needs a lot. Not just a "No".
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It's really cool that you are pushing golang packaging forward! Seriously! But as I said, tools built with Golang generally don't have any runtime dependency, it got only build dependencies. That's the big cool thing on Go that you don't depend on any shared stuff. Build a single binary and that's it. But with that change we got the Go compiler as a runtime dependency which is a useless overhead for installing a package that got only a single binary without any dependencies.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I really don't want to discourage your work, maybe we should just take the time to chat more interactively via IRC or even Mumble and write some mail with the outcome to the go mailinglist. I think that should be much more productive.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hi @marguerite , nobody ever meant to offend or disregard your work. We are grateful for all the job you and the community did at packaging Go.
I might be wrong, but it looks like this change would cause all the kind of Go packages to require the Go compiler at runtime. This might be fine for static and shared libraries, but it would be useless for Go programs.
Would it be possible to rework this patch to avoid this issue?
As for the big picture about Go packaging, I'm currently writing a response to #4 but I'm being slowed down by other tasks.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes...I also think effective communication is a must...I can get your idea. "we don't need any runtime dependency for any golang binary". what confuse me is...have you extended the definition of "binary" to "any go compiled codes", that is, ".a"...and many other questions which I may have a different/wrong answer from my side...maybe I should send you an email with lists of my questions which can help us find common views....because, you know, we have different options on the same thing, and it is not Politics, the only reason I can think is I may stand on the non-existent soil. And you just didn't explain me, which push me into anxiety.
Marguerite
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes...it will drag requirement of go itself...I know this commit may be not "fine"...but actually I just want to pull the SLE_11_SP3 fix...I just don't know how to send a single commit separately...and, this commit is meaningful to me because in my branch I was implementing "buildmode=shared" and "buildmode=c-shared" and "linkshared" support. In that case, the dependency of go itself is useful...because the shared standard libraries (those .shlibname) are packaged in go itself. But my work just hang there...because there's a bug happened in our go (I'm not sure whether it's packaging or upstream), about which I sent an email to opensuse-go mailing list some days ago.
I promised on the mailing list that I'll require go itself only for shared built stuff. But since my shared build support is not finished. I certianlly don't know how to set these codes conditional.
And please reply to #4 when you're free...because I really didn't find the "strong evidences" that can prevent me from shipping prebuilt ".a" stuff...everyone is telling me "hey! people just use .go!", I know that. But logically it doesn't explain why I shouldn't use ".a". And I found myself a lot of "evidences" that ".a" could be used. we did that because we could do...and I think most of the people didn't think human-being can live on Mars, but that is what NASA is trying to do...:-D
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hi all. I just hope I can help a bit here... so the problem is that requiring golang(API) = VERSION is needed when packaging .a files , but it is a problem if we are packaging an executable (meaning it has a main function).
So, what we need is basically a way to distinguish the 2 cases.
Right?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@jordimassaguerpla It's easy to distinguish the 2 cases...executables locate in $GOBIN. it's easy to detect if there's any binary. but I think people from SUSE were talking about some fundamental changes: from shipping .a
to .go
. I call it fundamental because golang-packaging actually unpacks those .a
to find Provides/Requires.
* don't find runtime requires for static builds * distribute plain source code for static builds only binaries in /usr/bin will be distributed in compiled format.
@tboerger Hi, guys, I just update the code. now golang-packaging distributes plain source code and have no runtime requires for static builds. a working demo is here: see:
these are 4 dependencies of docker. I hope in this way I will not stand in front of your way for packaging golang programs like docker/etcd and etc. marguerite |
I still keep the build step for all go packages for two reasons: Firstly, if we just package plain source codes without even building them, we will not find any build error that brings the need to patch source codes (or run go fix command). that'll be packages all over the devel:languages:go project that will "build" successfully and pass all OBS tests until someone actually use it in real life, that is, we'll distribute something that may not work. of course, you'll see the errors in the buildlog from your side if you are a "go program" packager. but actually it's not your responsibility to fix them. we should expose the errors to the one who actually packages/maintains the dependency. and there're even a few packages without any downstream use that locates in the project. Meanwhile, I still want to experiment the shared build possibility. Go 1.5 supports it although no actual program is actually using it. but as a toolchain developer and a person who has interest in that, I think I should keep that extendability. of course, I shouldn't stand in front of anyone's way. marguerite |
Can you please consider experimenting with this in a seperate project from devel-lanaguages-Go? It sounds like an invasive experiment that would potentially block other standard use of Go, like Docker very much requires. |
Hi,
so the word "invasive" is wrong. shared build is a "must" feature of golang-packaging. and I have
so literally there's no way for golang-packaging to block Docker. even before the discussion and my commits, golang-packaging didn't block Docker. because Docker is currently out of golang-packaging's scope. based on that, it should be Docker packagers to submit feature requests to support it, not stand in front of my way to block me from developing new features of my program. actually I don't think it is right to build Docker in another way even with such feature request submitted since its upstream has made a build script.
but you guys just gave two reasons: Fedora uses it and cost of resources. the first is not even a reason, it is a fact. for the second, the resources are needed and not costs. they are used to find out errors and keep OBS review process working.
I removed the runtime dependencies just to make you guys happy. because anyway you can "BuildRequires" sanitized_anchor_name for go-md2man to workaround it (which means lots of specfile modication of course) so I think you were misleaded. I strongly suggest you guys get your hands dirty, start to package a few golang packages and compare them to the existing ones in Fedora. Then you''ll know why I chose to develop golang-packaging that way. no offense but I'm really tired of reoccuring the errors I met to demostrate why my way is right. I think you guys don't catch up, having an "user view" that tries to apply "go principles" on things that upstream didn't say at all. Marguerite |
If by 'shared build' you mean the 'vendoring external dependencies' feature mentioned here: https://golang.org/doc/go1.5 The detailed documentation makes it very clear this is highly experimental https://docs.google.com/document/d/1Bz5-UB7g2uPBdOx-rw5t9MxJwkfpx90cqG9AFL0JAYo If you mean the I know you're passionate about this marguerite but can you please at least consider a compromise in the contentious areas raised in this PR? This is all I am asking.. |
yes, we're talking about the same thing. but here it is: static build is one feature and shared build is another. they're isolated in my codebase. there's an option to use shared build. it means shared build will not be applied to all golang packages. I didn't even think about it. everything will just keep as it is. it will be selectively applied only when the packager decide to turn the switch on, on a "single package" basis. so actually it doesn't and will not affect anything existing in devel:languages:go. even if we drop shared build in this case, the codebase will just remove one condition. it doesn't affect the other condition, that is, static build. here's what golang-packaging will do currently:
if I understand correct, the only thing I didn't do but requested by the SUSE team is to skip the build process, to "save Build Service resources". but if I do that, things will turn to be:
but a "no build at all" way will introduce many further problems we both know. So I think I am right to keep the build process. the SUSE team will get all they requested, for codes that are able to build, in a package. that is, I have made my compromise in my last commit...if you see the demos I provide in my branched project, you will know that. |
devel:languages:go is a place where package dependencies are located. I expect most of the times it will be the maintainer of program X to package also dependencies Y and Z. As for the packages without any downstream users, I can only assume someone created them because he's using them for some private project that might not even be located on OBS. In that case it's his job (as package maintainer) to make sure they keep working. Finally, building a library is not enough to make sure it actually works. The best solution would be to have a I'm against shipping |
I want to address the remaining issues with a single message The mission of golang-packagingThis is how we see
Right now we have a 300 LOC script with lot of corner cases to cover. This is the opposite of what I described above. Getting our hands dirtyWe are getting our hands dirty, @tboerger is already working on a proposal for golang-packaging. You can find his work here and inside of this branch. There are still some small issues to be solved, but we like how the project is turning out. We think it reflects all the goals I wrote above. As usual you are welcome to provide feedback about it. Not reinventing the wheelWe didn't start coding out of the blue our proposed solution. Before doing that we did some research and evaluations. This is why we are convinced about not shipping static and shared libraries. What we decided is not written in stone. The go community is evolving and we want to make sure Please take a look at this extract from the Fedora go packaging guidelines:
The following extract is from debian go packaging guidelines:
As you can see we are not the only one thinking Go developers will use what upstream is recommending: vendoring. ConclusionWe really respect your opinions and we value your contributions. However I'm personally getting tired of going over and over these arguments. This is how we (the SUSE guys who care about Go, not @tboerger) and other major Linux distributions think Go packages should be built at this right point in time. Things might change in the future and if that happens we will be glad to change it. In the meantime this is how we want to proceed with Go packaging. We are ready to take responsibility of this choice by maintaining go, golang-packaging, the Go packaging guidelines for openSUSE, assisting openSUSE users on the go-dedicated mailing list and the packages we care about inside of devel:languages:go. As you can see we ready and willing to "get our hands dirty". |
Hi, devel:languages:go is not only a place for package dependencies. it's a place for anything of go in openSUSE (see grafana, influxdb, ctags there). and it is used as a development project for openSUSE Factory. I expect the program maintainer to be the dependencies maintain too. but that's not always possible. eg, most of the programs rely on golang.org/x/{text,net} stuff, but that package is actually maintained by me. I expect the help from downstream packagers. but here's how I maintained it: I didn't package any actual Go program, I maintain the go itself and packaged some of its standard libraries to make the development environment possible for developers. see? common dependencies come at first then programs follow. there're plenty of reasons for an orphan package inside devel:languages:go. The 1st generation of maintainers created some of the common libraries that are popular at their time. along with time, most of them are not used by any newer programs. for a long time, people just fix builds for Factory and no one care to send a drop request since most of times they're not inside your scope. Some of the go programs that not build are dropped (like the "liteide") but the dependencies are still there because they actually still builds. you'll agree if you maintained some projects: it's not always possible you can find a maintainer, and it's not always possible that you can drop a package. based on this, I treat the actual build Essential, because we can not always rely on downstream packagers to find the build problem of the dependencies. And I agree a pass build doens't gurantee a working library. I agree we should implement the unit testing. I will do this this weekend. |
Even if a library is successfully building there's no final guarantee it will work inside of a program using it. Unfortunately most Go projects are not tagging their releases and not using semantic versioning. It's not the first time a library changes its API between random git commits causing some programs to fail during their build time. I don't see a real value in building everything indiscriminately.
Testing is a different thing. This could be a valuable step to add to the packages. However not all programs and libraries have unit tests. It should be up to the packager to add the Above all:
I think it would be better to create a new issue to track this feature and provide the answers to the questions I wrote before. Just to be clear, you don't have to write any actual code. This is just a design and discussion phase that can prevent useless work and/or point your efforts in the right direction. Also, I'm going to close this pull request given we are not going to have this ruby code around anymore. |
wtf? we are not going to have this ruby code? who decide that and why? |
@marguerite I explained to you what is going to happen inside of this comment. Moreover I know @sysrich, in his role as chair of the openSUSE board, informed you we are going to become the maintainers of devel:languages:go. This communication should have been delivered to you at the beginning of the last week. Yet again there was no answer from you. @sysrich please correct me if I'm wrong. We will always be grateful for your contributions and we hope you will keep providing us your opinion and expertise. I know we have a different point of view on this topic, however we hope you will still be interested in contributing to Go at openSUSE. |
Hi, I didn't reply the second comment because I'm still thinking of it. and I don't even know it is "going to happen". in my view, it is an argument from your team. it's not a final notifice at all. because you have no right to make such decision. I'm the intial author of golang-packaging and the owner & maintainer of golang-packaging package. I didn't ever libterally give up my rights. this fork and the replacement of upstream URL in specfile are not authorized/reviewed by me. I see you guys as help hands from SUSE and patch submitters although you guys didn't submit any new features to my project (but help fixed something) and kept arguing with me/dragging my legs back for the features I have implemented. that is exactly why I kept nodejs-packaging under my own control. during the argument, there were conflicts in opinions. you guys brought openSUSE board in, who tried to set up a meeting but with no success. I replied that I had time on Friday and Weedend, but then you still asked me for time on the work days. so nothing actually happened. A board member asked me to conpromise on this. so I implemented the things we both agreed in my project. I thought this might be a new start of collaboration. I didn't receive anything that you're going to become maintainers of devel:languages:go. even if you are the maintainers now, I am still the maintainer of devel:languages:go and have longer history of maintaining that repository. then we still have to negotiate. because we wear the same heats and I have something superior because I am the first author of this project and the package on OBS. then suddenly I received a notice from you that my codes are going to be replaced, even the codes to replace are not written/not working in production environment at all now. and it sounds like I'm going to be kicked out from owning my own project and package. Please keep in mind that openSUSE is a community. You guys seem to have a tone that suppose your in-house discussion known by everyone. Since the beginning, in my protest on the opensuse-go mailing list, you guys kept telling me that "something has been discussed and decided" that I never have the chance to know. and please keep in mind that I am the author of this project and it is you guys who cooperate with me to get things done instead of the opposite. If you can't work together with the community in the community member's project, please reimplement things in and just in the SLE. Now I have to treat this "going to be" action as a rude take-over, sadly. I didn't ever receive any invitation to discuss the replacement at all! I don't think this is collaboration and this is what co-maintainer should do. to maintain a project, you have to know the project. you guys don't even know with the latest commits now my project can do the things you wanted at all. you just want the namespace, then replace the current stuff, and send a "warm welcome" to the original author who is still active and didn't ever give up her project at all. If it is true, all I can do is to use my rights and switch golang-packaging back to my own branch. you're still welcome to contribute to my project, though. Marguerite |
1 similar comment
Hi, I didn't reply the second comment because I'm still thinking of it. and I don't even know it is "going to happen". in my view, it is an argument from your team. it's not a final notifice at all. because you have no right to make such decision. I'm the intial author of golang-packaging and the owner & maintainer of golang-packaging package. I didn't ever libterally give up my rights. this fork and the replacement of upstream URL in specfile are not authorized/reviewed by me. I see you guys as help hands from SUSE and patch submitters although you guys didn't submit any new features to my project (but help fixed something) and kept arguing with me/dragging my legs back for the features I have implemented. that is exactly why I kept nodejs-packaging under my own control. during the argument, there were conflicts in opinions. you guys brought openSUSE board in, who tried to set up a meeting but with no success. I replied that I had time on Friday and Weedend, but then you still asked me for time on the work days. so nothing actually happened. A board member asked me to conpromise on this. so I implemented the things we both agreed in my project. I thought this might be a new start of collaboration. I didn't receive anything that you're going to become maintainers of devel:languages:go. even if you are the maintainers now, I am still the maintainer of devel:languages:go and have longer history of maintaining that repository. then we still have to negotiate. because we wear the same heats and I have something superior because I am the first author of this project and the package on OBS. then suddenly I received a notice from you that my codes are going to be replaced, even the codes to replace are not written/not working in production environment at all now. and it sounds like I'm going to be kicked out from owning my own project and package. Please keep in mind that openSUSE is a community. You guys seem to have a tone that suppose your in-house discussion known by everyone. Since the beginning, in my protest on the opensuse-go mailing list, you guys kept telling me that "something has been discussed and decided" that I never have the chance to know. and please keep in mind that I am the author of this project and it is you guys who cooperate with me to get things done instead of the opposite. If you can't work together with the community in the community member's project, please reimplement things in and just in the SLE. Now I have to treat this "going to be" action as a rude take-over, sadly. I didn't ever receive any invitation to discuss the replacement at all! I don't think this is collaboration and this is what co-maintainer should do. to maintain a project, you have to know the project. you guys don't even know with the latest commits now my project can do the things you wanted at all. you just want the namespace, then replace the current stuff, and send a "warm welcome" to the original author who is still active and didn't ever give up her project at all. If it is true, all I can do is to use my rights and switch golang-packaging back to my own branch. you're still welcome to contribute to my project, though. Marguerite |
I and no other Board member can give up time on Fridays or at the weekend to discuss this. Please can you answer my unanswered email asking for you to find a time during a weekday?
Yes, you did, from me. When you stated you didn't have the time, I informed you that Flavio and his team were going to step up. You did not respond to that email either.
Marguerite, as you are very keen to remind everyone, openSUSE is a community. Furthermore, Flavio and Tomas have been acting very consistantly with all of the openSUSE guiding principles. They have been respectful of you & your current and past contributions. They have been highly transparent and gone into great detail about the logic behind their mindset, behind their changes, and behind their objections to your changes. In return, you have acted in a way that appears to be continually disrespectful and erratic. Many of their questions, and my own, asking for more information in an effort to understand your point of view, remain unanswered. You have been insulting, suggesting that your fellow contributors have not been getting 'their hands dirty', when the code quite clearly shows otherwise. Flavio poured his heart out again in one of his more recent comments, fully explaining the rest of the teams vision on how openSUSE & SLE need a reliable, basic, standard, tooling for go packaging that enforces the good practice followed by other distributions like Debian, Fedora, Arch and more - after all, these good practices are the ones expected by other upstream projects, the projects actually USING go. So openSUSE is a community and right now I see the community of Go packagers within openSUSE consisting of Flavio and Tomas who are acting consistantly with the standards the openSUSE community expects from it's contributors, and yourself who is acting inconsistantly with those principles. Going forward, this puts at risk many of your contributions - Can openSUSE realistically have golang-packaging as it's standard go packaging tools if it's original author is not acting in a respectful manner to other contributors who are trying to make things better for openSUSE? Do you not see the very strong risk of a very hard fork you are encoraging by acting in the way you have been throughout this dispute? Please Marguerite, reconsider your behaviour and everything Flavio and Tomas have tried to communicate upto this point and realise that they are doing their best to dramatically improve the standard tooling for general go packaging in openSUSE. If you continue to behave in this manner over this topic I'm going to have to consider escalating this as a formal complaint to the openSUSE Board, and I would much rather avoid taking such actions against a contributor with your history with the Project. If you have a different vision for your tool, that's fine, but I think it's best if you find a way to work with them or else they are going to have to go in a different direction, and that's going to be the less perfect answer for everyone here.
|
We have always been open about what we wanted to achieve and why. We had this discussion about shipping static libraries vs plain source code different times and in different places: this PR, this issue and the opensuse-go mailing list. You said we don't care about the community, that's quite the opposite. We want to uniform the way Go packages are being built for SLE and for openSUSE. That's why we created the opensuse-go mailing list and that's why we started to contribute to We proposed to switch to another form of communication to have a better dialog but again there was no response. Some people of our team are spending an insane amount of time on this discussion which seems to be just running in circles because of all the points I highlighted before. However we are still there, trying to have a dialog. In the meantime after your previous comment on this thread you went back to your own fork of This is not acting as member of a community. However I have to say I'm impressed you finally went through the proper submit request process. |
Gets replaced by pure bash. |
No description provided.