Probabilmente non ti piacerà questo ... ma, ecco qui ...
I'm working on fixing some of the bugs as a way to get into the "loop" and become a regular committer to the project. The problem is I think I've uncovered a fundamental design flaw that's causing one of the bugs I'm working on.
No, no non l'hai fatto. Se lo facessi, non saresti così esitante a riguardo. Il fatto che tu stesso non sia sicuro riguardo al "difetto fondamentale del design" significa che non ne hai scoperto uno. Quando cerchi di indicare l'errore di qualcun altro, non ti compra amici per usare superlativi (come "fondamentale").
Ciò che potresti aver scoperto è un design leggermente migliore, per il problema che stai riscontrando. Probabilmente dovresti testarlo a fondo, però - dal momento che sei nuovo nel progetto, c'è una possibilità persino migliore che tu non abbia idea di cosa stai parlando.
But I feel like if I blast this on the mailing list I'm going to come off as arrogant
Definirlo un "difetto fondamentale del design" sarà sicuramente arrogante. Del resto, anche segnalare che potrebbe essere un bug non è la migliore idea. Se non sai per certo (e puoi eseguirne il backup) che si tratta di un problema, devi fare domande e ricerche umilmente finché non lo capisci completamente . Meglio di chiunque tu stia cercando di convincere.
...and some of the discussions I've had about the issue are butting heads with some of the people. How should I go about this?
Stop. Questo non è un problema morale, e non sta uccidendo nessuno (presumo). Se intendi essere un membro a lungo termine del progetto, devi prima guadagnare la fiducia prima di interrogarli. Risolvi i bug, esegui un ottimo lavoro (con qualsiasi metrica il gruppo valori), disegna alcune caratteristiche e guadagna un posto al tavolo.
Quindi, senza puntare le dita o chiamare qualcosa di rotto, fai apparire umilmente un suggerimento per migliorare il design del gruppo. E faresti meglio a pensare a tutte le conseguenze e alle soluzioni, o verrai abbattuto per essere "ingenuo". Sii pronto per una discussione sul perché il tuo design è migliore. Preparati a perdere e perdere con grazia.
Se la tua idea è davvero migliore, alla fine verrà accettata dal gruppo (anche se forse non dal designer originale), al gruppo non interessa, o il gruppo è stupido. In entrambi i casi, perché vorresti far parte del gruppo, comunque?
...
Se sei capace, l'alternativa è semplicemente codificare quella maledetta cosa in modo così sanguinante che tremano per lo stupore per la tua prodezza di codifica e non hanno altra scelta che accettare l'elegante semplicità e la verità eterna del tuo progetto. Gli sviluppatori fanno rispettano le competenze, ma bisogna stare attenti - la punizione per incompetenza (o arroganza ingiustificata) è piuttosto severa. Dal momento che stai facendo questa domanda, però, suppongo che la brillante e impudica strada dell'arroganza non sia davvero un'opzione. ;)