Bug 422 - Migrate away from nmigen Record
Summary: Migrate away from nmigen Record
Status: RESOLVED FIXED
Alias: None
Product: Libre-SOC's first SoC
Classification: Unclassified
Component: Source Code (show other bugs)
Version: unspecified
Hardware: All All
: --- enhancement
Assignee: Luke Kenneth Casson Leighton
URL:
Depends on:
Blocks:
 
Reported: 2020-07-08 09:01 BST by Jacob Lifshay
Modified: 2020-07-09 12:10 BST (History)
2 users (show)

See Also:
NLnet milestone: ---
total budget (EUR) for completion of task and all subtasks: 0
budget (EUR) for this task, excluding subtasks' budget: 0
parent task for budget allocation:
child tasks for budget allocation:
The table of payments (in EUR) for this task; TOML format:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Jacob Lifshay 2020-07-08 09:01:30 BST
whitequark is apparently planning on deprecating Record:

https://github.com/nmigen/nmigen/pull/368#issuecomment-655350307
Comment 1 Luke Kenneth Casson Leighton 2020-07-08 11:31:41 BST
whitequark: i'm adding you as a cc on this bugreport.  awygle's comment
here that Record.connect is "not used" is incorrect:
https://github.com/nmigen/nmigen/pull/368

in the 75,000 lines of code in libre-soc, we make substantial use of
Record (the entire codebase relies on it), and also use Record.connect
in a number of places.

here is a count just the count of the number of base classes
(excluding inherited classes) and locations where Record is used:

soc$ find . -name "*.py" | xargs grep 'Record' | wc
    140     694   10827

we cannot make a similar cursory count for the IEEE754 FPU because the
OO inheritance and sub-object tree is 2 to 4 levels deep in places.

it would be *significantly* disruptive to the project to be forced to
modify and review 75,000 lines of code in order to remove Record, and
it would be seriously problematic if Record.connect disappeared.

also it would be disruptive to Minerva, where Record.connect is utilised
for all wishbone bus communications (and we are using that code)

(microwatt's wishbone implementation has to split incoming from outgoing
signals into separate structs and it becomes incredibly confusing:
it appears that a module using two such separate structs then has two
connections: one to a wishbone master and one to a wishbone slave,
whereas in fact it's just a single wishbone slave connection.  this
kind of confusion took over 15 minutes of detailed reading of the code
to identify).

any modifications to the IEEE754 FP library (45,000 lines of code)-
which critically depends on Record existing - come with a penalty of
requiring a *week* of 100% CPU on high-performance machines to run
several hundreds of thousands of unit tests and regression tests.

the bottom line is that it would be substantially detrimental to the
entire project in time and resources to deal with this, particularly
right when we have an upcoming tape-out deadline in October 2020.

i also feel compelled to point out that it is of some significant
concern to hear of major design decisions to remove critical functionality
for the first time via 3rd hand notifications where none of our team have
been involved or consulted as to the implications, and, on inspection
of the conversation logs to find that the people making the analysis and
major influential input (awygle) have clearly never looked at any of
the 75,000 lines of code that has been developed under NLNet's funding remit.

this is not a small project with a small impact.  Hugh, the former
Director of the OpenPOWER Foundation, informs me that it will be the
world's first new independent POWER9 design to go into silicon in
*ten years*.

i would welcome your input as to how we can move forward here in an
inclusive way.
Comment 2 Luke Kenneth Casson Leighton 2020-07-08 12:03:51 BST
(i've notified awygle on irc.freenode.net of the existence of this bugreport so that he does not feel excluded or being "discussed as a 3rd person")
Comment 3 whitequark 2020-07-08 12:06:04 BST
> awygle's comment here that Record.connect is "not used" is incorrect

Which comment? I do not see anything that says "not used" on that page.

> in the 75,000 lines of code in libre-soc, we make substantial use of
> Record (the entire codebase relies on it), and also use Record.connect
> in a number of places.

First: the amount of code relying on a bad design does not affect the fact that a bad design should be replaced with an improved one. It only affects the amount of effort that goes into providing compatibility with existing code, and into making migration easier.

Second: you, personally, have been vocally opposed to the current design of the Record and asked for several aspects of it to be changed. The future deprecation and replacement will serve your needs as well, and has been planned, in part, with your project in mind.

Third: if time constraints on your project prevent you from migrating off the existing Record design, you will have:
  a) The deprecation grace period between, at least, release 0.4 (which is the earliest release where Record may be deprecated) and release 0.5 (which is the earliest where Record may be removed). The next release is 0.3.
  b) the ability, after Record is removed upstream, to take the removed code and use it, unmodified other than for the imports, in your codebase indefinitely. This is another aspect that has been planned while considering your project.

