[ros-dev] Trunk. Development. Testing.

Alex Ionescu ionucu at videotron.ca
Mon Oct 16 22:53:09 CEST 2006


I'm going to lose a friend over this, but whatever.

I only have one comment:

Get a TC that has the time and will to do his job as outlined in the TC
manifesto, and that finds a proper Testing Team as outlined in that same
manifesto, which we all voted on and agreed as part of our constitution.

Maybe one more:

Don't bitch at the most active developer when he used to have his own
branch that "it's not fair his ReactOS hare more features!!!" and then
hold a vote that bans "Misc branches", then complain about why he
doesn't use branches. It seems Art is the only one that remembers this :)

Aleksey Bragin wrote:
> 		Hello,
> I have thought long time before writing this email, and finally it's  
> time to write it...
> N.B. I don't intend to hurt or offense anyone in this email. And  
> there is not so much use from a project leader who only says "yes",  
> "good", "agreed".
> 
> 
> We all see ReactOS became quite a big thing. Big everywhere - source  
> code, goals, development time... I think one would wish every FOSS  
> project to gain that level and speed of development.
> 
> If someone of you played Civ during youth, you certainly remember  
> that your cities can't grow, grow and grow without any efforts -  
> people become unhappy, city is ovecrowded, demanding sanitation and  
> special facilities in order to continue growth. If you don't provide  
> those needed facilities, the city is going to at least stop its  
> development, and usually goes into disorder due to unhappines.
> 
> Similar thing happens in software development too. Once project  
> reached certain size (even in terms of SLOC), developers' "tools"  
> should be upgraded and enhanced.
> 
> 
> That's it for theory. Let's have a look at ReactOS, and more  
> specifically its trunk.
> I'm getting more and more complaints that trunk is unstable, remains  
> unstable, and most of the time doesn't even boot, and the time came  
> to actually solve this problem, once and for ever.
> 
> As an example, I will show only one of common scenario:
> Some developer commits his code, which works for him on his, say,  
> qemu but doesn't work for another dev on his real hardware. That  
> developer continues to commit code, and in some time encounters that  
> dev whose machine doesn't boot reactos and he says: "hey,  
> you ...ng ...rd, you broke trunk!". I don't even dare to cite which  
> reply follows, because it would take a few pages to quote. The  
> developer who broke trunk starts to regress test, reverting revision  
> by revision, spending time to identify the regressed revision (this  
> may take a few days, and we don't have fulltime paid developers), and  
> then finally finds the bug, fixes and commits. By that time, another  
> developer commits code with a regression in other place, and trunk is  
> still unbootable. And blaming continues, flamewars start, who broke  
> what, instead of actually enjoying the development process.
> 
> Pretty unproductive, yeah? And you, the reader, are definately  
> wondering - what is the solution?
> I answer: There are a few solutions, but as always I will list only a  
> few
> 
> 1) "Wine"-method. There is one leader who decides what, how and when  
> to commit. He maintains the tree, he makes sure tree is in good  
> shape, he spends all of his time to do testing, merging, reverting,  
> remerging.
> It works really good for Wine. Will it work good for us? I am in  
> doubts, really.
> 2) Improving our current development system. That's the direction I  
> would like to use.
> 
> Major and the first improvement needed is testing. Testing often,  
> testing early, automating testing, getting more people to test,  
> regress test and feed results back to developers.
> Buildbot was a step in this direction, but more steps are needed.
> If someone broke booting, a proper recognized complain would be  
> "Revision NNXXY regresses 3rd boot with a bugcheck code NN stack  
> trace attached". The sooner this information is available and  
> developer is notified - the faster this bug will be solved.
> If developer is inaccessible within a long period of time, a decision  
> to revert this revision might be taken (that should be a really rare  
> case).
> 
> This shouldn't come to absurd of course, I can tolerate having trunk  
> broken for a few hours certainly, when developer is working on a  
> certain feature, and, well, of course he may mistake, not fully  
> commit something and so forth.
> But having it half-broken for 2 weeks AND noone took time to regress  
> test and find the guilty revision.
> 
> Or yet another example, fortunately last for this email. I  
> implemented an "alpha" version of usb mouse driver, along with that  
> recently incorporated NT4 compatible usb driver. And assumed, and  
> even asked in irc to test it - it's not that hard, but gives me a  
> chance to fix not-so-obvious issues before it'll be enabled by  
> default in trunk and will drive people crazy with some regress which  
> I didn't see on my machine, and, at last, even hearing "yay, your usb  
> mouse driver works!" just simply motivates me to finish e.g. a usb  
> keyboard driver, find and fix bugs, etc.
> 
> 
> Conclusions.
> 1) To improve development quality we must improve testing. Automate,  
> gather bigger testing team, etc.
> 2) Developers must be way more careful during commit. Just remember a  
> simple rule: Trunk is not a wastebin where you dump code to. It's  
> quite the opposite.
> 
> 
> Feedback.
> Your feedback is greatly encouraged and awaited. Feel free to discuss  
> this in this ML.
> 
> 
> With the best regards,
> Aleksey Bragin
> ReactOS Project Coordinator
> 
> 
> _______________________________________________
> Ros-dev mailing list
> Ros-dev at reactos.org
> http://www.reactos.org/mailman/listinfo/ros-dev
> 


-- 
Best regards,
Alex Ionescu
Project Lead, TinyKRNL
Kernel-Mode Software Design Engineer, ReactOS


More information about the Ros-dev mailing list