* 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-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-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-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: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-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-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.