In my view, this means that you are not materially constrained in any way whatsoever by the upstream decisions on Record.

> any modifications to the IEEE754 FP library (45,000 lines of code)-
> which critically depends on Record existing - come with a penalty of
> requiring a *week* of 100% CPU on high-performance machines to run
> several hundreds of thousands of unit tests and regression tests.

The run-time of your test suite should become significantly lower once you migrate to the release 0.3. This has been planned while considering your project (in fact you paid me for it) and discussed with your team members.

> i also feel compelled to point out that it is of some significant
> concern to hear of major design decisions to remove critical functionality
> for the first time via 3rd hand notifications where none of our team have
> been involved or consulted as to the implications

I have informed the CEO of your corporation, Immanuel Yehowshua, in an email dated 2020-06-21 that nMigen will hold bi-monthly IRC meetings that specifically aim to coordinate with downstream projects and discuss any concerns that may arise, and suggested he invite team members to attend. None attended.

In my view, I have sufficiently reached out towards your team.

> the people making the analysis and
> major influential input (awygle) have clearly never looked at any of
> the 75,000 lines of code that has been developed under NLNet's funding remit.

At the moment, Andrew Wygle has no formal authority in the project (he does not even have a commit bit), and he made this pull request specifically and only because I asked him to work on it.

> also it would be disruptive to Minerva, where Record.connect is utilised
> for all wishbone bus communications (and we are using that code)

A Minerva stakeholder is aware of the change, has attended the last meeting, and expressed no particular concern about it.

> it would be *significantly* disruptive to the project to be forced to
> modify and review 75,000 lines of code in order to remove Record, and
> it would be seriously problematic if Record.connect disappeared.

I must remind you that you are using a library versioned in the 0.x series that says, in the very first sentence of README, that it is "incomplete and under active development". In spite of that, I went above and beyond what is typically done in open-source projects (much less young open-source projects) to provide extensive migration assistance for user designs at every point in the past.

In my view, your lack of effective planning and communication does not constitute an emergency on my side.
Comment 4 Luke Kenneth Casson Leighton 2020-07-08 13:09:04 BST
(In reply to whitequark from comment #3)
> > awygle's comment here that Record.connect is "not used" is incorrect
> 
> Which comment? I do not see anything that says "not used" on that page.

it's here:

https://github.com/nmigen/nmigen/pull/368

 awygle commented on Apr 24

Deprecate the unfortunate Record.connect method, and the Direction functionality of Record as well


> > in the 75,000 lines of code in libre-soc, we make substantial use of
> > Record (the entire codebase relies on it), and also use Record.connect
> > in a number of places.
> 
> First: the amount of code relying on a bad design does not affect the fact
> that a bad design should be replaced with an improved one. It only affects
> the amount of effort that goes into providing compatibility with existing
> code, and into making migration easier.

i hear you: it's just that... hearing for the first time that Record is
going away is quite alarming.


> Second: you, personally, have been vocally opposed to the current design of
> the Record and asked for several aspects of it to be changed. The future
> deprecation and replacement will serve your needs as well, and has been
> planned, in part, with your project in mind.

that's really appreciated.  it's perhaps unfortunate that i am, because of
significant heavy focus on other parts of the project, just hearing about
the intended deprecation 

> 
> Third: if time constraints on your project prevent you from migrating off
> the existing Record design, you will have:
>   a) The deprecation grace period between, at least, release 0.4 (which is
> the earliest release where Record may be deprecated) and release 0.5 (which
> is the earliest where Record may be removed). The next release is 0.3.
>   b) the ability, after Record is removed upstream, to take the removed code
> and use it, unmodified other than for the imports, in your codebase
> indefinitely. This is another aspect that has been planned while considering
> your project.

interesting - and much appreciated.  i had absolutely no idea that this was
the case, that you'd been this thoughtful in the planning.  depending on
timing (0.5 pre- or post- Oct 2020) we therefore have a couple of
non-disruptive routes.

so i think we're good.  thank you for these details.  it allows us to
plan effectively.

