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. -- 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. * 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. * 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). * 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. 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. 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. 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. Thanks, I look forward to the discussion and various inputs to the this topic. -- Sincerely, William Brown Software Engineer Red Hat, Australia/Brisbane
Attachment:
signature.asc
Description: This is a digitally signed message part
_______________________________________________ 389-devel mailing list -- 389-devel@xxxxxxxxxxxxxxxxxxxxxxx To unsubscribe send an email to 389-devel-leave@xxxxxxxxxxxxxxxxxxxxxxx