All of lore.kernel.org
 help / color / mirror / Atom feed
* Can we improve the experience of working on OpenBMC?
@ 2022-07-27  1:22 Andrew Jeffery
  2022-07-29  0:10 ` Brad Bishop
                   ` (2 more replies)
  0 siblings, 3 replies; 10+ messages in thread
From: Andrew Jeffery @ 2022-07-27  1:22 UTC (permalink / raw)
  To: openbmc; +Cc: Benjamin Fair, Ed Tanous, Brad Bishop, Heyi Guo, jebr, scody

Hello everyone,

A few months back Ed kicked off a thread about changing how we work on OpenBMC
with the aim to improve the development rate and make it easier to on-board
people to the project:

https://lore.kernel.org/openbmc/CAH2-KxAJS_U8=meCxp8ue7n0bmnzeRpyZOPZpy0h1cFEbbz-HA@mail.gmail.com/

I felt that discussion splintered a bit, with a lot of back-and-forth about
details well down in the weeds. I found this hard to follow, and so put in some
work to try synthesise the discussion into desires for improving how we work,
and practical problems with what we do currently.

Below are the lists of these desires and problems. I think it would be good to
treat this as a survey to understand who feels strongly about what.

If you want to express support for a point then add a +1 below it. Feel free to
suggest new items for either list, or to further discuss a particular item
below its entry.

I feel that with information on what people feel strongly about we can
prioritise what we need address and work forwards from there.

For the record, the mind map that I used to generate these lists is here, which
contains further quotes and references to the original discussion thread:

https://github.com/amboar/openbmc-monorepo-discussion

Some of these might be closely related or considered duplicates of other list
items, but based on the discussions referenced above I felt they were distinct
enough to warrant separate entries.

# Desires

1. Easy sharing of a broad set of application and distro changes
2. Minimise reviews required to get a given feature or fix integrated into the distro build
3. Make fork maintenance easy
4. Provide one place to report bugs across the entire project
5. Minimise effort collecting project statistics
6. Make it easy to add new applications
7. Make it easy to refactor across the entire project
8. Support inclusive naming

# Problems

1. Yocto is hard
    1. Managing patch stacks is hard
    2. Yocto-specific tooling is hard
    3. Finding the right recipe file to inspect/modify is hard
    4. Yocto has too much documentation
2. OpenBMC has too much documentation
3. Querying design/implementation/bug properties across the project is hard
4. Coordinating breaking changes is hard
5. Coordinating tree-wide changes is hard
6. Identifying the right repo to file a bug against is hard
7. Transferring bugs between repos is hard
8. Bug reports are duplicated across repos
9. Bug reports are ignored
10. Working out where to submit a patch is hard
11. Getting patches reviewed is hard
12. New repo requests are bottle-necked

Cheers,

Andrew

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: Can we improve the experience of working on OpenBMC?
  2022-07-27  1:22 Can we improve the experience of working on OpenBMC? Andrew Jeffery