in future, how can we ensure better communication, here?


> In my view, this means that you are not materially constrained in any way
> whatsoever by the upstream decisions on Record.

ok.  that's really good to know, and a huge relief.  i was very concerned
for a while.

 
> > any modifications to the IEEE754 FP library (45,000 lines of code)-
> > which critically depends on Record existing - come with a penalty of
> > requiring a *week* of 100% CPU on high-performance machines to run
> > several hundreds of thousands of unit tests and regression tests.
> 
> The run-time of your test suite should become significantly lower once you
> migrate to the release 0.3. This has been planned while considering your
> project (in fact you paid me for it) and discussed with your team members.

... bear in mind that Yehowshua is sufficiently busy that he simply does
not have time to keep me informed.

if you have had private conversations with him, then the majority of those
private discussions will in fact remain private, and you should take that
in to consideration.

also, Yehowshua is not the Technical Lead: i am the Technical Lead of the
Libre-SOC project - not Yehowshua (see more below), and Yehowshua is the CEO
(not the CTO) of a Corporation that "happens to be using Libre-SOC source code".

bottom line is that if it's not been sent to or discussed on libre-soc.org
resources (which are in absolutely no way owned or controlled by the
USA-based Corporation known as "Systemes Libre"), then you should assume
by default that it has not reached the attention of the team.

given that we (Libre-SOC) are funded by NLNet for full transparency,
private technical conversations involving the Libre-SOC codebase and
matters relating to it are a strong "red flag" anyway.


> > i also feel compelled to point out that it is of some significant
> > concern to hear of major design decisions to remove critical functionality
> > for the first time via 3rd hand notifications where none of our team have
> > been involved or consulted as to the implications
> 
> I have informed the CEO of your corporation,

hang on, hang on - you're confusing the Corporation (which is yet to
be established) with Libre-SOC.  the two are completely separate entities
(a Charitable Foundation is in the process of being established for
Libre-SOC which will help make that clear).

i am directly responsible for the Libre-SOC codebase and its technical
direction.

Yehowshua is responsible for a commercial entity that *uses* Libre-SOC,
whose sole purpose and existence is to hold the Mask Rights for a taped-out
processor, with zero ownership of copyrighted code so that if it is attacked 
with back-to-back patent lawsuits, those attacks have zero impact on the
technical and strategic direction of Libre-SOC.

Yehowshua is therefore not involved in the actual technical decisions
because he is simply too busy with other matters [Masters Thesis].


> Immanuel Yehowshua, in an email
> dated 2020-06-21 that nMigen will hold bi-monthly IRC meetings that
> specifically aim to coordinate with downstream projects and discuss any
> concerns that may arise, and suggested he invite team members to attend.

for technical matters related to Libre-SOC, the best person to raise that
with is me, directly, and the best place to raise it is the mailing list,
due to the transparency requirements (i will review the contents and
discussion and raise a bugreport to keep track of its impact).

(Yehowshua did in fact send a message to the list about the meetings).

to make it clear: for matters related to the creation and commercial sale
of ASICs paid for by Systemes Libre investors and customers, it would be
appropriate to contact Yehowshua about that.


> None attended.

i simply missed it: i watch the IRC logs, and read them - i haven't had time
yet to let you know.  it was an interesting discussion.

i have to say that when reading the messages, i didn't recall seeing anything
about Record being removed.  clearly, if i had, given the huge impact, i
would have said something.


> In my view, I have sufficiently reached out towards your team.

to be completely open and honest with you i feel quite intimidated and not
very welcome.  i did not feel comfortable in directly participating, so
chose to review the logs after the meeting had taken place.  i meant to
let you know, i apologise.


> At the moment, Andrew Wygle has no formal authority in the project (he does
> not even have a commit bit), and he made this pull request specifically and
> only because I asked him to work on it.

ok. appreciated.

> > also it would be disruptive to Minerva, where Record.connect is utilised
> > for all wishbone bus communications (and we are using that code)
> 
> A Minerva stakeholder is aware of the change, has attended the last meeting,
> and expressed no particular concern about it.

the Minerva codebase is only 4,000 lines.  Libre-SOC's codebase is literally
20 times larger, and it will likely be 40 to 50 times larger by the time
we have full functionality.

i would therefore expect that it be fairly easy for Minerva to migrate,
which would explain why the Minerva team has no issue with the plans.


