On Tue, Aug 29, 2023 at 09:33:27AM +0300, Matti Vaittinen wrote:
On 8/28/23 13:53, Andy Shevchenko wrote:
On Mon, Aug 28, 2023 at 09:24:25AM +0300, Matti Vaittinen wrote:
On 8/27/23 21:09, Jonathan Cameron wrote:
Sorry it took a bit of time to reply on this.
...
I think that people who work on a driver like this should guess what this is
for.
_This_ is the result of what people always forgot to think about, i.e. newcomers.
Thanks Andy. This was a good heads-up for me. I do also see the need for
fresh blood here - we aren't getting any younger.
What _if_ the newcomer starts with this code and already being puzzled enough on
what the heck the function does. With all ambiguity we rise the threshold for the
newcomers and make the kernel project not attractive to start with
I really appreciate you making a point about attracting newcomers (and there
is no sarcasm in this statement). I however don't think we're rising the bar
here. If a newcomer wants to work on a device-driver, the _first_ thing to
do is to be familiar with the device. Without prior experience of this kind
of devices it is really a must to get the data-sheet and see how the device
operates before jumping into reading the code. I would say that after
reading the fifo lvl description from data-sheet this should be obvious -
and no, I don't think we should replicate the data-sheet documentation in
the drivers for parts that aren't very peculiar.
There are (at least?) two approaches on the contribution:
1) generic / library wise;
2) specific hardware wise.
You are talking about 2), while my remark is about both. I can imagine a newcomer
who possess a hardware that looks similar to what this driver is for.
would like to write a new driver (note, that compatibility can be checked by
reading the RTL definitions, so no need to dive into the code) and use this as
a (nice) reference. With that in mind, they can read a function named
get_fifo_bytes() with not so extensive documentation nor fully self-explanatory
name. One may mistakenly though about this as a function for something that
returns FIFO capacity, but in the reality it is current amount of valid / data
bytes in the FIFO for the ongoing communication with the device.
But the question how to attract newcomers to kernel is very valid and I
guess that not too many of us is thinking of it. Actually, I think we should
ask from the newcomers we have that what has been the most repulsive part of
the work when they have contributed.
(besides the
C language which is already considered as mastodon among youngsters).
I think this is at least partially the truth. However, I think that in many
cases one of the issues goes beyond the language - many younger generation
people I know aren't really interested in _why_ things work, they just want
to get things working in any way they can - and nowadays when you can find a
tutorial for pretty much anything - one really can just look up instruction
about how a "foobar can be made to buzz" instead of trying to figure out
what makes a "foobar to buzz" in order to make it to buzz. So, I don't blame
people getting used to take a different approach. (Not sure this makes sense
- don't really know how to express my thoughts about this in a clear way -
besides, it may not even matter).
Yeah, I share your frustration and agree that people are loosing the feel of
curiosity. Brave New World in front of us...
Anyways, I am pretty sure that - as with any community - the way people are
treated and how their contribution is appreciated is the key to make them
feel good and like the work. I think that in some cases it may include
allowing new contributors to get their code merged when it has reached "good
enough" state - even if it was not perfect. (Sure, when things are good
enough is subject to greater minds than me to ponder) ;)