@ 2022-07-29  0:10 ` Brad Bishop
  2022-07-29  2:21   ` Andrew Jeffery
  2022-08-01 21:34   ` Ed Tanous
  2022-08-01 21:27 ` Alexander Amelkin
  2022-08-09  8:08 ` Jiaqing Zhao
  2 siblings, 2 replies; 10+ messages in thread
From: Brad Bishop @ 2022-07-29  0:10 UTC (permalink / raw)
  To: Andrew Jeffery; +Cc: Benjamin Fair, openbmc, Ed Tanous, Heyi Guo, jebr, scody

Hi Andrew, thanks for poking at this.

On Wed, Jul 27, 2022 at 10:52:04AM +0930, Andrew Jeffery wrote:
>Hello everyone,
>
>A few months back Ed kicked off a thread about changing how we work on OpenBMC
>with the aim to improve the development rate and make it easier to on-board
>people to the project:
>
>https://lore.kernel.org/openbmc/CAH2-KxAJS_U8=meCxp8ue7n0bmnzeRpyZOPZpy0h1cFEbbz-HA@mail.gmail.com/
>
>I felt that discussion splintered a bit, with a lot of back-and-forth about
>details well down in the weeds. I found this hard to follow, and so put in some
>work to try synthesise the discussion into desires for improving how we work,
>and practical problems with what we do currently.
>
>Below are the lists of these desires and problems. I think it would be good to
>treat this as a survey to understand who feels strongly about what.
>
>If you want to express support for a point then add a +1 below it. Feel free to
>suggest new items for either list, or to further discuss a particular item
>below its entry.
>
>I feel that with information on what people feel strongly about we can
>prioritise what we need address and work forwards from there.
>
>For the record, the mind map that I used to generate these lists is here, which
>contains further quotes and references to the original discussion thread:
>
>https://github.com/amboar/openbmc-monorepo-discussion
>
>Some of these might be closely related or considered duplicates of other list
>items, but based on the discussions referenced above I felt they were distinct
>enough to warrant separate entries.
>
># Desires
>
>1. Easy sharing of a broad set of application and distro changes

+1

>2. Minimise reviews required to get a given feature or fix integrated into the distro build

+1

>3. Make fork maintenance easy

+1

>4. Provide one place to report bugs across the entire project
>5. Minimise effort collecting project statistics
>6. Make it easy to add new applications
>7. Make it easy to refactor across the entire project

+1

>8. Support inclusive naming

+1

>
># Problems
>
>1. Yocto is hard
>    1. Managing patch stacks is hard
>    2. Yocto-specific tooling is hard
>    3. Finding the right recipe file to inspect/modify is hard
>    4. Yocto has too much documentation
>2. OpenBMC has too much documentation

🙂 Really? 

>3. Querying design/implementation/bug properties across the project is hard

+1

>4. Coordinating breaking changes is hard

+1

>5. Coordinating tree-wide changes is hard

+1

>6. Identifying the right repo to file a bug against is hard
>7. Transferring bugs between repos is hard
>8. Bug reports are duplicated across repos
>9. Bug reports are ignored
>10. Working out where to submit a patch is hard
>11. Getting patches reviewed is hard
>12. New repo requests are bottle-necked
>
>Cheers,
>
>Andrew

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: Can we improve the experience of working on OpenBMC?
  2022-07-29  0:10 ` Brad Bishop
@ 2022-07-29  2:21   ` Andrew Jeffery
  2022-08-01 21:34   ` Ed Tanous
  1 sibling, 0 replies; 10+ messages in thread
From: Andrew Jeffery @ 2022-07-29  2:21 UTC (permalink / raw)
  To: Brad Bishop; +Cc: Benjamin Fair, openbmc, Ed Tanous, Heyi Guo, jebr, scody



On Fri, 29 Jul 2022, at 09:40, Brad Bishop wrote:
> Hi Andrew, thanks for poking at this.
>
> On Wed, Jul 27, 2022 at 10:52:04AM +0930, Andrew Jeffery wrote:
>>
>># Problems
>>
>>1. Yocto is hard
>>    1. Managing patch stacks is hard
>>    2. Yocto-specific tooling is hard
>>    3. Finding the right recipe file to inspect/modify is hard
>>    4. Yocto has too much documentation
>>2. OpenBMC has too much documentation
>
> 🙂 Really? 
>

Hey, I'm just the messenger 😅

But of course, I could have misinterpreted the conversation. The mind 
map has all the quotes and reference links.

I should have mentioned that the mind map I linked to on github was 
generated with Freemind in case anyone wants to see something more 
sensible than raw XML.