> > it would be *significantly* disruptive to the project to be forced to
> > modify and review 75,000 lines of code in order to remove Record, and
> > it would be seriously problematic if Record.connect disappeared.
> 
> I must remind you that you are using a library versioned in the 0.x series
> that says, in the very first sentence of README, that it is "incomplete and
> under active development". 

i do appreciate that.  really :)

> In spite of that, I went above and beyond what is
> typically done in open-source projects (much less young open-source
> projects) to provide extensive migration assistance for user designs at
> every point in the past.

although you've not spelled it out, i could tell even from the initial
discussions back 2 years ago that you had this kind of appreciation and
understanding of APIs and the burden it places [on you] for maintaining
them.  although i do recall that you were quite stressed about doing so :)

without actually discussing it explicitly, i completely "got" that, with
your valuable committment to principles that were unspoken, nmigen would be
a much stronger base for us to create such a hugely ambitious commercial
ASIC on than any other HDL out there, even as nmigen progressed and
developed.

so i do "get it" - i just freaked out for a minute, given the time-pressure
and the attention that's on this project to succeed [and consequently,
logically, will also be on nmigen.  sorry about that!].


> In my view, your lack of effective planning and communication

whilst understandable i have to say that this is not very fair.
we're under huge time-constraint pressure, whitequark, and it's
a massive project.  for the Oct 2020 deadline i have over 30 *major*
tasks to keep track of... *at the first level*.

i'm barely keeping up with development, let alone external communication.
normally for a project of this size and scope there would be a full-time
Project Manager dedicated exclusively to dealing with task management and
team coordination, and that role is - because there is nobody else to do
it - my responsibility *as well* as being the key active technical developer.


> does not constitute an emergency on my side.

i agree, and on learning that you've thought significantly about a
route for us to continue to use Record (externally if necessary) is
greatly appreciated.  it means that we can plan a migration on a
suitable timescale rather than having to drop everything and scramble,
right at a critical juncture.

i won't close this bugreport, because we need something to plan the
migrations (after Oct 2020).  marking this as "Deferred" though.

thank you for taking the time to keep us informed, whitequark.
Comment 5 whitequark 2020-07-08 13:45:05 BST
> Deprecate the unfortunate Record.connect method, and the Direction
> functionality of Record as well

There is nothing in that sentence that says "unused". If we, in fact, considered it unused, we would have removed it right away. But obviously that is not the case.

> i have to say that when reading the messages, i didn't recall seeing anything
> about Record being removed.  clearly, if i had, given the huge impact, i
> would have said something.

It was mentioned only briefly because it is not the focus of the next (0.3) release; the technical discussion related to replacing Record will happen before the 0.4 release.

Given the relatively slow (for a project in the 0.x series) release cadence and the extensive compatibility shims we provide, I decided that there is no urgent need to announce the deprecation any more loudly than that, especially since we do not have any actual design for its replacement. A design and a complete, field-tested implementation for the replacement are, of course, a prerequisite for deprecating Record, much less removing it.

> on learning that you've thought significantly about a
> route for us to continue to use Record (externally if necessary) is
> greatly appreciated.

The ability to implement something like a Record in your own codebase has been added more than a year ago (at 2019-06-11) after a discussion with you and hearing your requests, I've told you about that, and you've acknowledged that you understood you had this ability.

> to be completely open and honest with you i feel quite intimidated and not
> very welcome

This is a consequence of your own past behavior, and today, by starting with unfounded accusations instead of attempting to discover the facts or really any attempt at a productive dialogue at all, you have not shown many reasons to welcome you. I would prefer to discuss technical topics with literally any other member of your team, none of whom, to my knowledge, behave like this.

You seem to consider LibreSOC a very important project for nMigen--but this kind of behavior is in no way tolerated in the nMigen community and, frankly, over time makes your project more of a liability.

Would I recommend anyone work with you knowing that in case of a misunderstanding, you will attack them (as well as complete bystanders) first and ask questions later, such as what you did today? Absolutely not.

> in future, how can we ensure better communication, here?

