Hello Jason, This is perfect !
I had one more question, for full system simulations will there be release of images and kernel files for every architectures (arm , x86, etc)? On Thu, Dec 12, 2019 at 12:57 PM Jason Lowe-Power <ja...@lowepower.com> wrote: > Hey Abhishek, > > Emails will continue to gem5-dev on every changeset pushed to the develop > branch as they do now to master :). We can discuss if we want the same for > feature branches (if we end up using them). > > Your first interpretation on gem5 stable is correct (sorry if this wasn't > clear). It will be much more heavily tested than the minute-by-minute > releases from the develop branch. With this testing we will be publishing > the following: > - What (common) workloads are supported (e.g., SPEC, parsec, etc.). Which > workloads we use here will be discussed in the future, stay tuned. > - For all of the workloads, we will publish common statistics for a few > different systems (e.g., time to simulate, IPC, cache miss rates, memory > bandwidth, etc). The systems used and the stats will be discussed in the > future. > > The stable release will *not* be a continuous process. The only time the > stable branch will be updated is 1) At releases or 2) if a "major" bug is > encountered. For non-release updates (e.g., for bugs), we'll be very > careful to either re-validate our results or somehow know the results won't > change. > > Cheers, > Jason > > > > On Thu, Dec 12, 2019 at 9:38 AM Abhishek Singh < > abhishek.singh199...@gmail.com> wrote: > > > Hi Jason, > > > > Thanks for your email. It cleared a lot of misunderstanding which I had. > > > > Is it possible to have an email sent on every commit we make to atleast > > gem5-dev? > > The email list could be different and can be sent to people who are > > interested in this so that it does not spam to gem5-Dev list. > > > > I am talking about gem5 developer branch and not stable. > > > > This is because, it will keep all the interested community members well > > informed about new features that are added, who like to keep note of > latest > > changes and merge in their projects as required. > > > > And the way, I understand that a stable gem5 when a user desires is: > > It wants the conference accepted applications (standard workload for > > example spec, parsec, etc to run without any errors on both SE and FS > mode > > for every architecture and cpu models. > > > > If that’s what the stable releases are going to be testing before > releasing > > it, then a stable release is much more helpful and will have the wide > > reach. But when I read proposal this seems to be step by step process > > reaching it as the final goal. Please correct me on this if I understood > it > > wrong. > > > > > > The aim of stable releases is a continuous process and will always be > > doubtful unless tested with all the major conference accepted application > > on every stable releases. > > > > On Thu, Dec 12, 2019 at 12:12 PM Jason Lowe-Power <ja...@lowepower.com> > > wrote: > > > > > Hi all, > > > > > > First of all, let me say that I hope it's clear that gem5 is not > > > "controlled" in any way by me! As laid out in our governance document ( > > > http://gem5.org/Governance#Overview), "gem5 is a meritocratic, > > > consensus-based community project". Through these emails, and as the > > chair > > > of the project management committee, I'm trying to *build* consensus. > > > > > > Importantly, there's a reason we're trying to make this push for stable > > > APIs. I've heard from dozens of current and potential gem5 users that > > they > > > want stable gem5 releases. By providing stable releases, we will be > > > expanding the users of gem5 (and, IMO, making the research and papers > > that > > > use gem5 better). > > > > > > Could you please clarify the policy on breaking APIs? It makes sense > for > > > > releases to maintain stable APIs, but how does that apply to the > > > > development branch? I'm worried that it will be very hard to make > > changes > > > > that don't change any interfaces, and we definitely don't want to > > > encourage > > > > a style of development where we just add and add and add without ever > > > > refactoring or consolidating things. If APIs can continue to change > as > > > > needed in the development branch and we just need to warn people > before > > > > they're released, that seems reasonable. > > > > > > > > > Let's dig into this deeper. First, I'd like to remind everyone that the > > > current proposal was the community consensus reached in the gem5 > roadmap > > > document: > > > > > > > > > https://docs.google.com/document/d/1fv01HavfkIIqfcgZoKUpojkUKkWujxspRCcvS5cTfkk/edit > > > . > > > Of course, we can always change what we decided before :). > > > > > > The goal is to provide our users with a stable base to build of off. If > > we > > > are constantly changing interfaces, like we do today, it's impossible > to > > > build a project based off of gem5. There have been many projects that > > have > > > languished because of this including gem5+SST and dist-gem5. If we had > > well > > > defined interfaces *that weren't constantly changing* I believe it > would > > > make gem5 a more widely used project. > > > > > > The proposal is to have *one* API breaking release every year. This was > > > decided based on community feedback in the roadmap document. > > > > > > I (personally) believe we need to slow down and be more deliberate > about > > > changing our interfaces. I think that it's a good thing that "it will > be > > > very hard to make changes that don't change any interfaces". This will > > make > > > gem5 more stable and easy for others to use. If you believe you need to > > > change an interface, we should have a discussion about it first, and > this > > > should include a discussion about how the interface change will affect > > our > > > users. > > > > > > I strongly agree that "we definitely don't want to encourage a style of > > > development where we just add and add and add without ever refactoring > or > > > consolidating things." The current proposal states that when changing > an > > > interface, we first add a new function and mark the old version as > > > deprecated. Then, during the API changing merge window delete all of > the > > > deprecated functions. This is going to take more maintenance from our > > side, > > > but we now have the resources to do this. > > > > > > I disagree that "we just need to warn people before [API changes] are > > > released" is enough. We need to give them significant (months) of lead > > > time, and we need to give them the opportunity to transition. In fact, > I > > > believe this is what Abhishek was getting at in his follow up. > > > > > > In general (and not necessarily tied to this proposal), we should try > > very > > > > hard not to have silos where people develop incompatible features and > > > don't > > > > add to gem5 in a holistic way. It's easiest to wall off functionality > > > > behind ifdefs or config options or in separate repositories and then > > just > > > > ignore it when implementing new features, but that creates a lot of > > > > technical debt and complexity which really cripples both gem5 and > > future > > > > development and compounds exponentially over time. > > > > > > > > > I agree with this statement. We need to encourage development in the > open > > > based on the mainline code. I strongly believe the current proposal > > *makes > > > this easier*, not harder. Today, many people do exactly what you're > > > describing. By implementing stable APIs that people can build off of > and > > > allowing branches, we will be making it easier to add features to gem5 > > in a > > > holistic way. > > > > > > Back to the branches, I'm still not a fan. I think it gives people an > > > > excuse not to make changes ("you want me to refactor 18 months of > code > > > for > > > > that?" (not an actual quote)), on top of other issues. Also there are > > > more > > > > than two options. You can do your work on top of tree like I do, even > > > when > > > > adding big new features. It ensures that you don't get too invested > in > > > bad > > > > paths and don't have a mountain of integration work to do when you > > > finally > > > > decide to bridge back in. It also gives the community an appropriate > > > > opportunity to provide feedback through review which is not practical > > > when > > > > dealing with dozens of files and thousands of lines of code with > months > > > of > > > > yet unseen history and iteration. > > > > > > > > > No one can do what you do, Gabe :D. > > > > > > More seriously, a couple of points: > > > - Branches won't be "unseen." Their development and code review will > > still > > > happen on Gerrit. It just won't spam the list on every commit. > > > - People already use this excuse not to make refactors. Or, (IMO much > > > worse) they just give up and don't merge their changes. > > > > > > Lately, I've noticed we've been *very* slow to incorporate new > features. > > > Other than systemc and the fastmodel, the only major new feature in the > > > past couple of years I can think of is the ARM SVE changes, which > > required > > > a herculean effort and would have been much easier with branches, I > > > believe. Some contributors have the resources to spend 100% of their > time > > > on gem5, but that's a rare case in industry and in academia. We have to > > > assume that most things will be developed by one or two people, over > the > > > course of years, spending less than 50% of their time on it. > > > > > > As a specific example, I know it would be easier for me and my students > > to > > > upstream the flexcpu model we've created if we could just merge a > branch > > > (with the appropriate reviews, of course!). This has *required* a lot > of > > > out of mainline development. It's so far been almost two years and at > > least > > > three different students working on it to get it to a state where it's > > 90% > > > working. It doesn't make sense to submit a patch with a half working > CPU > > > model. As it is, we've been spending a huge amount of time rebasing and > > > re-writing history to try to get the commits to make sense when we do > > > finally push it. It would be easier if we could just incorporate > changes > > > from mainline by adding new changesets on top of what we've done > instead > > of > > > having to rebase. This is also a good example of where I'd have loved > to > > > have a stable API. In the 1.5-2 years we've been working on it, the > > > ExecContext interface has changed at least three times causing us to > have > > > to go through a major refactor each time. I'm certain we're not the > only > > > group going through this pain. > > > > > > Another use case is that most contributors want to wait until a paper > is > > > published before pushing their work. Developing in the open one > changeset > > > at a time just isn't the most common use case for gem5. > > > > > > I agree with Gabe, it seems like gem5 is taking a way to get better > but > > it > > > > will very hard for PhD students to suddenly adapt and review thousand > > > lines > > > > of code with months of yet unseen history and iteration and the > reason > > > > behind every change. > > > > > > > > > Thanks for the feedback, Abhishek! > > > > > > Could you describe this in more detail? I'm not sure I understand your > > > concern. I'll go ahead and describe what I see as the new flow below, > > > though. > > > > > > 1. On a minor release: > > > You'll have a choice, you can either merge the new minor release into > > your > > > code or stay on the old release. The only reason you would want to > merge > > in > > > the new minor release is that there is a new feature or a change in > > > behavior that you want to take advantage of. Note: we will make it very > > > clear in the release notes what is changed each time. > > > > > > If you choose to merge in the new minor release, *it should be very > > easy*. > > > We will not break any interfaces, therefore the merge should be simple. > > As > > > long as you only used "official" APIs, your code should work *without > any > > > changes*. > > > > > > 2. On a major release > > > Again, you'll have the choice to merge or not. If there aren't any new > > > features you need, don't merge! If there are new features, then you may > > > want to take the effort to merge. > > > > > > To merge at a major release, you'll probably have to update your code > > since > > > APIs may have changed. These will be very well documented in the > release > > > notes with information on how to update your code. Additionally, > assuming > > > that you pulled the previous minor releases, you will have known this > was > > > coming because any APIs that have changed would have been marked as > > > deprecated and produced compile time or run time warnings. > > > > > > 3. Contributing your code back to gem5 > > > If you have a big new feature (e.g., a new CPU model), you can email > > > gem5-dev and request a new branch. We'll set that up and then we can > > start > > > reviewing the code! There will likely be some refactoring that's > required > > > or merging current development changes. You can do this *on top* of > your > > > current changes, instead of having to rebase 50 changesets :). Once the > > > code is to a point that the maintainer and the community are happy, > then > > it > > > will be a simple merge commit into the develop branch! > > > > > > Of course, small bugfixes should just be on top of develop. And, if > your > > > big new feature requires API changes, then it may be more effort to get > > the > > > branch merged. > > > > > > If this doesn't make it clear, please let me know! > > > > > > ------------ > > > > > > To conclude: I'm trying to build consensus here. I want to see gem5 > used > > as > > > broadly as possible; I want to see gem5 used to produce sustainable, > > > reproducible, and scientifically rigorous research; and I want to see > > gem5 > > > be easy to use. I believe this new release model will help with these > > > things, but I'm 100% open to modifications. > > > > > > I would appreciate specific actionable feedback. Simply saying "I don't > > > like the idea" is helpful, but it would be more helpful to provide > > updates > > > the proposal with your ideas on how to accomplish the goals of the gem5 > > > community project (again, see the Governance document: > > > http://gem5.org/Governance#Philosophy). > > > > > > Cheers, > > > Jason > > > > > > On Wed, Dec 11, 2019 at 7:49 PM Abhishek Singh < > > > abhishek.singh199...@gmail.com> wrote: > > > > > > > > Hi Jason, > > > > I agree with Gabe, it seems like gem5 is taking a way to get better > > but > > > it > > > > will very hard for PhD students to suddenly adapt and review thousand > > > lines > > > > of code with months of yet unseen history and iteration and the > reason > > > > behind every change. > > > > > > > > And in the end it may end up to be used as a course project rather > than > > > > thesis project or project for architecture conferences as people will > > use > > > > the commit or the branch which they are most familiar with. > > > > With so less releases every year, personally it will take a lot of > time > > > to > > > > relearn and understand the implementation in detail. > > > > > > > > But as this fully controlled by you, we can only suggest you. It > should > > > not > > > > be like people are creating another public gem5 as we have now and > use > > > that. > > > > > > > > This issue was raised by Gabe on Nov 27 email and today also, so I > hope > > > we > > > > take that into account. > > > > It feels like gem5 is getting towards privatization... > > > > > > > > It’s just a opinion, it may be wrong. > > > > > > > > On Wed, Dec 11, 2019 at 10:12 PM Gabe Black <gabebl...@google.com> > > > wrote: > > > > > > > > > Could you please clarify the policy on breaking APIs? It makes > sense > > > for > > > > > releases to maintain stable APIs, but how does that apply to the > > > > > development branch? I'm worried that it will be very hard to make > > > changes > > > > > that don't change any interfaces, and we definitely don't want to > > > encourage > > > > > a style of development where we just add and add and add without > ever > > > > > refactoring or consolidating things. If APIs can continue to change > > as > > > > > needed in the development branch and we just need to warn people > > before > > > > > they're released, that seems reasonable. > > > > > > > > > > In general (and not necessarily tied to this proposal), we should > try > > > very > > > > > hard not to have silos where people develop incompatible features > and > > > don't > > > > > add to gem5 in a holistic way. It's easiest to wall off > functionality > > > > > behind ifdefs or config options or in separate repositories and > then > > > just > > > > > ignore it when implementing new features, but that creates a lot of > > > > > technical debt and complexity which really cripples both gem5 and > > > future > > > > > development and compounds exponentially over time. > > > > > > > > > > Back to the branches, I'm still not a fan. I think it gives people > an > > > > > excuse not to make changes ("you want me to refactor 18 months of > > code > > > for > > > > > that?" (not an actual quote)), on top of other issues. Also there > are > > > more > > > > > than two options. You can do your work on top of tree like I do, > even > > > when > > > > > adding big new features. It ensures that you don't get too invested > > in > > > bad > > > > > paths and don't have a mountain of integration work to do when you > > > finally > > > > > decide to bridge back in. It also gives the community an > appropriate > > > > > opportunity to provide feedback through review which is not > practical > > > when > > > > > dealing with dozens of files and thousands of lines of code with > > months > > > of > > > > > yet unseen history and iteration. > > > > > > > > > > Gabe > > > > > > > > > > On Wed, Dec 11, 2019 at 5:30 PM Jason Lowe-Power < > > ja...@lowepower.com> > > > > > wrote: > > > > > > > > > > > Hi all, > > > > > > > > > > > > Here are the specific changes we're proposing. Please give us > your > > > > > > feedback! If you disagree with some part of this proposal, let us > > > know > > > > > > why and what you suggest instead. > > > > > > > > > > > > # What's changing now > > > > > > > > > > > > 1) We are going to release gem5 19 "soon" (two blocking issues: > 1) > > > > > > this proposal and 2) the website) > > > > > > 2) When we release gem5 19 we are going to create a new branch > > called > > > > > > "develop" which branches at the point we make the release. > > > > > > 3) We are going to tag master with "19.0.0-beta" > > > > > > > > > > > > After this, all development will move to the develop branch > instead > > > of > > > > > > master. This will allow the common case of people using gem5 for > > > > > > research to be the default. When cloning gem5 you will get a > > "stable" > > > > > > release. > > > > > > > > > > > > ## Changes for developers > > > > > > > > > > > > There will be two changes for developers: > > > > > > 1) You'll have to checkout develop after cloning > > > > > > 2) You'll have to push to "refs/for/develop" instead of > > > "refs/for/master" > > > > > > > > > > > > # Next release > > > > > > > > > > > > When we get to our next release (gem5 20, yay!), we will merge > the > > > > > > develop branch into master. Assuming no hotfixes, this will be a > > > > > > simple fast forward. > > > > > > > > > > > > We will have a major release once per year usually in April > (after > > > the > > > > > > MICRO deadline but with enough lead time to put together an ISCA > > > > > > tutorial). We will have two minor releases later in the year, one > > in > > > > > > August and one in December. > > > > > > > > > > > > # Why are we going to releases? > > > > > > > > > > > > It's important for our *users* (remember, we're developing gem5 > to > > be > > > > > > used by other people, not just core developers!) to be able to > > build > > > > > > off of stable APIs. Therefore, between major releases *we will > not > > > > > > change any APIs*. Code that we expect other people will build off > > of > > > > > > are APIs. This includes, but is not limited to: > > > > > > - Ports > > > > > > - ExecContext > > > > > > - Packet > > > > > > - SimObject, ClockedObject, etc. > > > > > > - Event, EventQueue, etc. > > > > > > - Command line options > > > > > > - And probably many more. We will work on finalizing this over > the > > > > > > next couple of months before the gem5-20 release. > > > > > > > > > > > > ## What does going to releases mean for developers? > > > > > > > > > > > > Thus, if any developers want to make changes to the above code, > we > > > must > > > > > > Mark the API as "deprecated" at least by the *.2 December release > > to > > > > > > give users at least one quarter to prepare. > > > > > > AND either > > > > > > 1) Make backwards compatible changes (e.g., just add a new > function > > > to > > > > > > the API that we will switch to when the API merge window opens > > (after > > > > > > the December minor release)) > > > > > > or 2) Create a new branch from develop that we wait to merge > until > > > the > > > > > > merge window. > > > > > > > > > > > > # Feature branches > > > > > > > > > > > > Despite the disagreement in this thread so far, we're still > > proposing > > > > > > feature branches. However, they should be *rare*, and only > > > maintainers > > > > > > will have the ability to add new branches. The exact gerrit > > > mechanisms > > > > > > for this need to be figured out. > > > > > > > > > > > > We *require* something like feature branches given this new > release > > > > > > model for two reasons: > > > > > > 1) There will be API breaking changes that will be long-lived (at > > > > > > least between a major release and the next API change merge > > window). > > > > > > 2) Many people develop new features to incorporate into gem5 and > > > > > > frequently they take months of *iteration* before they are ready > to > > > be > > > > > > merged. AMD's GPU model in the gcn-staging branch is one example > > > > > > ( > > > > > > > > > > > > > > > > > > > > https://gem5.googlesource.com/amd/gem5/+/refs/heads/agutierr/master-gcn3-staging > > > > > > ), > > > > > > the FlexCPU model my group has been working on is another > > > > > > (https://github.com/darchr/gem5/tree/flexcpu). > > > > > > We need an improved method of merging these kinds of changes. > > > > > > > > > > > > The way I see it, we have two options: continue development > locally > > > in > > > > > > our own repos as we are doing right now. OR we could move the > > > > > > development *into the open* by creating feature branches on the > > main > > > > > > gem5 repo. I prefer the latter. There's little difference to > > Gerrit. > > > > > > The main difference is what you get when you do git pull. > > > > > > > > > > > > It will be up to the maintainers to make sure branches are merged > > in > > > a > > > > > > timely fashion and we don't create too many branches. They should > > be > > > > > > kept up to date by their maintainer by frequently merging the > > develop > > > > > > branch. > > > > > > > > > > > > # Hotfixes to the stable/master branch > > > > > > > > > > > > It's likely we'll find bugs while developing gem5. If the > > maintainer > > > > > > for the component thinks the bug is severe enough (I don't want > to > > > > > > make any specific guidelines right now), we will backport that > bug > > to > > > > > > the master branch. We'll have to work on our process for this to > > > > > > ensure that develop will cleanly merge into master later, but > this > > > > > > should be straightforward. > > > > > > > > > > > > # Feedback > > > > > > > > > > > > Please let us know what you think! We're going to go one more > round > > > of > > > > > > feedback on the gem5-dev list, then we'll post the finalized > > version > > > > > > on gem5-users for a last round of feedback. I'm hoping to begin > to > > > > > > implement this early next year! > > > > > > > > > > > > Thanks for your patience on this. I know it's a lot to read > through > > > > > > and think about, but it's important that we get this process > right > > > the > > > > > > first time. We don't want to have to change this every year :). > > > > > > > > > > > > Cheers, > > > > > > Jason > > > > > > > > > > > > On Tue, Dec 10, 2019 at 4:49 PM Bobby Bruce <bbr...@ucdavis.edu> > > > wrote: > > > > > > > > > > > > > > Thank you all for your comments on this. > > > > > > > > > > > > > > In regards to the master/develop branch idea, I'm a big > advocate > > of > > > > > > Jason's > > > > > > > "make the most common use the easiest" philosophy. I think he > > did a > > > > > good > > > > > > > job of describing why this is important. We use the git repo as > > our > > > > > > > primarily way of distributing gem5, and, as such, I believe the > > > default > > > > > > > behaviour should be that when a user clones the repo, they are > > > getting > > > > > > the > > > > > > > latest stable release to build on top of. I strongly suspect > > users > > > will > > > > > > > disproportionately use whatever `git clone` gives them rather > > than > > > move > > > > > > > between branches or tags in order to get specific, stable > > releases. > > > If > > > > > > most > > > > > > > users end up working on the very latest "unstable" development > > > version > > > > > > then > > > > > > > our release system becomes pointless. I realize as everyone on > > this > > > > > list > > > > > > is > > > > > > > a gem5 contributor, there is a preference for the development > > > branch to > > > > > > be > > > > > > > default, but I'd hope we are in the minority of people who > > actually > > > use > > > > > > > gem5. My vote therefore still goes to having two branches: the > > > > > > > master/"release" branch and the "develop" branch for day-to-day > > > > > > > development. Hotfixes would be created on a separate branch and > > > merged > > > > > > into > > > > > > > both upon completion. > > > > > > > > > > > > > > Regarding feature branching --- My intention with this part of > > the > > > > > > proposal > > > > > > > was not for feature branches to be the default manner in which > > > people > > > > > > > commit to gem5 (as they would be if we were to implement the > > > GitFlow > > > > > > model > > > > > > > in full), I consider them something we should allow, in some > > form, > > > to > > > > > > > improve the development process in certain circumstances, but > > that > > > they > > > > > > > should be a rather rare thing. For example, a new component may > > > need > > > > > > > several months of development work, consisting of many commits. > > > > > > Developers, > > > > > > > at present, have two options: either A) gradually incorporate > > > commits > > > > > > over > > > > > > > the months on the master branch, or B) push all the commits to > > the > > > > > master > > > > > > > branch in one go. I don't think either are ideal solutions. A > > > > > dedicated > > > > > > > feature branch would quarantine these changes while in active > > > > > > development, > > > > > > > to be merged at a later date. A second circumstance that could > > > arise is > > > > > > > when we wish to postpone the incorporation of a feature. A > change > > > that > > > > > > > requires an API alteration, for example, should be held-off > until > > > we > > > > > are > > > > > > > ready to deploy a major release. Isolating such a change in a > > > feature > > > > > > > branch, to be merged later, may be necessary. This all being > > said, > > > I > > > > > > > acknowledge there is a risk in code getting lost indefinitely, > or > > > for > > > > > > long > > > > > > > periods of time, in feature branches, and our repo getting > messy > > as > > > a > > > > > > > result. After some discussion with Jason, I believe the best of > > > both > > > > > > worlds > > > > > > > can be achieved if we make feature branches "by request" --- > > anyone > > > > > > wanting > > > > > > > to create a feature branch would need to ask a maintainer (or a > > > PCM) to > > > > > > > create one for them. Whether or not a feature branch is to be > > > created > > > > > > would > > > > > > > be decided upon on a case-by-case basis. > > > > > > > > > > > > > > I hope no one feels like I'm dictating anything here. I'm > writing > > > this > > > > > > > primarily to prompt more discussion, so please feel free to > > counter > > > any > > > > > > of > > > > > > > my points or suggest alternatives. Simple messages of support, > as > > > well > > > > > as > > > > > > > criticism, would also be appreciated to help us get a feel for > > what > > > is, > > > > > > or > > > > > > > what is not, proving popular with the community. > > > > > > > > > > > > > > Kind regards, > > > > > > > Bobby > > > > > > > -- > > > > > > > Dr. Bobby R. Bruce > > > > > > > Room 2235, > > > > > > > Kemper Hall, UC Davis > > > > > > > Davis, > > > > > > > CA, 95616 > > > > > > > > > > > > > > > > > > > > > On Wed, Nov 27, 2019 at 4:49 PM Gabe Black < > gabebl...@google.com > > > > > > > > wrote: > > > > > > > > > > > > > > > The idea of feature branches makes me very nervous. It sounds > > > like a > > > > > > dark > > > > > > > > corner for a large body of code to grow in, and then once it > > pops > > > > > back > > > > > > into > > > > > > > > the light there may be very ingrained and difficult to fix > > > problems > > > > > > which > > > > > > > > either have to be ignored or fixed. A long standing branch > may > > > also > > > > > be > > > > > > very > > > > > > > > hard to reconcile with ToT, and it may be very tempting to > just > > > let > > > > > it > > > > > > die > > > > > > > > rather than try to jump that energy barrier and get it back > > into > > > > > > mainline. > > > > > > > > > > > > > > > > This would basically be sanctifying the practice of > > perma-forking > > > > > gem5, > > > > > > > > which unfortunately happens anyway now and then. There have > > been > > > a > > > > > > number > > > > > > > > of times on the mailing list someone says something along the > > > lines > > > > > of > > > > > > "I > > > > > > > > downloaded special version of gem5 foo from some github" and > it > > > turns > > > > > > out > > > > > > > > it's X years old with a bunch of old and new bugs, nobody > knows > > > how > > > > > it > > > > > > > > works, etc. Let's not encourage that :-). > > > > > > > > > > > > > > > > Gabe > > > > > > > > > > > > > > > > On Wed, Nov 27, 2019 at 9:17 AM Vince Harron < > > vhar...@google.com > > > > > > > > > > wrote: > > > > > > > > > > > > > > > > > I agree with Ciro that the de facto standard used by most > > > projects > > > > > is > > > > > > > > that > > > > > > > > > mainline development should happen in master and releases > > > should be > > > > > > new > > > > > > > > > branches created off of master. > > > > > > > > > > > > > > > > > > You could also create a branch “stable” or “latest” that > gets > > > > > > updated to > > > > > > > > > the latest release. > > > > > > > > > > > > > > > > > > The default download instructions could say something like > > > > > > > > > > > > > > > > > > git clone <url> —branch stable > > > > > > > > > > > > > > > > > > > > > > > > > > > On Wed, Nov 27, 2019 at 8:54 AM Jason Lowe-Power < > > > > > > ja...@lowepower.com> > > > > > > > > > wrote: > > > > > > > > > > > > > > > > > > > Thanks for the input Ciro! > > > > > > > > > > > > > > > > > > > > My pushback here is that most people who use gem5 will be > > > making > > > > > > > > > > modifications to it (at least for the foreseeable > future). > > I > > > > > don't > > > > > > > > think > > > > > > > > > we > > > > > > > > > > want to common use case to be 1) Download a tarball, 2) > > make > > > > > local > > > > > > > > > > modifications to the source. I think we want people to 1) > > > clone a > > > > > > > > > "stable" > > > > > > > > > > gem5, 2) make modifications to the stable branch for > their > > > > > > research *in > > > > > > > > > > git*. > > > > > > > > > > > > > > > > > > > > My experience with architecture grad students and > > researchers > > > is > > > > > > that > > > > > > > > if > > > > > > > > > > you don't force them to use things like git most of them > > > won't. > > > > > > One of > > > > > > > > my > > > > > > > > > > (personal) goals is to make it easy/default to use gem5 > > "the > > > > > right > > > > > > > > way". > > > > > > > > > > > > > > > > > > > > In fact, I almost don't want to provide tarballs at all. > > > Unless > > > > > we > > > > > > can > > > > > > > > > > provide pre-build gem5 binaries, I don't think it makes > > sense > > > to > > > > > > > > provide > > > > > > > > > > tarballs. I don't think prebuilt binaries make sense for > > the > > > > > > research > > > > > > > > use > > > > > > > > > > case of gem5 since almost all research will require > > extending > > > > > gem5 > > > > > > and > > > > > > > > > > there's no way to dynamically load in new modules (though > > we > > > > > should > > > > > > > > > support > > > > > > > > > > this in the future!). For teaching with gem5 prebuilt > > > binaries > > > > > > could > > > > > > > > make > > > > > > > > > > sense, but I think we'll hold off on that for now, TBH. > > > > > > > > > > > > > > > > > > > > I think this comes down to "make the common case fast". I > > > believe > > > > > > the > > > > > > > > > > common case is researchers who want to make minor changes > > to > > > gem5 > > > > > > > > (e.g., > > > > > > > > > > add a new SimObject or modify the cache protocol) and run > > > > > > experiments > > > > > > > > for > > > > > > > > > > their research. Developing gem5 for the community (using > > the > > > > > > > > development > > > > > > > > > > branch) is actually the uncommon case. > > > > > > > > > > > > > > > > > > > > BTW, I agree with you that we should try to follow > whatever > > > > > > practices > > > > > > > > are > > > > > > > > > > most popular when it makes sense. However, in many ways > > gem5 > > > is a > > > > > > > > unique > > > > > > > > > > project, so following others doesn't always make sense > :). > > > > > > > > > > > > > > > > > > > > I'm open to discussion on this. Thoughts? > > > > > > > > > > > > > > > > > > > > Cheers, > > > > > > > > > > Jason > > > > > > > > > > > > > > > > > > > > On Wed, Nov 27, 2019 at 12:01 AM Ciro Santilli < > > > > > > ciro.santi...@arm.com> > > > > > > > > > > wrote: > > > > > > > > > > > > > > > > > > > > > Thanks Bobby for pushing this forward, having releases > > > would > > > > > be a > > > > > > > > good > > > > > > > > > > > thing for gem5. > > > > > > > > > > > > > > > > > > > > > > I would recommend against having both master and > develop > > > branch > > > > > > > > though, > > > > > > > > > > > because in the large majority of projects out there, > > master > > > == > > > > > > the > > > > > > > > > latest > > > > > > > > > > > version, so I'm always confused when I have to switch > to > > > > > develop, > > > > > > > > > > specially > > > > > > > > > > > if it isn't the default HEAD (is is however possible to > > set > > > the > > > > > > > > default > > > > > > > > > > > branch to develop as shown as: > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > https://gerrit-review.googlesource.com/Documentation/project-configuration.html#default-branch > > > > > > > > > > > ) > > > > > > > > > > > > > > > > > > > > > > This is even more important if we start having prebuilt > > > > > releases > > > > > > or > > > > > > > > > tgzs > > > > > > > > > > > with source (which are smaller than full repo) for the > > > tags, at > > > > > > which > > > > > > > > > > point > > > > > > > > > > > basically everyone who clones wants the latest. > > > > > > > > > > > > > > > > > > > > > > I would instead recommend: > > > > > > > > > > > > > > > > > > > > > > - master: latest version > > > > > > > > > > > - v2019: a tag. The latest one can be easily found > with: > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > https://stackoverflow.com/questions/1404796/how-to-get-the-latest-tag-name-in-current-branch-in-git > > > > > > > > > > > - 2019 or b2019: branch created at the same time as > v2019 > > > to > > > > > > which > > > > > > > > > > > backports are applied, and to which v2019.0.1 tags can > > also > > > be > > > > > > > > > optionally > > > > > > > > > > > applied > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > ________________________________ > > > > > > > > > > > From: gem5-dev <gem5-dev-boun...@gem5.org> on behalf > of > > > Bobby > > > > > > Bruce > > > > > > > > < > > > > > > > > > > > bbr...@ucdavis.edu> > > > > > > > > > > > Sent: Wednesday, November 27, 2019 12:10 AM > > > > > > > > > > > To: gem5-dev@gem5.org <gem5-dev@gem5.org> > > > > > > > > > > > Subject: [gem5-dev] gem5 19.0.0 : New git branching > > > proposal > > > > > > > > > > > > > > > > > > > > > > Dear all, > > > > > > > > > > > > > > > > > > > > > > As you know, at the end of this quarter we will be > > > releasing > > > > > > gem5-19, > > > > > > > > > the > > > > > > > > > > > first official release of gem5. As part of this release > > > we'd > > > > > > like to > > > > > > > > > > change > > > > > > > > > > > our git branching structure. Therefore, I'm writing to > > ask > > > for > > > > > > > > feedback > > > > > > > > > > on > > > > > > > > > > > what we have planned and whether it can be improved > upon. > > > > > > > > > > > > > > > > > > > > > > We'd like to have a git repo structure similar to that > > used > > > in > > > > > > > > gitflow > > > > > > > > > > > development: > > > > > > https://nvie.com/posts/a-successful-git-branching-model > > > > > > > > . > > > > > > > > > > > I've > > > > > > > > > > > seen this model work well before, as it has some > > worthwhile > > > > > > > > abstractors > > > > > > > > > > for > > > > > > > > > > > public, open source git projects with regular releases. > > > What > > > > > I'd > > > > > > like > > > > > > > > > to > > > > > > > > > > > incorporate from this model is the following: > > > > > > > > > > > > > > > > > > > > > > - Two permanent branches: master and develop. > > > > > > > > > > > - "develop" would function as master does now. This > would > > > be > > > > > the > > > > > > main > > > > > > > > > > point > > > > > > > > > > > in which changes are applied between gem5 releases. > > > > > > > > > > > - Upon a new release of gem5, the develop branch would > be > > > > > merged > > > > > > into > > > > > > > > > > > master and a new git tag added to master indicating the > > > release > > > > > > > > > version. > > > > > > > > > > > Ergo, the master branch would always contain the latest > > > release > > > > > > of > > > > > > > > > gem5. > > > > > > > > > > > - If a quick hotfix is needed, a new "hotfix" branch > > would > > > be > > > > > > created > > > > > > > > > and > > > > > > > > > > > merged into both the develop and master branches upon > > > > > completion. > > > > > > > > This > > > > > > > > > > > would also require a new tag on the master branch. (I > > > suggest > > > > > > using > > > > > > > > the > > > > > > > > > > > standard "Version [Major].[Minor].[Hotfix]" version > > > numbering > > > > > > system. > > > > > > > > > > I.e., > > > > > > > > > > > the first version would be V19.0.0, a hotfix to this > > would > > > make > > > > > > it > > > > > > > > > > V19.0.1, > > > > > > > > > > > and a minor release would make it V19.1.0). > > > > > > > > > > > - The creation of feature branches would be permitted. > > > These > > > > > > branches > > > > > > > > > > would > > > > > > > > > > > encapsulate the gradual development of large features > > > (i.e., > > > > > ones > > > > > > > > > carried > > > > > > > > > > > out over many commits). When complete a feature branch > > > would be > > > > > > > > merged > > > > > > > > > > into > > > > > > > > > > > the develop branch. They'd be no obligation to use > > feature > > > > > > branches > > > > > > > > > > though > > > > > > > > > > > we believe they could be of value in certain cases. For > > > > > example, > > > > > > if a > > > > > > > > > > > developer wishes to postpone a developed feature for a > > > given > > > > > gem5 > > > > > > > > > release > > > > > > > > > > > (e.g., something more suited for a major release rather > > > than a > > > > > > minor > > > > > > > > > > one), > > > > > > > > > > > then they could submit their changes as a feature > branch > > > and > > > > > > wait to > > > > > > > > > > merge > > > > > > > > > > > to the develop branch at a later date. > > > > > > > > > > > > > > > > > > > > > > I believe this setup would make our development process > > run > > > > > > smoother > > > > > > > > > and > > > > > > > > > > > give gem5 users more stability. Day-to-day development > > > wouldn't > > > > > > > > change > > > > > > > > > > much > > > > > > > > > > > as committing to the develop branch would work in the > > same > > > way > > > > > as > > > > > > > > > > > submitting to master does now. > > > > > > > > > > > > > > > > > > > > > > If anyone has any thoughts about this, I'd be happy to > > hear > > > > > from > > > > > > you. > > > > > > > > > > > > > > > > > > > > > > Kind regards, > > > > > > > > > > > Bobby > > > > > > > > > > > -- > > > > > > > > > > > Dr. Bobby R. Bruce > > > > > > > > > > > Room 2235, > > > > > > > > > > > Kemper Hall, UC Davis > > > > > > > > > > > Davis, > > > > > > > > > > > CA, 95616 > > > > > > > > > > > _______________________________________________ > > > > > > > > > > > gem5-dev mailing list > > > > > > > > > > > gem5-dev@gem5.org > > > > > > > > > > > http://m5sim.org/mailman/listinfo/gem5-dev > > > > > > > > > > > _______________________________________________ > > > > > > > > > > > gem5-dev mailing list > > > > > > > > > > > gem5-dev@gem5.org > > > > > > > > > > > http://m5sim.org/mailman/listinfo/gem5-dev > > > > > > > > > > _______________________________________________ > > > > > > > > > > gem5-dev mailing list > > > > > > > > > > gem5-dev@gem5.org > > > > > > > > > > http://m5sim.org/mailman/listinfo/gem5-dev > > > > > > > > > > > > > > > > > > -- > > > > > > > > > > > > > > > > > > Vince Harron | Engineering Manager | vhar...@google.com > | > > > > > > > > 858-442-0868 <(858)%20442-0868> > > > > > > > > > <(858)%20442-0868> > > > > > > > > > _______________________________________________ > > > > > > > > > gem5-dev mailing list > > > > > > > > > gem5-dev@gem5.org > > > > > > > > > http://m5sim.org/mailman/listinfo/gem5-dev > > > > > > > > _______________________________________________ > > > > > > > > gem5-dev mailing list > > > > > > > > gem5-dev@gem5.org > > > > > > > > http://m5sim.org/mailman/listinfo/gem5-dev > > > > > > > _______________________________________________ > > > > > > > gem5-dev mailing list > > > > > > > gem5-dev@gem5.org > > > > > > > http://m5sim.org/mailman/listinfo/gem5-dev > > > > > > _______________________________________________ > > > > > > gem5-dev mailing list > > > > > > gem5-dev@gem5.org > > > > > > http://m5sim.org/mailman/listinfo/gem5-dev > > > > > _______________________________________________ > > > > > gem5-dev mailing list > > > > > gem5-dev@gem5.org > > > > > http://m5sim.org/mailman/listinfo/gem5-dev > > > > _______________________________________________ > > > > gem5-dev mailing list > > > > gem5-dev@gem5.org > > > > http://m5sim.org/mailman/listinfo/gem5-dev > > > _______________________________________________ > > > gem5-dev mailing list > > > gem5-dev@gem5.org > > > http://m5sim.org/mailman/listinfo/gem5-dev > > _______________________________________________ > > gem5-dev mailing list > > gem5-dev@gem5.org > > http://m5sim.org/mailman/listinfo/gem5-dev > _______________________________________________ > gem5-dev mailing list > gem5-dev@gem5.org > http://m5sim.org/mailman/listinfo/gem5-dev _______________________________________________ gem5-dev mailing list gem5-dev@gem5.org http://m5sim.org/mailman/listinfo/gem5-dev