Hi William, On Tue, Aug 01 2017 at 16:00:23 +1000, William Brown <wibrown@xxxxxxxxxx> wrote: > Hi all, > > Last night on IRC we were discussing the curious case of lib389. I think > this is a discussion we should have at some point. > > The question really boils down to - "is lib389 a seperate project? Or is > it part of 389-ds-base?" > > There are some pros and cons to both view points. > > lib389 is a python library that exposes high level interactions with 389 > directory server. This is done by making various calls via LDAP to the > server. > > The issue is that we have a split: we have tests in > 389-ds-base/dirsrvtests that are often *version* dependent. They relate > to features of the server, or issues in specific versions of the server > that may not exist in older versions. Today we kind of stradle the line > of "it's a bit of both". We have tests in 389-ds-base that depend on > versions of lib389 - but lib389 moves quickly and has little ability to > distinguish 389-ds-base versions. I don't think that we will avoid version dependency completely. These days we mark tests that can't be executed on the older versions of DS with skipif fixture as we run tests from master branch. > > -- Merging lib389 to 389-ds-base > > One proposal is to merge them. We would mix in lib389 and the > dirsrvtests into lib389 tests. It is often the case that lib389's > features are bound tightly to a version of directory server. > > Pros: > * No need to separate version lib389 to ds. lib389 is guaranteed to work > with *that* version of DS > * Testing DS is guaranteed to work. Right now we have rapid change in > lib389 and the tests in say 1.3.5 or 1.2.11.x are unlikely to work with > latest lib389. Another problem here is that tests are not backported to the older branches. The only true source of tests is master branch that is guaranteed to work with the latest lib389. > * We can tightly tie in features of DS with lib389 and their > administration (ie no need to worry about backward compatibility). > * Simpler release process - we only need to release 389-ds-base, and we > are done. > * No more split patches for lib389 features and tests. > > Cons: > * We will need to backport lib389 features to backport tests for fixes > to older versions. > * Inability for latest lib389 to manage older (or newer) versions of ds. > > -- Separate lib389 > > We have lib389 as a project that moves at a different rate to the > 389-ds-base project. > > Pros: > * lib389 is able to use it's "knowledge" to administer *multiple* > versions of Directory Server, rather that singly linked ones. > * We can write tests into lib389 once and test them against all DS > versions, or just relevant versions. > * We can have the admin tools manage many versions of the software which > may be cross platform/distro. Why these 3 points can't be done in merged lib389 using version specific logic in lib389 and the tests? > * No more split patches for lib389 features and tests. > > Cons: > * Need to invest time into version detection of the 389-ds-base package > for configuration (both local and remote). IE we add a plugin in 1.3.7, > but we need to know if lib389 is accessing 1.3.6 (and disallow the > change). I think of this as not a con, but a feature. Also adding more sanity checks would be good. Our tools should be fool-proof. > * Continue to manage separate release of software. > * Need to manage lib389's older versions operating against *newer* > 389-ds-base versions. This adds a lot of complexity and version checks > (potentially with some server awareness?) > > -- Do nothing > > This is the current status. I thought that separate lib389 is a current status, no? > > Pros: > * We don't spend any time on the issue at all. > > Cons: > * We get the worst of both worlds. > * Continue to increase complexity as these diverge. > * we often see the need to expand lib389 to express a test in > 389-ds-base, so we will continue to need to split patches > > > ============================ > > My vote is to merge them. I came to this decision because I believe that > this will make development against multiple branches easier with regard > to testing and backport of patches. For example, we'll know that lib389 > that's inside of 1.3.7 will *always* work with that release, even if we > have improved in 1.4.x etc. My vote is to merge them as well. But for slightly different reasons: packaging (blocking dependencies are not fun), single place of development. > > We also are developing new CLI and admin tools, and these are often > tightly linked to a version of Directory Server. I think that it's > easier for us as developers to have this specific linking, than trying > to spend large amounts of time making something generic that works for > all versions. What about migration scenario, when you have a mix of old and new versions of DS, and latest tools should be able to handle them? > > For example, this would make the CI workflow much simpler as we just get > "389-ds-base" and it's a self contained test suite and admin system. No > need to get the "matching pairs" as the separate workflow would require. I wouldn't say *much*, but it will be simpler. For CI it will be just one trigger instead of two for 389-ds-base and lib389. > > > Thanks, I look forward to the discussion and various inputs to the this > topic. > > -- > Sincerely, > > William Brown > Software Engineer > Red Hat, Australia/Brisbane > > _______________________________________________ > 389-devel mailing list -- 389-devel@xxxxxxxxxxxxxxxxxxxxxxx > To unsubscribe send an email to 389-devel-leave@xxxxxxxxxxxxxxxxxxxxxxx -- Viktor
Attachment:
signature.asc
Description: PGP signature
_______________________________________________ 389-devel mailing list -- 389-devel@xxxxxxxxxxxxxxxxxxxxxxx To unsubscribe send an email to 389-devel-leave@xxxxxxxxxxxxxxxxxxxxxxx