Re: iio: GSoC 2024: RFC on AD7294-2 driver proposal

From: Jonathan Cameron
Date: Tue Mar 26 2024 - 14:52:30 EST


On Tue, 19 Mar 2024 11:35:27 +0530
Anshul Dalal <anshulusr@xxxxxxxxx> wrote:

> Hello everyone,
>
> I am Anshul Dalal, a pre-final year student at SRMIST (India). I am
> pursuing my Bachelor's in Computer Science and Engineering and wish to
> participate in GSoC 2024 as part of The Linux Foundation under the IIO
> worksgroup.
>
> Following the suggestion from the IIO GSoC page[1], I would like to work
> on a driver for AD7294-2. I am interested in the device since it offers
> a wide array of functionality that is different from my past IIO
> drivers[2]. I have prepared a draft proposal and would like to get early
> feedback:
> https://docs.google.com/document/d/1zf9yDq2-Ba8Vqh10w1cYI3buHzh0qIYwzf7xBkaEzDM
>
> I'm aware of interest in the same device from other contributors[3]. If
> required, I'm ready to work on any other part suggested by the company
> or the IIO community.
>
> Best regards,
> Anshul

Hi Anshul,

As you note, there are threads elsewhere discussing the suitability of this part.

Given the potentially competitive nature of proposals, I'm only going to give
general comments based on a quick look at your proposal.
I'll stick to the sort of thing that might help everyone proposing such a project.

1) Maintainer / reviewer bandwidth is often the biggest unknown in a project
targeting upstream - so get that underway in plenty of time.
Treat it as a risk and plan mitigation where you can.

2) Allow time for revisions - this is a fairly complex device, so there may well
be more complex changes requested such as ABI redesigns and they may take
a non trivial amount of time. For reference one GSOC intern some years ago
did 3 major rewrites; the code was excellent (until after the GSOC had
nearly finished I'd been assuming he was an experienced consultant - not
an intern!) Our understanding of what was the best path was driven by seeing and
discussing each revision. Whilst that was much earlier in the evolution of IIO
event now a moderate amount of time makes sense.

3) Don't wait until the end to send stuff for review - you will probably be
crossing kernel development cycles (with a merge window to cause everything
to grind to a halt) and reviewer / maintainer vacations etc.
As such, structure a driver development plan to be suitable for partial
upstreaming mid way. If you like play guess the kernel release dates
feel free to put that alongside your plan. Guessing my holidays is
a harder target :)
Trying to upstream a driver alongside further development, parallel's
up the time for reviewers to respond with developing more advanced features.
Note that full time kernel developers do this sort of thing all the time
as a complex feature often takes multiple cycles (and sometimes multiple
years) to get fully upstream.

So I'd revisit your plan with these points in mind. It is a complex trade
off of keeping the plan simple and easy to understand, and incorporating
an idea of what else is going on in parallel.

Also think about other risks and how they might be rectified or work
might continue whilst they are being (a classic being failure to
establish reliable comms with the chip).

Jonathan

>
> ---
>
> [1]: https://wiki.linuxfoundation.org/gsoc/2024-gsoc-iio-driver
> [2]: Microchip MCP4821 DAC:
> https://lore.kernel.org/lkml/20231220151954.154595-1-anshulusr@xxxxxxxxx/
> LiteOn LTR390 light sensor:
> https://lore.kernel.org/lkml/20231208102211.413019-1-anshulusr@xxxxxxxxx/
> Aosong AGS02MA air quality sensor:
> https://lore.kernel.org/lkml/20231215162312.143568-1-anshulusr@xxxxxxxxx/
> [3]: https://lore.kernel.org/linux-iio/20240229184636.13368-1-danascape@xxxxxxxxx/
> https://lore.kernel.org/linux-iio/YlXR0d7waKW9xncd@fedora/