You could start with not messaging me out of the blue with counterfactual accusations stemming from the assumption that I do not, in fact, consider it valuable to provide a smooth migration path for downstream projects when this has been the focus of the project since before it got a 0.1 release.
Comment 6 Luke Kenneth Casson Leighton 2020-07-08 15:17:47 BST
(In reply to whitequark from comment #5)
> > Deprecate the unfortunate Record.connect method, and the Direction
> > functionality of Record as well
> 
> There is nothing in that sentence that says "unused". If we, in fact,
> considered it unused, we would have removed it right away. But obviously
> that is not the case.
> 
> > i have to say that when reading the messages, i didn't recall seeing anything
> > about Record being removed.  clearly, if i had, given the huge impact, i
> > would have said something.
> 
> It was mentioned only briefly because it is not the focus of the next (0.3)
> release; the technical discussion related to replacing Record will happen
> before the 0.4 release.
> 
> Given the relatively slow (for a project in the 0.x series) release cadence
> and the extensive compatibility shims we provide, I decided that there is no
> urgent need to announce the deprecation any more loudly than that,
> especially since we do not have any actual design for its replacement. A
> design and a complete, field-tested implementation for the replacement are,
> of course, a prerequisite for deprecating Record, much less removing it.

yes i've seen the daily discussions.  it's unfortunate that i simply didn't
see the intent to deprecate

> 
> > on learning that you've thought significantly about a
> > route for us to continue to use Record (externally if necessary) is
> > greatly appreciated.
> 
> The ability to implement something like a Record in your own codebase has
> been added more than a year ago (at 2019-06-11) after a discussion with you
> and hearing your requests, I've told you about that, and you've acknowledged
> that you understood you had this ability.

it hadn't occurred to me to actually extract the entirety of Record from
the nmigen codebase (into nmutil, most likely) and to become its de-facto
maintainers until it's no longer needed.  it's a good idea.

as i was assuming that doing that would not be viewed favourably (because
that doubly-maintained code would then become a burden on you, for support
issues) it never occurred to me that it would be acceptable to duplicate
Record... *right now*.

consequently, the classes that i wrote (RecordObject, Object) derived
*from* Record rather than duplicated it.

consequently, removal of Record would seriously adversely impact the code
that relied on it.

now, of course, if the Record class is *removed* from nmigen then that's
an entirely different (and very good) proposition, as the responsibility
for its maintenance and support is no longer duplicated.


> > to be completely open and honest with you i feel quite intimidated and not
> > very welcome
> 
> This is a consequence of your own past behavior, 

this... i am... should everyone be so judged on the past?  in light of
the fact that our Charter *requires* - not optionally - *REQUIRES* that
contributors take into consideration external constructive feedback,
judging someone based on the *past* is hugely unfair.

it says - very loudly - "you as a human being are completely pathologically
incapable of adaptation".

that's not a very nice thing to say, is it?


> and today, by starting with unfounded accusations 

whoa whoa who there were no *accusations* whitequark.  i simply pointed
out that there is a lack of communication and that i felt considerable
alarm at the implications of the removal of something that we're critically
dependent on.

you then very kindly pointed out things that i haven't looked at for
several months going on a couple of years, that you've taken them into
consideration, and been supporting us - unknowingly as it turns out -
all this time.


> instead of attempting to discover the facts or really
> any attempt at a productive dialogue at all,

whitequark: please understand, we're *required* to discuss things
publicly - problems and all - when it affects the technical direction
of the project.

normally, in order to preserve a "positive image" of a project, things
are hidden from public view.  discussed privately, and only brought
to light when they are resolved (if at all).

under the NLNet funding remit, for Privacy and Enhanced Trust, *we cannot
work that way*.

we're required to hold technical discussions - even if there are
misunderstandings - entirely in the public light, for independent auditing.



> you have not shown many reasons
> to welcome you. I would prefer to discuss technical topics with literally
> any other member of your team, none of whom, to my knowledge, behave like
> this.
> 
> You seem to consider LibreSOC a very important project for nMigen--but this
> kind of behavior is in no way tolerated in the nMigen community and,

*what* "behaviour"??  am i not "permitted" publicly to say "i'm really
freaked out that because of things i don't know about, because i'm simply
too busy and simply haven't had time to keep fully up-to-date, that we
might miss a critical deadline and the entire EUR 400,000 funded
project will fail as a result?"

let me ask that another way.

how would _you_ have put it?  bear in mind that it has to be a public
communication (libre-soc mailing list, libre-soc bugtracker), what words
would you have used in order to convey what was needed?

then - bear in mind that i have Asperger's so "by default" i will simply
speak my mind - i can use that as a "template" for future communication
on a similar topic.

remember: normally there would be a "full time Project Manager" in place
to help with these kinds of things.  there isn't one, so it's down to
us, directly.

basically, you'll need to teach me what i need to say, ok?

because *i literally do not know*.


> frankly, over time makes your project more of a liability.

i appreciate your honesty, here.

if i can: my feeling is that if we, as project leaders, don't make a
positive effort here, it's going to reflect badly for both our respective
projects.


> Would I recommend anyone work with you knowing that in case of a
> misunderstanding, you will attack them (as well as complete bystanders)
> first and ask questions later, such as what you did today? Absolutely not.

i'm *not* going to attack people, whitequark.  what the hell would be
achieved by that??  make myself "look good"?  try to "win points by denigrating
others??"  make other people look "more stupid than me by comparison"?

those are the kinds of things that really nasty people do, and if they
tried it in this project they'd be in flagrant violation of the Libre-SOC
Charter and would be taken to task on it, because it would be significantly
detrimental to the project's goals.

now, from a combination of Asperger's complete lack of emotional (personal)
empathy combined with the mandatory requirements of full transparency, i
do appreciate that it might *LOOK* like an "attack" - a deliberate hostile
intent to denigrate the work that you're doing, and trying to "bring down
others".

except: this is so completely against *everything we believe in* that the 
discussion here is reaching "Kafka-esque" proportions, the mis-match is
that stark.


> > in future, how can we ensure better communication, here?
> 
> You could start with not messaging me out of the blue with counterfactual
> accusations stemming from the assumption that I do not, in fact, consider it
> valuable to provide a smooth migration path for downstream projects when
> this has been the focus of the project since before it got a 0.1 release.

whitequark: *i didn't know that* - not in real concrete terms.  it's one
thing to know it in the "abstract", and it's another to actually have
a real example thrown at us when there's a critical deadline coming up.

one that came up from there not being proper communication channels, based,
i believe, on misunderstanding compounded on misunderstanding on 
misunderstanding.  which, although it might not be appropriate to say,
i do find... some level of ironic/amusement in observing it.  the appropriate
japanese word would be "o-ka-shii-neeh" meaning (loosely), "funny / strange".


please: you're jumping at shadows and believing that you're being accused
of things that *haven't actually happened* and are simply the product of 
miscommunications.  or, the *perception* is one of accusation which you
know - logically with a little thought and reflection - cannot be true
because it would be so severely detrimental to both our projects if such
accusations were actually and intentionally being made.

let me ask you: did you *genuinely* think that, when i wrote what i did,
that my first active thought was, "I MUST ACCUSE WHITEQUARK AND EVERYONE HAR
HAR MAKE THEM LOOK LIKE TOTAL IDIOTS"??

you can't possibly think that that was my very first thought, can you?

i'm asking that genuinely, because i really don't know the answer.


i've already said thank you for your efforts in pointing out the migration
path (that you'd planned such a long time ago).

what else do you need me to say that would help reassure you?
(because - remember: with Asperger's *i simply don't know*)


there's a lot for both of us to learn, here, and given that the assumption
has been that i am "accusing" you of things has happened more than once,
i feel that it's our responsibility - both of us - to really get to the
bottom of this, properly.

but please - please - do not ever forget that with Asperger's i simply *do not
see things the same way as other people*.  i do not have the same kind of
emotional responses or modelling of others that everyone else has.

yes there are assholes and vicious and spiteful people with Asperger's out
there, just as there are kind, conscientious and thoughtful people without.

please understand that it is absolutely anathemic to me to be a "spiteful
vicious person, actively hell-bent intent on harming others".

this is an *ethical* project, and that's taken very seriously.

bottom line:

causing harm is an *extremely serious* violation of the Charter!


fundamentally, then, *you'll need to teach me* what kind of responses you
would like to see, and i can put them into the "mental database" and use
them as templates.  this is "standard practice" for people with Asperger's
(there are now books by respected authors on the subject)

this _will_ appear "awkward".  you'll know - ultimately - that the responses
that i make are "canned".  however this is just how it is with people with
Asperger's.  they *never* properly fit in with the rest of humanity, and
i believe you may have picked up on that but potentially not really
understood the full ramifications.


now, if i was not willing to do this, then you would be perfectly within
your rights to say that the entire project is pathologically managed.

as this is not the case (it is in direct violation of the Libre-SOC
Charter to be pathological), we can conclude that something else is
going on.

exactly what that is, i have no idea, and i'd welcome honest
and open discussion to work things out.
Comment 7 whitequark 2020-07-08 16:11:03 BST
> basically, you'll need to teach me what i need to say, ok?

> how would _you_ have put it?

Sure, I can work with that. Suppose I am responsible for an important project and the upstream of a dependency is doing something I don't understand or appreciate. I've been in that position before.

I understand several things about it:
  a) Nothing prevents me from continuing to use the existing codebase of a dependency that currently works fine for my project. My tests presumably all pass, I do not have any bugs that need to be urgently fixed or features that need to be urgently introduced.
  b) I have no authority over the developers working on my dependency. It is an open-source project that operates primarily or entirely on goodwill, and, unless otherwise agreed upon, its developers have no obligation to me at all.
  c) The fact that I am under serious pressure is the result of my own decisions, and my own decisions alone.
  d) The project has so far been managed so well that I heavily depend on it.

