On Mon, May 25, 2020 at 8:34 PM Burakov, Anatoly
<anatoly.bura...@intel.com> wrote:
>
> On 25-May-20 1:08 PM, Bruce Richardson wrote:
> > On Mon, May 25, 2020 at 12:12:49PM +0100, Burakov, Anatoly wrote:
> >> On 25-May-20 10:34 AM, Morten Brørup wrote:
> >>> Dear DPDK Techboard,
> >>>
> >>> I am writing this to raise awareness about the environment for 
> >>> contributing to DPDK, as I feel that it could be improved. This is not a 
> >>> personal thing - I have thick skin - but a general observation. I urge 
> >>> the DPDK Techboard to spend some time to focus on the process, and not 
> >>> only on the technology.
> >>>
> >>> Contributing to DPDK is not easy for infrequent contributors:
> >>>
> >>> 1. Infrequent contributors are limited by not being deeply familiar with 
> >>> the coding style and the commit style, so their style is not always 100 % 
> >>> spot on.
> >>> 2. Infrequent contributors are limited by not having built trust by the 
> >>> maintainers and frequent contributors, and thus their contributions 
> >>> undergo more detailed reviews and get more negative (or: perceived 
> >>> negative) feedback, where trusted contributors are given more slack. (In 
> >>> theory, every contribution should be treated equal, but in reality it 
> >>> makes sense allocating fewer resources to review contributions from 
> >>> developers with a proven track record.)
> >>> 3. Infrequent contributors may not be deeply familiar with the 
> >>> development/contribution tools. E.g. how to use git the "DPDK way".
> >>>
> >>> Additionally, when contributing to old DPDK code, checkpatch complains 
> >>> about coding style violations stemming from the existing old code. This 
> >>> also raises the barrier and decreases the motivation to contribute - a 
> >>> contributor getting negative feedback about something he didn't even do.
> >>>
> >>>
> >>> Here are a couple of anonymous examples from the mailing list:
> >>>
> >>> An infrequent contributor got minor coding style suggestions to a patch, 
> >>> although the coding style was similar to that of a closely related 
> >>> function in the same library, but not perfectly matching the official 
> >>> coding style. I think we could be more lax about coding style, except if 
> >>> the coding style directly violates automatic coding style validation 
> >>> tools.
> >>>
> >>
> >> A lot of that could simply be fixed by codifying our Coding Style into a
> >> .clang-format file, and make this process (semi-)automatic. A lot of
> >> IDE's/editors now have either built-in support for clang-format, or have
> >> plugins enabling said support.
> >>
> >> I've investigated this in the past and found that our coding style
> >> guidelines are very specific in some places, and neither clang-format nor
> >> other options have that kind of detailed control over source code
> >> formatting. The only other option would be to adjust our coding style to 
> >> fit
> >> the options available in clang-format.
> >>
> >> IMO this would cut down a lot on complaints about mixing indents, wrong
> >> alignment, (lack of) newlines before function name, etc.
> >>
> >
> > This is of definite interest to me, for one. How close to our current
> > standards can we get right now with clang-format? If the coding standards
> > right now can't match exactly, how big would be the changes to make them
> > doable in clang-format? Is it one or two things, or is it quite a number?
> >
> > /Bruce
> >
>
> The issues weren't that serious - mainly the peculiarities around our
> custom macros like __rte_experimental or our specific flavor of
> indentation. I can't remember off the top of my head exactly what was
> the problem as i've looked at this a couple of years ago, but i'm pretty
> sure the majority of the stuff we expect in DPDK is configurable through
> clang-format. Plus, i'm sure clang-format has gained features in the
> meantime, maybe the things that weren't possible then, are now :)

I have been using the following clang-format configuration for DPDK[1].
I dont see any setbacks. ForEachMacros section below needs to extend for DPDK.

[1]
"{ BasedOnStyle: LLVM, IndentWidth: 8, TabWidth: 8, UseTab: Always,
AllowShortIfStatementsOnASingleLine: false, IndentCaseLabels: false,
ColumnLimit: 80, AllowShortFunctionsOnASingleLine: false,
AlwaysBreakAfterReturnType: AllDefinitions, ColumnLimit: 80,
ConstructorInitializerAllOnOneLineOrOnePerLine: true,
ConstructorInitializerIndentWidth: 8, ContinuationIndentWidth: 8,
BreakBeforeBraces: Linux, AllowShortBlocksOnASingleLine: false,
AlignConsecutiveAssignments: false, AlignEscapedNewlines: Right,
AlignConsecutiveMacros : true, MaxEmptyLinesToKeep : 1,
Cpp11BracedListStyle : true, AlignTrailingComments : true,
ForEachMacros: ['STAILQ_FOREACH', 'rte_graph_foreach_node',
'TAILQ_FOREACH', 'RTE_ETH_FOREACH_DEV']}",



>
> --
> Thanks,
> Anatoly

Reply via email to