Andrew

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: Can we improve the experience of working on OpenBMC?
  2022-07-27  1:22 Can we improve the experience of working on OpenBMC? Andrew Jeffery
  2022-07-29  0:10 ` Brad Bishop
@ 2022-08-01 21:27 ` Alexander Amelkin
  2022-08-01 21:39   ` Ed Tanous
  2022-08-09  0:44   ` Andrew Jeffery
  2022-08-09  8:08 ` Jiaqing Zhao
  2 siblings, 2 replies; 10+ messages in thread
From: Alexander Amelkin @ 2022-08-01 21:27 UTC (permalink / raw)
  To: Andrew Jeffery, openbmc
  Cc: Benjamin Fair, Ed Tanous, Brad Bishop, Heyi Guo, jebr, scody

Hi Andrew!

27.07.2022 04:22, Andrew Jeffery пишет:
> # Problems
>
> 1. Yocto is hard
>      1. Managing patch stacks is hard
>      2. Yocto-specific tooling is hard
>      3. Finding the right recipe file to inspect/modify is hard
>      4. Yocto has too much documentation
> 2. OpenBMC has too much documentation
> 3. Querying design/implementation/bug properties across the project is hard
> 4. Coordinating breaking changes is hard
> 5. Coordinating tree-wide changes is hard
> 6. Identifying the right repo to file a bug against is hard
> 7. Transferring bugs between repos is hard
> 8. Bug reports are duplicated across repos
> 9. Bug reports are ignored
> 10. Working out where to submit a patch is hard
> 11. Getting patches reviewed is hard
> 12. New repo requests are bottle-necked

To the list of the problems I would add:

13. D-Bus is hard for newcomers not familiar with it, best practices are 
not described,
inter-process synchronization when accessing large d-bus objects (like 
network interfaces)
is not inherent to d-bus, and auxiliary synchronization using standard 
POSIX means is neither
explicitly requested/advised, nor controlled/enforced. All that may lead 
(and have previously led) to
races and various other problems. Add to that the long and inconvenient 
prefixing that we've
discussed earlier in another thread where Brad has supported my point of 
those being useless
to the project.

14. D-Bus may become a bottleneck or a slowing factor (due to the 
context switching overhead) for
the situations when two processes are communicating actively. A standard 
POSIX IPC like pipes,
mq or shm could become a solution (with d-bus or any other method used 
as an aid to negotiate
names, keys, or whatever other credentials needed to access a common IPC).

WBR, Alexander

P.S. All in all, I think d-bus wasn't a good choice of IPC for a system 
running on a low-performance single-core ARM chip.


^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: Can we improve the experience of working on OpenBMC?
  2022-07-29  0:10 ` Brad Bishop
  2022-07-29  2:21   ` Andrew Jeffery
@ 2022-08-01 21:34   ` Ed Tanous
  1 sibling, 0 replies; 10+ messages in thread
From: Ed Tanous @ 2022-08-01 21:34 UTC (permalink / raw)
  To: Brad Bishop; +Cc: Benjamin Fair, Andrew Jeffery, openbmc, Heyi Guo, jebr, scody

On Thu, Jul 28, 2022 at 5:11 PM Brad Bishop <bradleyb@fuzziesquirrel.com> wrote:
>
> >2. OpenBMC has too much documentation
>
> 🙂 Really?
>

