On 04/17/2012 03:04 AM, Dor Laor wrote: > On 04/16/2012 11:37 PM, Lucas Meneghel Rodrigues wrote: >> On Mon, 2012-04-16 at 14:08 -0400, Chris Evich wrote: >>> On 04/13/2012 05:34 PM, Ademar de Souza Reis Jr. wrote: >>>> On Thu, Apr 12, 2012 at 12:17:44PM -0300, Lucas Meneghel Rodrigues >>>> wrote: >>>>> So, we started this thread at github: >>>>> >>>>> https://github.com/autotest/autotest/issues/273 >>>>> >>>>> But we feel like it's a better idea to move it here. >>>>> >>>>> Bottom line, we'd like to separate the test modules (both client and >>>>> server side) in separate repositories. We have obviously the pros and >>>>> cons. Here are some of the points previously raised by Ademar: >>>> >>>> Thanks for moving the discussion to the list Lucas! >>>> >>>> I have more comments in the end. >>>> >>>>> >>>>> """ >>>>> Pros: >>>>> - Scalability: we want autotest to grow orders of magnitude, and the >>>>> current model simply doesn't scale. Right now Lucas spends a good >>>>> amount >>>>> of his time reviewing tests and maintaining the good quality of the >>>>> autotest codebase. Once we move the tests out of autotest.git, we >>>>> get a >>>>> clear separation and different patch queues with different priorities >>>>> (and lots of different maintainers). >>>>> - If we want autotest to be used by 3rd parties (and we do), we >>>>> have to >>>>> consider tests written outside of autotest.git as first class >>>>> citizens. >>>>> One of the best ways to do that is by leveraging the playing field and >>>>> eating our own dogfood: tests written by us should work under the same >>>>> scenario and cirscunstances of the 3rd parties tests and that means >>>>> outside of the autotest repository. And this should be the default. It >>>>> will help us keep the API stable, enforce a clear separation between >>>>> tests and the framework/library and give us a clear understanding >>>>> of any >>>>> usability problems or breakage. Think of multiple releases of >>>>> autotest: >>>>> you'll need to declare compatibility between releases and some tests >>>>> will require Autotest>= X. One of the best ways to keep track of these >>>>> changes is by having tests separated from the framework. >>>>> - 3rd party developers, most of the time, are not interested in >>>>> contributing to autotest itself. They want to use autotest to write >>>>> their tests, but get scared of the complexity of the codebase. KISS is >>>>> king here: we need a clean, intuitive and self descriptive directory >>>>> strucutre on autotest.git to attract new contributors, and having >>>>> tests >>>>> there, with control files, output dirs, reference files and a >>>>> changelog >>>>> with test changes just doesn't help. Ditto for people writting new >>>>> tests. >>>>> - I've heard this request multiple times during meetings with managers >>>>> or developers from other teams: they want to have their own tests >>>>> inside >>>>> their own repository. Submitting and maintaining their tests to >>>>> autotest.git is a burden. >>>>> >>>>> Cons: >>>>> - It's a change and it's natural for us to resist it. >>>>> - For people already familiar with the codebase, writing new tests or >>>>> fixing current tests will require more work, as we may have to submit >>>>> patches to multiple repositories. But this is a good thing: it'll help >>>>> us keep in mind the API stability and better document and >>>>> understand the >>>>> changes that get into autotest.git. >>>>> """ >>>> >>>> A summary of a few other points raised in the github discussion: >>>> >>>> - About the risk of splitting the tests (we'll have to keep tests >>>> and the library in sync): >>>> >>>> We definitely want 3rd parties to write their own tests and >>>> keep them running on their side. And we want that without the >>>> need of forking autotest. This is even supported right now. >>>> >>>> So the risk already exists for these users and we would be >>>> irresponsible in breaking the API without proper versioning of >>>> the library and a proper release-notes. >>>> >>>> That's why in my mind we should have the autotest library >>>> properly versioned and tests completely decoupled from it. >>>> >>>> >>>> - The current tests validate the framework (working as kind of >>>> "unit-tests" for autotest itself) >>>> >>>> The lack of unit-tests in autotest is a separate problem, which >>>> should not be a requirement for the split, as there will be >>>> possible to keep validating the framework with the external >>>> tests anyway (the same way applications using a library find >>>> bugs in the library, external tests will find bugs in the >>>> autotest framework). >>>> >>>> >>>> - About the scalability and 3rd party use: "These are more >>>> people/project/communication dynamic issues, not code issues. >>>> Splitting code will just fork Lucas as opposed to cloning him." >>>> >>>> Please think about the future, not the current set of tests. I >>>> envision autotest growing in orders of magnitude, with projects >>>> implementing their own tests and using the power of the >>>> autotest framework to run and instrument these tests. >>>> >>>> The current tests are just a small portion of the potential >>>> tests that can be "users" of the autotest framework/library, >>>> each its own maintainers. And in that scenario, concentrating >>>> tests inside autotest.git will bring a considerable maintenance >>>> burden and increase the bar for new contributors (not to >>>> mention it's not desirable: many users of autotest don't intend >>>> to contribute to the framework, they just want to use the >>>> framework for their own tests, and nowadays they usually fork >>>> autotest). >>>> >>>> Besides, splitting the tests will immediately free developers >>>> allocated to the core framework from even paying attention to >>>> the evolution of the tests and vice-versa. >>>> >>>> That should be it by now. :) >>>> >>>> Cheers, >>>> Ademar >>>> >>> >>> Well argued, and thanks for the more explicit reasoning. I agree, it >>> will be key to have autotest library internal and repo. version as part >>> of API, and hooking onto this from tests as much as possible. Not an >>> impossible task, but certainly some amount of additional effort would be >>> required. >>> >>> With respect to scaleability, I may need more convincing (and presumably >>> others may too). It would help the argument greatly if we were planning >>> on increasing the number and/or complexity of tests. Then I could see >>> how we'd have problems with scale. >> >> I think Ademar is more concerned about declaring the 'core' framework >> effectively independent from the other tests, to make it easier to >> follow (one won't see test related patches anymore). The current tests >> inside autotest will be kept by the same team, only the commits won't be >> mangled in a single repo. >> >>> Another thing to consider if we split, but include some tests: What's >>> the criteria by which a test is bundled, or not? i.e. I can envision >>> future scaleability problems if it's too inclusive of one test class >>> over another. Perhaps, it would be best to just draw the line and >>> declare NO tests are included (besides unittests maybe)? >> >> Unittests definitely have to stay, plus the self-test tests, as Ademar >> mentioned. > > Tests can be bundled as sub projects and still be hosted by the autotest > git repo. Once such tests gain traction from some upstream development > project we can consider of moving them outside. >
Similarly (to lmr/Ademar's 'make it easier to follow' point), mailing lists can be filtered based on keywords. --- I agree in principal with the majority of points made on this topic so-far. I also think it's good for us to work toward a stable/elegant API with more version-aware 'smarts' built-in to tests. i.e. enabling a split in the future. It's also good that we want to foster community use and growth of the project. However, my perception is that splitting would mostly be a one-way undertaking. At this point in time, I'm not sure the extra burden and risk is greater than the current level of suffering. I also wonder if it might be possible to achieve the goals of splitting, w/o actually splitting (i.e. repo., workflow, and ML keywords, whatever else). Maybe an enhanced development workflow and repository management stuffs. Today, the 5-20 mailing list and github mails per day doesn't seem difficult to manage. Esp., given the slow, methodical and careful moves in updates to the core client/server code. If at some point in the future, it's clearly a PITA to have everything blobbed together, then by all means let's split the test content. Until then, I believe we shouldn't 'put the horse in front of the carrot', and 'if it ain't broke, don't fix it'. However, if the group decides in favor of a split, then I'll still be on-board and support the effort as best as I can. -- Chris Evich, RHCA, RHCE, RHCDS, RHCSS Quality Assurance Engineer e-mail: cevich + `@' + redhat.com o: 1-888-RED-HAT1 x44214 _______________________________________________ Autotest mailing list Autotest@test.kernel.org http://test.kernel.org/cgi-bin/mailman/listinfo/autotest