I am trying to follow the thread, but the discussion it is getting too abstract. Everyone is defending concepts but at the end because the level of abstraction of the discussion everyone may be talking the same. Architecture, design and layering is fine, as long as you don't lose focus from the important: ZYpp never got the small community it has because its design/architecture (libzypp still has bad stuff) or the language (it is still very advanced C++) but because: - it got really fast (solved its main showstopper) - zypper got really good (improved over the competition) - it got more universal (as it could be used via PackageKit) So I recommend to focus on what this new module will look like, how fast it will be, how the command line will look like, the documentation, etc. From there the language/architecture part is important, but secondary. Don't forget the architecture depends a lot on the language/ecosystem you choose, so create it as you envision the end user experience. For example, if you choose Ruby, the thing you call "lib" which is giving you understanding headaches in the discussion, may look like a set of ActiveRecord models, representing nouns, all implementing CRUD and reusables across UI, cmdline and web controllers. But in Python it may look completely different. Then do it!. Then refactor. If you got the experience you aimed for, do a second module, refactor the infrastructure to reflect the new use cases, and iterate. Just my 0.02€. -- Duncan Mac-Vicar P. - Novell® Making IT Work As One™ SUSE LINUX Products GmbH, GF: Markus Rex, HRB 16746 (AG Nuernberg) -- To unsubscribe, e-mail: yast-devel+unsubscribe@opensuse.org For additional commands, e-mail: yast-devel+help@opensuse.org