I suspect this is an overgeneralization of what I intended to say.
OpenBMC has enough documentation to expect that new people on the
project would not be able to read all of it cover to cover before
pushing a patch, and to expect that every workflow is just a matter of
"go document that" or "Write a script to do that" overcomplicates
things for new folks.  This is not to say documentation is bad, or
"too much", but the organization to be able to find relevant
information quickly, and the "correctness" could certainly be improved
(I fully realize it's a difficult problem).  In the context of
monorepo, my point ws that less day-to-day developer documentation is
required, because we fall back to gits documentation, given we'd be
using it in a much simpler way for the end developer.

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: Can we improve the experience of working on OpenBMC?
  2022-08-01 21:27 ` Alexander Amelkin
@ 2022-08-01 21:39   ` Ed Tanous
  2022-08-01 22:03     ` Alexander Amelkin
  2022-08-09  3:42     ` Andrew Jeffery
  2022-08-09  0:44   ` Andrew Jeffery
  1 sibling, 2 replies; 10+ messages in thread
From: Ed Tanous @ 2022-08-01 21:39 UTC (permalink / raw)
  To: Alexander Amelkin
  Cc: Benjamin Fair, Andrew Jeffery, openbmc, Brad Bishop, Heyi Guo,
	jebr, scody

On Mon, Aug 1, 2022 at 2:27 PM Alexander Amelkin <a.amelkin@yadro.com> wrote:
>
> Hi Andrew!
>
> 27.07.2022 04:22, Andrew Jeffery пишет:
> > # Problems
> >
> > 1. Yocto is hard
> >      1. Managing patch stacks is hard
> >      2. Yocto-specific tooling is hard
> >      3. Finding the right recipe file to inspect/modify is hard
> >      4. Yocto has too much documentation
> > 2. OpenBMC has too much documentation
> > 3. Querying design/implementation/bug properties across the project is hard
> > 4. Coordinating breaking changes is hard
> > 5. Coordinating tree-wide changes is hard
> > 6. Identifying the right repo to file a bug against is hard
> > 7. Transferring bugs between repos is hard
> > 8. Bug reports are duplicated across repos
> > 9. Bug reports are ignored
> > 10. Working out where to submit a patch is hard
> > 11. Getting patches reviewed is hard
> > 12. New repo requests are bottle-necked
>
> To the list of the problems I would add:
>
> 13. D-Bus is hard for newcomers not familiar with it, best practices are
> not described,
> inter-process synchronization when accessing large d-bus objects (like
> network interfaces)
> is not inherent to d-bus, and auxiliary synchronization using standard
> POSIX means is neither
> explicitly requested/advised, nor controlled/enforced.
> All that may lead
> (and have previously led) to
> races and various other problems. Add to that the long and inconvenient
> prefixing that we've
> discussed earlier in another thread where Brad has supported my point of
> those being useless
> to the project.
>
> 14. D-Bus may become a bottleneck or a slowing factor (due to the
> context switching overhead) for
> the situations when two processes are communicating actively. A standard
> POSIX IPC like pipes,
> mq or shm could become a solution (with d-bus or any other method used
> as an aid to negotiate
> names, keys, or whatever other credentials needed to access a common IPC).

FWIW, in the original context of "a single repo would help with these
things" I don't think either of these would be helped with a
rearrangement of code.

With that said, lots of people dislike dbus.  There are performance
critical things (SOL, KVM, Virtual media) that have completely avoided
it.  If you have a proposal for something better, I'd highly recommend
writing up a design doc.

>
> WBR, Alexander
>
> P.S. All in all, I think d-bus wasn't a good choice of IPC for a system
> running on a low-performance single-core ARM chip.
>

So propose something better that solves the same problem within
OpenBMC?  Or, alternatively, there's u-bmc that from the sounds of
reading your above is closer to your ideal in terms of trade offs (no,
IPC, efficient point to point comms with grpc), it might be worth
looking into for either using directly, or porting some of the ideas
it encompases into OpenBMC.

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: Can we improve the experience of working on OpenBMC?
  2022-08-01 21:39   ` Ed Tanous
@ 2022-08-01 22:03     ` Alexander Amelkin
  2022-08-09  3:42     ` Andrew Jeffery
  1 sibling, 0 replies; 10+ messages in thread
From: Alexander Amelkin @ 2022-08-01 22:03 UTC (permalink / raw)
  To: Ed Tanous; +Cc: openbmc

>> 13. D-Bus is hard for newcomers not familiar with it, best practices are
>> not described,
>> inter-process synchronization when accessing large d-bus objects (like
>> network interfaces)
>> is not inherent to d-bus, and auxiliary synchronization using standard
>> POSIX means is neither
>> explicitly requested/advised, nor controlled/enforced.
>> All that may lead
>> (and have previously led) to
>> races and various other problems. Add to that the long and inconvenient
>> prefixing that we've
>> discussed earlier in another thread where Brad has supported my point of
>> those being useless
>> to the project.
>>
>> 14. D-Bus may become a bottleneck or a slowing factor (due to the
>> context switching overhead) for
>> the situations when two processes are communicating actively. A standard
>> POSIX IPC like pipes,
>> mq or shm could become a solution (with d-bus or any other method used
>> as an aid to negotiate
>> names, keys, or whatever other credentials needed to access a common IPC).
> FWIW, in the original context of "a single repo would help with these
> things" I don't think either of these would be helped with a
> rearrangement of code.

Well, I don't think a single repo would help actually if we want to
keep the system modular and versatile as it is (and what is definitely 
good).

> With that said, lots of people dislike dbus.  There are performance
> critical things (SOL, KVM, Virtual media) that have completely avoided
> it.  If you have a proposal for something better, I'd highly recommend
> writing up a design doc.

Yes, you're right that I'm not currently proposing anything specific, 
and that it
would surely require a start with a design document.

However, I thought the idea of Andrew's message was to outline the problems,
and it looks to me like you more or less agree that those are problems, 
don't you?

> Or, alternatively, there's u-bmc that from the sounds of
> reading your above is closer to your ideal in terms of trade offs (no,
> IPC, efficient point to point comms with grpc), it might be worth
> looking into for either using directly, or porting some of the ideas
> it encompases into OpenBMC. 

Thanks for the hint, I will look into that.

WBR, Alexander.

P.S. I feel like I must apologize for maybe sounding rude or somehow 
inappropriate sometimes.
As you may know, English is not my native language and I, despite the 
vocabulary and the ability
to construct more-or-less proper sentences, may often lack the ability 
to properly/politely express
my ideas or understand the tone and/or subtle meaning of what other 
people say or write.
Please forgive me for that, no offense or disrespect is ever implied on 
my side.


^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: Can we improve the experience of working on OpenBMC?
  2022-08-01 21:27 ` Alexander Amelkin
  2022-08-01 21:39   ` Ed Tanous
@ 2022-08-09  0:44   ` Andrew Jeffery
  1 sibling, 0 replies; 10+ messages in thread
From: Andrew Jeffery @ 2022-08-09  0:44 UTC (permalink / raw)
  To: Alexander Amelkin, openbmc
  Cc: Benjamin Fair, Ed Tanous, Brad Bishop, Heyi Guo, jebr, scody



On Tue, 2 Aug 2022, at 06:57, Alexander Amelkin wrote:
> Hi Andrew!
>
> 27.07.2022 04:22, Andrew Jeffery пишет:
>> # Problems
>>
>> 1. Yocto is hard
>>      1. Managing patch stacks is hard
>>      2. Yocto-specific tooling is hard
>>      3. Finding the right recipe file to inspect/modify is hard
>>      4. Yocto has too much documentation
>> 2. OpenBMC has too much documentation
>> 3. Querying design/implementation/bug properties across the project is hard
>> 4. Coordinating breaking changes is hard
>> 5. Coordinating tree-wide changes is hard
>> 6. Identifying the right repo to file a bug against is hard
>> 7. Transferring bugs between repos is hard
>> 8. Bug reports are duplicated across repos
>> 9. Bug reports are ignored
>> 10. Working out where to submit a patch is hard
>> 11. Getting patches reviewed is hard
>> 12. New repo requests are bottle-necked
>
> To the list of the problems I would add:
>
> 13. D-Bus is hard for newcomers not familiar with it, best practices are 
> not described,
> inter-process synchronization when accessing large d-bus objects (like 
> network interfaces)
> is not inherent to d-bus, and auxiliary synchronization using standard 
> POSIX means is neither
> explicitly requested/advised, nor controlled/enforced. All that may lead 
> (and have previously led) to
> races and various other problems.
> Add to that the long and inconvenient 
> prefixing that we've
> discussed earlier in another thread where Brad has supported my point of 
> those being useless
> to the project.
>
> 14. D-Bus may become a bottleneck or a slowing factor (due to the 
> context switching overhead) for
> the situations when two processes are communicating actively. A standard 
> POSIX IPC like pipes,
> mq or shm could become a solution (with d-bus or any other method used 
> as an aid to negotiate
> names, keys, or whatever other credentials needed to access a common IPC).

So to confirm I've understood your concerns and to distill it down to 
specific things people can agree or disagree with, I have:

* DBus concepts are hard
* Designing for DBus is hard
* DBus use is awkward
* DBus is slow
* Unconventional, OpenBMC-specific DBus patterns are mostly tribal knowledge

Is that fair?

Andrew

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: Can we improve the experience of working on OpenBMC?
  2022-08-01 21:39   ` Ed Tanous
  2022-08-01 22:03     ` Alexander Amelkin
@ 2022-08-09  3:42     ` Andrew Jeffery
  1 sibling, 0 replies; 10+ messages in thread
From: Andrew Jeffery @ 2022-08-09  3:42 UTC (permalink / raw)
  To: Ed Tanous, Alexander Amelkin
  Cc: Benjamin Fair, openbmc, Brad Bishop, Heyi Guo, jebr, scody



On Tue, 2 Aug 2022, at 07:09, Ed Tanous wrote:
> On Mon, Aug 1, 2022 at 2:27 PM Alexander Amelkin <a.amelkin@yadro.com> wrote:
>>
>> 14. D-Bus may become a bottleneck or a slowing factor (due to the
>> context switching overhead) for
>> the situations when two processes are communicating actively. A standard
>> POSIX IPC like pipes,
>> mq or shm could become a solution (with d-bus or any other method used
>> as an aid to negotiate
>> names, keys, or whatever other credentials needed to access a common IPC).
>
> FWIW, in the original context of "a single repo would help with these
> things" I don't think either of these would be helped with a
> rearrangement of code.
>
> With that said, lots of people dislike dbus.  There are performance
> critical things (SOL, KVM, Virtual media) that have completely avoided
> it.  If you have a proposal for something better, I'd highly recommend
> writing up a design doc.

Yep, fixing this requires addressing specific concerns. Patches or 
design docs would be helpful, or even just a list of specific things 
that we think are a concern.

>
>>
>> WBR, Alexander
>>
>> P.S. All in all, I think d-bus wasn't a good choice of IPC for a system
>> running on a low-performance single-core ARM chip.

u-bmc might be something to look at here?

Andrew

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: Can we improve the experience of working on OpenBMC?
  2022-07-27  1:22 Can we improve the experience of working on OpenBMC? Andrew Jeffery
  2022-07-29  0:10 ` Brad Bishop
  2022-08-01 21:27 ` Alexander Amelkin
@ 2022-08-09  8:08 ` Jiaqing Zhao
  2 siblings, 0 replies; 10+ messages in thread
From: Jiaqing Zhao @ 2022-08-09  8:08 UTC (permalink / raw)
  To: Andrew Jeffery, openbmc
  Cc: Benjamin Fair, Ed Tanous, Brad Bishop, Heyi Guo, jebr, scody

On 2022-07-27 09:22, Andrew Jeffery wrote> # Problems
> 
> 1. Yocto is hard
>     1. Managing patch stacks is hard
>     2. Yocto-specific tooling is hard
>     3. Finding the right recipe file to inspect/modify is hard
>     4. Yocto has too much documentation
> 2. OpenBMC has too much documentation
> 3. Querying design/implementation/bug properties across the project is hard
> 4. Coordinating breaking changes is hard
> 5. Coordinating tree-wide changes is hard
> 6. Identifying the right repo to file a bug against is hard
> 7. Transferring bugs between repos is hard
> 8. Bug reports are duplicated across repos
> 9. Bug reports are ignored
> 10. Working out where to submit a patch is hard
> 11. Getting patches reviewed is hard
> 12. New repo requests are bottle-necked

I'd personally like to add one item

* Submitting patches across multiple repos is hard, especially when they depends on each other

^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2022-08-09  8:09 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-07-27  1:22 Can we improve the experience of working on OpenBMC? Andrew Jeffery
2022-07-29  0:10 ` Brad Bishop
2022-07-29  2:21   ` Andrew Jeffery
2022-08-01 21:34   ` Ed Tanous
2022-08-01 21:27 ` Alexander Amelkin
2022-08-01 21:39   ` Ed Tanous
2022-08-01 22:03     ` Alexander Amelkin
2022-08-09  3:42     ` Andrew Jeffery
2022-08-09  0:44   ` Andrew Jeffery
2022-08-09  8:08 ` Jiaqing Zhao

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.