Re: Ardour: exporting woes

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 





On Wed, Mar 30, 2016 at 3:31 PM, Fons Adriaensen <fons@xxxxxxxxxxxxxx> wrote:
On Tue, Mar 29, 2016 at 11:12:21AM -0400, Paul Davis wrote:

> (1) I explained to Fons in person and to everyon on the jack-devel mailing
> list what the issues with Fons' original patch. Robin Gareus has eloquently
> restated the basic point, but I'll do it again: the ability to REVIEW code
> changes is critical to long-lived projects, and when a change consists of
> 85% or more white-space/code style changes and only 15% actual functional
> differences, code review becomes all but impossible.

1. All the places where the actual code was changed were
   clearly identified by comments.

That is of close to ZERO help to someone who is trying to read a large commit and understand what was changed.

I have no idea why you keep pushing this point. It is simply an utterly accepted feature of every open source project that involves distributed developers that you do not change the whitespace/indent/coding style, no matter how much you dislike it. I've worked on projects that would have just rejected your entire patch based on this aspect alone. I mentioned this to you in private.

Instead, I took time to investigate code formatters, identify which one would likely do the right thing, and come up with a strategy for creating a commit that only changed what actually mattered.
 

2. When I compare the commit (42393121) that applied my patch
   with previous versions, there are *lots of* major coding
   style and whitespace changes in files that I never touched.
   This means the coding style wasn't consistent to start with.

Nobody is questioning this. That is why my process for dealing with your patch FIRST involved using uncrustify to canonicalize the coding style. Normally I would not have bothered to do this, since it created a huge commit that in theory is a 100% no-op, and wasn't addressing any actual reported problem or issue. But it was the only way I could see to convert your patch into an acceptable format. This particular step would have been unnecessary without all the extra changes in the original patch.
 

3. When I read that same commit (which I assume reflects the
   preferred style) I see things like this:

It reflects the work of uncrustify. I have attached the config file that I used. I am entirely happy to consider revisions to the uncrustify config file and we can re-run the canonicalization step. I'm entirely open to the idea that I didn't get the uncrustify config correct, and that there are better options to be used in order to achieve the desired result. I'm happy to take suggestions on how to improve this.

Let me re-describe the scenario that we're discussing here:

I received a valuable but terribly formatted patch that changed large amounts of code for no reason at all. Rather than reject it, I mentioned this to its author, who basically shrugged and said "it is what is is, this is how i work", completely ignoring convention in distributed development. I spent time to come up with a strategy for generating a clean(er) version of the patch, which either because of errors in the process or errors in the original patch, caused a regression in server stability in the face of less-than-well-behaved clients. After some discussion on jack-devel, I reverted the commit.

At this point, the pushback I am getting is leading me towards simply rejecting the work out of hand and forgetting about it. The change/fix is an important one, and I want to see it included in jack1's codebase. But I will not put up with this BS attitude toward a problem that started when Fons chose to ignore conventional behaviour and believed that submitting a patch which was 80%+ reformatting changes was an acceptable strategy.


#
# uncrustify config file for paul davis
#

indent_with_tabs	= 2		# 1=indent to level only, 2=indent with tabs
input_tab_size		= 8		# original tab size
output_tab_size		= 8		# new tab size
indent_columns		= output_tab_size

indent_label		= 1		# pos: absolute col, neg: relative column


#
# inter-symbol newlines
#

nl_enum_brace		= remove	# "enum {" vs "enum \n {"
nl_union_brace		= remove	# "union {" vs "union \n {"
nl_struct_brace		= remove	# "struct {" vs "struct \n {"
nl_do_brace 		= remove	# "do {" vs "do \n {"
nl_if_brace 		= remove	# "if () {" vs "if () \n {"
nl_for_brace 		= remove	# "for () {" vs "for () \n {"
nl_else_brace 		= remove	# "else {" vs "else \n {"
nl_while_brace 		= remove	# "while () {" vs "while () \n {"
nl_switch_brace 	= remove	# "switch () {" vs "switch () \n {"
nl_brace_while		= remove	# "} while" vs "} \n while" - cuddle while
nl_brace_else		= remove	# "} else" vs "} \n else" - cuddle else
nl_func_var_def_blk	= 1
nl_fcall_brace		= remove	# "list_for_each() {" vs "list_for_each()\n{"
nl_fdef_brace		= add		# "int foo() {" vs "int foo()\n{"
# nl_after_return		= TRUE;
# nl_before_case	= 1
nl_assign_leave_one_liners = TRUE       # don't split "foo_t f = { 1, 2 }"

#
# Source code modifications
#

mod_paren_on_return	= remove	# "return 1;" vs "return (1);"
mod_full_brace_if	= add		# "if (a) a--;" vs "if (a) { a--; }"
mod_full_brace_for	= remove	# "for () a--;" vs "for () { a--; }"
mod_full_brace_do	= remove	# "do a--; while ();" vs "do { a--; } while ();"
mod_full_brace_while	= remove	# "while (a) a--;" vs "while (a) { a--; }"
mod_full_brace_nl	= 3		# don't remove if more than 3 newlines


#
# inter-character spacing options
#

sp_return_paren		= force		# "return (1);" vs "return(1);"
sp_sizeof_paren		= remove	# "sizeof (int)" vs "sizeof(int)"
sp_before_sparen	= force		# "if (" vs "if("
sp_after_sparen		= force		# "if () {" vs "if (){"
sp_after_cast		= remove	# "(int) a" vs "(int)a"
sp_inside_braces	= add		# "{ 1 }" vs "{1}"
sp_inside_braces_struct	= add		# "{ 1 }" vs "{1}"
sp_inside_braces_enum	= add		# "{ 1 }" vs "{1}"
sp_assign		= add
sp_arith		= add
sp_bool			= add
sp_compare		= add
sp_assign		= add
sp_after_comma		= add
sp_func_def_paren	= force		# "int foo (){" vs "int foo(){"
sp_func_call_paren	= force		# "foo (" vs "foo("
sp_func_proto_paren	= remove	# "int foo ();" vs "int foo();"
sp_else_brace		= force         # "if (condition) {" vs "if (condition){"
sp_brace_else		= force         # "} else" vs "}else"

#
# Aligning stuff
#

align_with_tabs		= TRUE		# use tabs to align
align_on_tabstop	= TRUE 		# align on tabstops
# align_keep_tabs		= true
align_enum_equ_span		= 4		# '=' in enum definition
# align_nl_cont		= TRUE
# align_var_def_span	= 2
# align_var_def_inline	= TRUE
# align_var_def_star	= FALSE
# align_var_def_colon	= TRUE
# align_assign_span	= 1
align_struct_init_span	= 3		# align stuff in a structure init '= { }'
align_right_cmt_span	= 3
# align_pp_define_span	= 8;
# align_pp_define_gap	= 4;

# cmt_star_cont		= FALSE

# indent_brace		= 0

_______________________________________________
Linux-audio-user mailing list
Linux-audio-user@xxxxxxxxxxxxxxxxxxxx
http://lists.linuxaudio.org/listinfo/linux-audio-user

[Index of Archives]     [Linux Sound]     [ALSA Users]     [Pulse Audio]     [ALSA Devel]     [Sox Users]     [Linux Media]     [Kernel]     [Photo Sharing]     [Gimp]     [Yosemite News]     [Linux Media]

  Powered by Linux