So what I do is I assume that the project leadership knows what they're doing and I'm probably missing something important, and first ensure that I got the details right by asking. Something like:

> Can you tell me the rationale and roadmap for deprecating Record, as well as the proposed migration path?

That's it. One sentence. Once you know you got the facts right, feel free to express any significant concerns you have, how disruptive it would (or would not) be, and so on. Just... don't jump to conclusions, especially when you admit it yourself that you had no reason to do so.

If you're frustrated? Find someone to vent on how much of a disruptive idiot I am, *then* write that one sentence. I am not responsible, and will not be made responsible, for managing your emotional state.

Aside: I don't know how are we having this conversation at all. I've never heard of an ASIC project three months before tapeout that did not freeze, at least, the toolchain completely, much less one upgrading the toolchain to a new major version. By all accounts, nothing I can possibly do ought to be able to affect your tapeout schedule at all, even in principle.
Comment 8 Luke Kenneth Casson Leighton 2020-07-09 12:10:45 BST
(In reply to whitequark from comment #7)

> So what I do is I assume that the project leadership knows what they're
> doing and I'm probably missing something important, and first ensure that I
> got the details right by asking. Something like:

ha.  that's funny.  this is exactly what i advise people regarding google
searches.  "assume that what you want to know can be found".  except the
irony is that i treat it as an "object" - no people involved - despite
the fact that there were clearly people who wrote the google search engine
code.

ok.

thank you.

> > Can you tell me the rationale and roadmap for deprecating Record, as well as the proposed migration path?
> 
> That's it. One sentence. Once you know you got the facts right, feel free to
> express any significant concerns you have, how disruptive it would (or would
> not) be, and so on. Just... don't jump to conclusions, especially when you
> admit it yourself that you had no reason to do so.

so i think we have identified the issue.

* i looked at the bugreport
* it said "Record is being deprecated"
* i saw no indication of a migration plan

expected behaviour:

* ask questions

actual behaviour:

* go "argh Record is going away because that's what the bugreport says is happening"

now that we've identified the source of the discrepancy, can i make the
suggestion that, for *other people* who may see that same bugreport, so
that they do not take up your time with the exact same mistake that i
did...

... or, worse, *not use nmigen at all and not contact you because they
assume that Record is being removed and there is absolutely no replacement*...

... to add a very short sentence, "plan and advice needed to be written here
to help people migrate from Record in existing designs"

something to that effect

> If you're frustrated? Find someone to vent on how much of a disruptive idiot
> I am, 

except i don't view you as being a "disruptive idiot".  now, it may be
the case that you *think* i think that - i simply don't.  and for that
i can only apologise that it looked that way.


> Aside: I don't know how are we having this conversation at all. I've never
> heard of an ASIC project three months before tapeout that did not freeze, at
> least, the toolchain completely, much less one upgrading the toolchain to a
> new major version. By all accounts, nothing I can possibly do ought to be
> able to affect your tapeout schedule at all, even in principle.

i know.  it's completely mental.  we lost several months (a "friend"
needed my help and it cost me, personally, around USD $7k - around 1/2
my yearly income) i won't go into details.

it is what it is.

the idea of freezing the toolchain is a good one (inexperience, there)
although the possible burden of having to maintain a hard fork if bugs
are found is not something i want to add to the list unless absolutely
necessary, and this possibility i view as a minus.

when we have an actual completed design then yes we'll freeze all tools.

i think we've diverged sufficiently from the topic to warrant closing
this bugreport and re-opening a new one.