the end-goal of any (product) development model is to get discipline, accountability, predictability, scalability in order to get stability and quality on the goods deliverable. Everything else is subsidiary to this.
As i've written before, conary is 'just' a packaging/configuration management technology, the best one, but still just that. And, that kind of technology, per definition, as good or evolved as it may be, will never be a substitute to understand what is being handled in concrete, and it's role in the environment it runs. Also, no one, on sane grounds, should expect anyone to be fluent on all packages, all stacks, all levels. More, the core basis of the whole open source development model, what really makes it scale, is openness and collaboration. We do not have the resources, the people, the money, nor we should have the ego, to try, even pretend to, reinvent the wheel. If something is well done/maintained elsewhere, and it works and suits our needs, and we can legally leverage it, we should just use it, and move ahead. We should just invest our time, which is our most precious resource, in places where we can add value and make a difference, for the better. Being just different will not bring us any good, being better will. With this lines draw clearly draw in the wall, here's what i envision for foresight3, and beyond... ... on package naming and package Specing Foresight will be a from the ground, up from the source (:recipe) full distribution. We will just follow Fedora's package naming/splitting conventions, wherever they are sane or not. We need this in order to leverage the works that will come from 'boots'. Please do note that we will have to follow rigidly fedora at their naming conventions at binary package level, at recipe level, we have more flexibility, anyway, for consistence, we will use _not_ cheaply that flexibility, and if and when we do, we should document properly why we did it, for future memory. In order to get lightweight on size we will need more granularity in the way we deliver binaries. This implies more fine grained pkgSpecing. Again we will follow fedora on this. A tool will be provided that for any given package, will give us the fedora spec rpm name of it, and all the different binary packages it will produce. ... on file layout We will follow exactly RHs/Fedora file layout conventions, for compatibility and convenience. Exception, will be hooks, to preserve existing behavior, or to assure migration paths. If, and when, we deviate, it should be properly documented why, and the benefits we get from that. ... on package versions, and patchsets For all the packages, to which we do not have proper know-how, or which are not core to the value we intend to deliver, we will use strictly Fedora as our upstream. When we do not, it should be clear on our side why, and who is responsible to handle those packages. The major goal, is to have just two kinds of bugs - either upstream ones (Fedora) or ones for which we have people savvy enough to tackle them. Please do note that there are at any given times two Fedora trees that matter to us - shipped one (N), and rawhide (that will turn into N+1). Our immediate goal, is to match feature wise a given stable Fedora release, and then, start leveraging the work they do in N + 1, as our tools allow that. With that said, we will not be blindly bleeding edge, and things only should get in production after it is clear that there's is really added value there. Again, remember "" At any given time, not try to provide the "best new technology of tomorrow", but the best "*working* technology of today" """. Exceptions are support for 'legacy/corner' technologies like selinux and gcj support. Regarding selinux. which is largely irrelevant for our use cases, we have two options either _actively_ ignoring it, dropping all patches related to it, and all configs selinux related, or simply have it around, and still ignoring it, as it will be always off by default. Which one we choose is a matter of what gets cheaper resource-wise for us. Regarding gcj & associates, which is largely superseded by the icedtea/openjdk stuff, is adds an overhead that we can clearly stay without, so we will pretend it does not exist. Again, anytime we deviate from fedora, we should document properly . At higher levels we can, and should, track the goodies elsewhere, but always in a consistent and documented manner. Picking random patches from random places is not the way to go. ... on package maintenance Packaging is not the hardest part. Maintaining a package is. A logical result of everything said above, is that we should only have to worry with the stuff we feel confortable with. all else we follow upstream decisions. When not, we should document. ... on metadata Albeit conary has good support for metadata (it swallows happily rpm's and deb's one), we, at foresight, are not actively, yet, leveraging it. We will, from now. In order to ease maintainability, scalability, scriptability and integration with 3rd party tools, metadata for each :source package will start to get stored separately, say in a INFO file. the goal is to make it easily parsable. a prototype skeleton bellow -- x-- [packageName] < -- needs to match recipeName summary ... description ... URL arch x86 x86_64 # or x86 or x86_64 or noarch [[license]] < -- we should have a canonical list of licenses to accept, and if fetching something new one, force us to add it to list. also, we may need to to support packagings with multiple licenses and comments see bellow GPLv3 CC # for documentation [[patches]] patchName patchOrigin - Fxx/rpath/foresight/add otherSources here)) patchPristiness(optional field only used for non foresight patches, either does not exist or says modified) this last field is to warn against too fast patch application if they have to be modded first. also this will allow to track patch lifetime 'upstream', with info bellow in tracks [tracks] <-- what we are tracking/following Fxx (optionalAliasIfRhNamingDifferentFromOurs) srpm/tarball/whatever.version.XX.f1Y [sets] # this will be used in future for dynamic group creation. # syntax to be refined. gnome gnome-lite [[subpackage and or :component]] summary description [sets] --x-- the fields to be populated above have two main purposes, to get plain metadata (descriptions, etc) fetched by our conary policies at build time (to be consumed by packageKit, etc) and to help on maintenace (more on this later). For economy, we will reuse, whenever is possible Fedora's work on metadata (package descriptions et al, as, again, we have no point in reinventing the wheel. ... on management tools. mirrorball (http://hg.rpath.com/mirrorball) has already some nice hooks to compare what is in a rpm repository and what got already in a conary one. Right now it cares most about binary packages. We will extend it to introspect source rpms and debs too, and cross the data we get from that to the data we are putting in the meta-data, as described above. This way, we will get close to real time reports, on how we are re: the alternatives, etc. This new tool, whose development will be lead by Scott Parkerson, who kindly volunteered, will be the center of all our development activities and will integrate closely with our issue tracker, and upstream ones. This is absolutely key to keep us focused and disciplined, and ultimately for us to scale. The extensions we provide for mirrorball funtionality will naturally will be provided back to upstream, rather than being a fork. ... on editions / profiles Gnome, XFCE, KDE, as we already have people who understand these well. Would like to have moblin too in the future, allelse we get commited people too. ... on priorities get feature parity with the parts we care of F12, at time of F12 release, and go from there. If not possible, F13. ... on groups Groups are way too complicated right now. We will have a base group, roughly equivalent to the rPL's appliance one, a minimal GUI one, with X and the libs/services we want common to all variations, and all else edition specific (or devel groups). One single top level group will assure dep closure, per arch. ... on community our (marketing) focus strategy wise, short term, should be not to try, 'too hard' to recruit new plain end users, whose will better served by 'boots', but to make dead easy for power users, and existing and wannabe developers elsewhere, to integrate in our community. We really need to cut down on the Signal/Noise ratio we wave right now, if we ever want to get things to scale. Why would ogthers come to join us ? - one single reason, not to think different but to act differently and helping to shape how things should really become. The fact that we are a small, friendly, community needs to get leveraged right versus the too big, too gray, too bureaucratic ones, that exist elsewhere. -- to be continued All the best, António P.S. This paper does not pretend to be the perfect or definitive answer to anything. It must be seen as a small part of an ongoing effort to help us separate what is for us, core, and what isn't, what is essential, and what is accessory. _______________________________________________ Foresight-devel mailing list Foresight-devel@lists.rpath.org http://lists.rpath.org/mailman/listinfo/foresight-devel