Join GitHub today
GitHub is home to over 20 million developers working together to host and review code, manage projects, and build software together.
Move include/rebar.hrl to src/rebar.hrl #281
Conversation
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
Show comment Hide comment
ferd
May 22, 2014
Contributor
Are we aware of any project that decided to depend on this and would break with it? If not (and I guess not), that looks fairly good/safe.
Are we aware of any project that decided to depend on this and would break with it? If not (and I guess not), that looks fairly good/safe. |
I'm not aware of any, and for example all plugins I've seen are calling |
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
Show comment Hide comment
+1 then. |
added a commit
that referenced
this pull request
Jun 14, 2014
tsloughter
merged commit 07e2232
into
rebar:master
Jun 14, 2014
1 check passed
tuncer
deleted the
tuncer:rebar-h-internal
branch
Jun 14, 2014
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
Show comment Hide comment
sebastian
Jun 20, 2014
Hello devs,
First of all, thank you for providing and maintaining a great tool that we all rely on!
Now on to the less pleasant parts:
There are actually some tools relying on the rebar.hrl
in the include
lib.
Here are the ones I found on github: https://github.com/search?q=-include_lib%28%22rebar%2Finclude%2Frebar.hrl%22%29.&ref=cmdform&type=Code
I noticed the change since one of my dependencies broke, and am in the process of submitting fixes where needed.
I am not sure if you are using semantic versioning? But if you were, then this would actually require a new major version, as it breaks backwards compatibility. At least it is my impression that headers in the include lib are considered to be part of a public API?
You have since tagged a version 2.4 (from 2.3.X), and I would have expected that you should then at least have included some deprecation warnings in the include/rebar.hrl
, for then to remove it at a later time?
sebastian
commented
Jun 20, 2014
Hello devs, First of all, thank you for providing and maintaining a great tool that we all rely on! Now on to the less pleasant parts: There are actually some tools relying on the I noticed the change since one of my dependencies broke, and am in the process of submitting fixes where needed. I am not sure if you are using semantic versioning? But if you were, then this would actually require a new major version, as it breaks backwards compatibility. At least it is my impression that headers in the include lib are considered to be part of a public API? You have since tagged a version 2.4 (from 2.3.X), and I would have expected that you should then at least have included some deprecation warnings in the |
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
Show comment Hide comment
tsloughter
Jun 20, 2014
Member
@sebastian thanks, that was a major screw up on our part. We should have at least searched github to check and you are right about the major version bump as well.
We will work to do better in the future.
@sebastian thanks, that was a major screw up on our part. We should have at least searched github to check and you are right about the major version bump as well. We will work to do better in the future. |
AeroNotix
commented
Jun 20, 2014
Another reason that #301 is a good thing. |
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
Show comment Hide comment
sebastian
Jun 20, 2014
Most of all I am very grateful that you are all putting in the effort to maintain the tool! So my thanks for that!
sebastian
commented
Jun 20, 2014
Most of all I am very grateful that you are all putting in the effort to maintain the tool! So my thanks for that! |
added a commit
to sebastian/rebar_proper_plugin
that referenced
this pull request
Jun 20, 2014
sebastian
referenced this pull request
in andrzejsliwa/rebar_proper_plugin
Jun 20, 2014
Closed
Re-define now missing rebar.hrl logging macro's #1
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
Show comment Hide comment
sebastian
Jun 20, 2014
And just to complicate things a little: I am actually not sure how a change like this could have been communicated to actually reach me, since I am not an active participant in neither project nor the main erlang mailing lists.
In any case: have a great weekend folks!
sebastian
commented
Jun 20, 2014
And just to complicate things a little: I am actually not sure how a change like this could have been communicated to actually reach me, since I am not an active participant in neither project nor the main erlang mailing lists. In any case: have a great weekend folks! |
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
Show comment Hide comment
AeroNotix
Jun 20, 2014
@sebastian you should use a known-good version of rebar to compile your project instead of depending on the tip for a start. :)
AeroNotix
commented
Jun 20, 2014
@sebastian you should use a known-good version of rebar to compile your project instead of depending on the tip for a start. :) |
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
Show comment Hide comment
sebastian
Jun 20, 2014
@AeroNotix I couldn't agree more! The problem in this case was that rebar isn't at all a direct dependency of ours. A dependency of ours in turn does depend on master, but that is somewhat outside our control.
We are using @seth's excellent rebar_lock_deps_plugin to try to keep versions as locked down as possible, but unfortunately things still break sometimes.
sebastian
commented
Jun 20, 2014
@AeroNotix I couldn't agree more! The problem in this case was that rebar isn't at all a direct dependency of ours. A dependency of ours in turn does depend on master, but that is somewhat outside our control. We are using @seth's excellent rebar_lock_deps_plugin to try to keep versions as locked down as possible, but unfortunately things still break sometimes. |
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
Show comment Hide comment
AeroNotix
Jun 20, 2014
That plugin is actively lying to people who use it. It's better than nothing, but we should not pretend that it provides repeatable builds.
AeroNotix
commented
Jun 20, 2014
That plugin is actively lying to people who use it. It's better than nothing, but we should not pretend that it provides repeatable builds. |
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
Show comment Hide comment
seth
Jun 20, 2014
While I agree that the lock deps stuff is not enough for reproducible builds, can you clarify the active lying part?
seth
commented
Jun 20, 2014
While I agree that the lock deps stuff is not enough for reproducible builds, can you clarify the active lying part? |
AeroNotix
commented
Jun 20, 2014
@seth well the name implies that it "locks" something, when it doesn't really. It just figures out the commit you have and then... what? Source dependencies are probably not the right thing to do. |
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
Show comment Hide comment
seth
Jun 20, 2014
So the plugin generates a rebar.config.lock file containing the SHA of all deps (including transitive). You can then use this config file for doing builds. As long as those repos and SHAs don't disappear (which they absolutely can!) you get the same code.
Is it perfect? Nope. Is source deps The Right Thing? Nope. Does it help solve a problem for some folks? Yep.
As for this change: this MUST be a major version change.
seth
commented
Jun 20, 2014
So the plugin generates a rebar.config.lock file containing the SHA of all deps (including transitive). You can then use this config file for doing builds. As long as those repos and SHAs don't disappear (which they absolutely can!) you get the same code. Is it perfect? Nope. Is source deps The Right Thing? Nope. Does it help solve a problem for some folks? Yep. As for this change: this MUST be a major version change. |
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
Show comment Hide comment
seth
Jun 20, 2014
So what's the plan on this header file? Revert the change and keep it public or major version bump?
seth
commented
Jun 20, 2014
So what's the plan on this header file? Revert the change and keep it public or major version bump? |
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
Show comment Hide comment
ferd
Jun 20, 2014
Contributor
My guess is we should probably revert it, but I'm in a rush at work and haven't discussed it with anybody else.
My guess is we should probably revert it, but I'm in a rush at work and haven't discussed it with anybody else. |
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
Show comment Hide comment
@tuncer @tsloughter @jaredmorrow any opinion here? |
It appears that there are actually projects using rebar.hrl, so we should restore it for now, but we have to approach #104 sooner than later. |
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
Show comment Hide comment
puzza007
commented
Jun 22, 2014
Do we need to ensure backward compatibility? |
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
Show comment Hide comment
seth
Jun 22, 2014
I think the thing is:
$PROJ/include/*.hrl is assumed to be part of a project's public API by
manny people. It will help those folks if we treat it the same as we'd
treat other public facing parts of the system such as the command line
interface for this project.
Breaking back compat is sometimes the right thing to do. The project
will benefit from setting out a clear plan about how/why/when in the
hopes of preventing people from being surprised by the breakage. Two
things that will have a huge impact on how such changes are received
are: even just the impression that it was announced ahead of time, and
clear instructions on how to work-around and get unbroken.
Searching github for a list of people to reach out to -- not even
suggesting asking for permission -- just hey, this is about to change
and break you, look here for details on how to get working again (a
critical part) seems like a great idea.
And of course part of communicating breaking changes is through a
major version bump.
seth
commented
Jun 22, 2014
I think the thing is: $PROJ/include/*.hrl is assumed to be part of a project's public API by Breaking back compat is sometimes the right thing to do. The project Searching github for a list of people to reach out to -- not even And of course part of communicating breaking changes is through a |
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
Show comment Hide comment
AeroNotix
Jun 22, 2014
Projects which depend on a specific version of rebar can continue doing so, no? Breaking changes are a clear delineation point to mark a different direction for the project.
AeroNotix
commented
Jun 22, 2014
Projects which depend on a specific version of rebar can continue doing so, no? Breaking changes are a clear delineation point to mark a different direction for the project. |
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
Show comment Hide comment
ferd
Jun 23, 2014
Contributor
If we break the API, we should simply go for rebar 3.0 and that's it. We will have to use proper versioning so people can expect to deal with it, and that may require us to have a proper roadmap at some point? Maybe there's one already and I'm not aware of it.
I'll be regenerating rebar 2.5 with a reverted copy of this today.
If we break the API, we should simply go for rebar 3.0 and that's it. We will have to use proper versioning so people can expect to deal with it, and that may require us to have a proper roadmap at some point? Maybe there's one already and I'm not aware of it. I'll be regenerating rebar 2.5 with a reverted copy of this today. |
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
Show comment Hide comment
@ferd wrote:
There's no official roadmap besides TODO tickets, and it would be useful to tag them accordingly. |
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
Show comment Hide comment
ferd
Jun 23, 2014
Contributor
@jaredmorrow is it possible to get a few more tags for issues and pull reqs? TODO / RFC / Minor / Major or something similar to track future road-mapping?
@jaredmorrow is it possible to get a few more tags for issues and pull reqs? TODO / RFC / Minor / Major or something similar to track future road-mapping? |
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
Show comment Hide comment
jaredmorrow
Jun 23, 2014
Contributor
Sure, will do that today.
On Mon, Jun 23, 2014 at 7:13 AM, Fred Hebert notifications@github.com
wrote:
@jaredmorrow https://github.com/jaredmorrow is it possible to get a few
more tags for issues and pull reqs? TODO / RFC / Minor / Major or something
similar to track future road-mapping?—
Reply to this email directly or view it on GitHub
#281 (comment).
Sure, will do that today. On Mon, Jun 23, 2014 at 7:13 AM, Fred Hebert notifications@github.com
|
added a commit
that referenced
this pull request
Jun 23, 2014
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
Show comment Hide comment
ferd
Jun 23, 2014
Contributor
https://github.com/rebar/rebar/releases/tag/2.5.0 Here's the new release. Sorry for the inconvenience.
https://github.com/rebar/rebar/releases/tag/2.5.0 Here's the new release. Sorry for the inconvenience. |
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
Show comment Hide comment
jaredmorrow
Jun 23, 2014
Contributor
I created "Major", "Minor", "RFC" we already have "enhancement" so that
can act as the TODO.
On Mon, Jun 23, 2014 at 12:54 PM, Fred Hebert notifications@github.com
wrote:
https://github.com/rebar/rebar/releases/tag/2.5.0 Here's the new release.
Sorry for the inconvenience.—
Reply to this email directly or view it on GitHub
#281 (comment).
I created "Major", "Minor", "RFC" we already have "enhancement" so that On Mon, Jun 23, 2014 at 12:54 PM, Fred Hebert notifications@github.com
|
tuncer commentedMay 22, 2014
rebar.hrl is only meant to be used by src/*.