Re: The state of LSB Packaging?

2010-05-20 Thread Jeff Johnson

On May 20, 2010, at 10:28 AM, Denis Washington wrote:

> 
> Simple in that
> 
> 1. it only consists of a very small set of C functions (essentially 
> register+unregister, plus a few to assemble the package metadata) which don't 
> require any other library to be used
> 

Well, here's the existing (and SIMPLE) register/unregister API in RPM
stripped to a bare-bones invocation:

rpmdb db = ...; /* database handle */
Header h = ...; /* package metadata encapsulation */
uint32_t hdrNum = ...;  /* package instance # in database. */

int rc = rpmdbAdd(db, time(NULL), Header h, NULL);

int rc = rpmdbRemove(db, time(NULL), hdrNum, NULL);

The only complexity there is in finding the API gozzintas, the API itself is 
already SIMPLE.

I only mention to underscore Yet Again that is the data and context, not the 
API,
that aren't SIMPLE. I wouldn't even discuss the register/unregister API per se,
because its the data and the context, not the methods, that isn't SIMPLE.

> 
>> But if you can devise some reasonable spewage for encapsulating "package"
>> data, I'll try to embed your API @rpm5.org.
>>   
> 
> Great to hear.
> 

Just to try to be optimistic:
Show me some code and I'll try to use it.

73 de Jeff
__
RPM Package Managerhttp://rpm5.org
LSB Communication Listrpm-lsb@rpm5.org


Re: The state of LSB Packaging?

2010-05-20 Thread Denis Washington

Am 20.05.2010 14:58, schrieb Jeff Johnson:

On May 20, 2010, at 4:03 AM, Denis Washington wrote:

   

On May 19, 2010, at 10:12 PM, Jeff Johnson wrote:
 

Are you writing an "ISV installer"? A "standard" specification? Resurrecting the 
"Bergdorf API"?

All or some or any of the above?

I cannot yet tell ... meanwhile the "Bergdorf API" got farther along than
any other implementation, so please -- no need to apologize for anything.

   

Sorry for not being clear enough, let me explain again. There are only two 
things I am proposing for the LSB:

- A sufficiently precise definition of a package and it's accompanying metadata.

 

THis ounds like Yet Another Form of Markup Spewage. The definition of the 
metadata
contents is nowhere near as important as the definition of the semantic 
interpretation
of the content, or figuring how the spewage can be parsed into existing package 
managers
when written in perl/python/ruby/java/ocaml/haskell/... etc.

Again, Mancoosi and Nix are closest to getting the semantic interpretation 
precisely
defined. OTOH, neither OCAML or C++/perl are very useful for say, a 
java/ruby/python
package manager implementation. Both CUDF and Nix were a rather painful amount
of effort to embed @rpm5.org in C (and neither of the implementations is very
pleasing as code goes, or useful to RPM functionality, so far).
   


I am well aware that the exact interpretation of the provided metadata 
is central to the specification. Please, remember that I am currently 
just presenting my general ideas, not a detailed definition of 
everything that is needed.




   

- A VERY simple API for notifying the system package manager of the 
installation / removal of such a package.

 


But what is the criteria for SIMPLE? Few methods with minimal arguments? Fewest
prerequisites (like perl/OCAML)? Smallest resource usage? Most widely
portable/available? Most distros/lusers who claim SIMPLE?

Its reliability that is usually more important criteria after design/development
(where SIMPLE is desirable because easiest to implement).

...
   


Simple in that

1. it only consists of a very small set of C functions (essentially 
register+unregister, plus a few to assemble the package metadata) which 
don't require any other library to be used


2. its "fallback implementation" will be written in standard C + libc 
for maximum portability between Linux distributions (plus maybe package 
manager specific libraries for the fallback mechanisms,  but those are 
only loaded if needed)


3. it is, because of the two properties above, _very_ simple to use from 
different programming languages (almost any programming language used in 
the real world can reasonably well interface with C).


Primarily I meant the first of these points: the interface should be 
very narrow and not take a lot of effort to implement for a given 
packaging system. (Provided the specified package semantics can be 
easily mapped to the semantics of the native packaging system.)



Which might let the distro makers think: if no ISV will use the API anyway, is 
there any point in implementing it at all?

The classic chicken-and-egg problem.

 

These are the flaws with an approach through an API.

Until the API exists and is widely deployed, noone will use the API
no matter what functionality the API provides.

...
   


That's the point of the fallback implementation: it allows ISVs to use 
the API *before* it is deployed by the distros, providing them a 
reasonable amount of integration when the implementation has a fallback, 
and no penalty (opposed to the current situation) when not.



Using this fallback implementation, an ISV would have the instant benefit of 
increased integration with the native packaging system by using the API now. At 
worst, in the case of more exotic package systems without existing fallback 
(the ISV has probably not supported that before, anyway), the (un)installation 
process would be as badly integrated as before, so using the API would be 
win-only. Because of this, chances are that the API gets more widespread use, 
which in turn might get package managers to implement the spec, which in turn 
makes integration better because the fallback mechanisms don't have to be used, 
which in turn makes users happy, which in turn makes ISVs and distros happy... 
you get the idea.

How does that sound?

 

Well, I said up front
An API (and a method based approach) isn't what is needed imho.
What is needed is a focus on data and emantics and access patterns.
I said as much to LSB when the "Berlin API" was first proposed.
   


In the risk of repeating myself: I know. I very well know. But this 
doesn't change the fact that before anything else, there must be a way 
for ISV-provided installers to communicate with the package manager. 
Without that, all definitions of semantics have no practical relevance, 
so that is why I am mentioning the API as a way to provide that. Bu

Re: The state of LSB Packaging?

2010-05-20 Thread Jeff Johnson

On May 20, 2010, at 5:03 AM, Dominique Dumont wrote:

> On Thursday 20 May 2010 10:03:55 Denis Washington wrote:
>> How does that sound?
> 
> A bit like some ideas I have regarding packaging for ISV ;-) :
> 
> http://wiki.debian.org/SummerOfCode2010/UniversalPackageForIsv
> 
> I proposed this for Google Summer of code, but no student stepped up.
> These ideas are not well fleshed out, and I don't have time to work on them 
> until probably 2011 (I'm mentoring another project regarding package config 
> upgrade). 
> 

Well if/when you get to this

Dependency are not declared with native package names, but with 
functionality names (a bit like the generic names used by update-alternatives). 

poke me.

Here's some historical context re "functionality names" and "translation"
from RPM <-> LSB:

LSB insists
No dependencies except "Requires: LSB" are permitted.
and RPM (and most package managers) rely on dependency assertions
to assemble collections of packages to be installed reliably.

So in order to have it both ways, @rpm5.org has carefully
moved most of the automated dependency generation from static to install-time
methods. I.e. the dependencies can be generated automatically from content
while installing, not from explicit static markup contained
in packages while building.

The connection with your proposal is that a naming/namespace taxonomy
based on "functionality" (e.g soname(LIBRARY) for ELF linkage as
one easy to describe "functionality") is very much needed.

Note that (imho) "functionality" needs to be objectively tied to
some testable closure mechanism, not left to some mysterious and magical
or implicit DWIM for package dependency assertions as in update-alternatives.

Nothing wrong with update-alternatives "functional" names per se, just that
the closure mechanism needs to be well defined too, such as whether DT_NEEDED
is matched with a DT_SONAME for ELF linkage.

73 de Jeff
__
RPM Package Managerhttp://rpm5.org
LSB Communication Listrpm-lsb@rpm5.org


Re: The state of LSB Packaging?

2010-05-20 Thread Jeff Johnson

On May 20, 2010, at 4:03 AM, Denis Washington wrote:

> On May 19, 2010, at 10:12 PM, Jeff Johnson wrote:
>> Are you writing an "ISV installer"? A "standard" specification? Resurrecting 
>> the "Bergdorf API"?
>> 
>> All or some or any of the above?
>> 
>> I cannot yet tell ... meanwhile the "Bergdorf API" got farther along than
>> any other implementation, so please -- no need to apologize for anything.
>>   
> 
> Sorry for not being clear enough, let me explain again. There are only two 
> things I am proposing for the LSB:
> 
> - A sufficiently precise definition of a package and it's accompanying 
> metadata.
> 

THis ounds like Yet Another Form of Markup Spewage. The definition of the 
metadata
contents is nowhere near as important as the definition of the semantic 
interpretation
of the content, or figuring how the spewage can be parsed into existing package 
managers
when written in perl/python/ruby/java/ocaml/haskell/... etc.

Again, Mancoosi and Nix are closest to getting the semantic interpretation 
precisely
defined. OTOH, neither OCAML or C++/perl are very useful for say, a 
java/ruby/python
package manager implementation. Both CUDF and Nix were a rather painful amount
of effort to embed @rpm5.org in C (and neither of the implementations is very
pleasing as code goes, or useful to RPM functionality, so far).


> - A VERY simple API for notifying the system package manager of the 
> installation / removal of such a package.
> 


But what is the criteria for SIMPLE? Few methods with minimal arguments? Fewest
prerequisites (like perl/OCAML)? Smallest resource usage? Most widely
portable/available? Most distros/lusers who claim SIMPLE?

Its reliability that is usually more important criteria after design/development
(where SIMPLE is desirable because easiest to implement).

...

> 

> Which might let the distro makers think: if no ISV will use the API anyway, 
> is there any point in implementing it at all?
> 
> The classic chicken-and-egg problem.
> 

These are the flaws with an approach through an API.

Until the API exists and is widely deployed, noone will use the API
no matter what functionality the API provides.

...

> Using this fallback implementation, an ISV would have the instant benefit of 
> increased integration with the native packaging system by using the API now. 
> At worst, in the case of more exotic package systems without existing 
> fallback (the ISV has probably not supported that before, anyway), the 
> (un)installation process would be as badly integrated as before, so using the 
> API would be win-only. Because of this, chances are that the API gets more 
> widespread use, which in turn might get package managers to implement the 
> spec, which in turn makes integration better because the fallback mechanisms 
> don't have to be used, which in turn makes users happy, which in turn makes 
> ISVs and distros happy... you get the idea.
> 
> How does that sound?
> 

Well, I said up front
An API (and a method based approach) isn't what is needed imho.
What is needed is a focus on data and emantics and access patterns.
I said as much to LSB when the "Berlin API" was first proposed.

But if you can devise some reasonable spewage for encapsulating "package"
data, I'll try to embed your API @rpm5.org.

73 de Jeff

__
RPM Package Managerhttp://rpm5.org
LSB Communication Listrpm-lsb@rpm5.org


Re: The state of LSB Packaging?

2010-05-20 Thread Dominique Dumont
On Thursday 20 May 2010 10:03:55 Denis Washington wrote:
> How does that sound?

A bit like some ideas I have regarding packaging for ISV ;-) :

http://wiki.debian.org/SummerOfCode2010/UniversalPackageForIsv

I proposed this for Google Summer of code, but no student stepped up.
These ideas are not well fleshed out, and I don't have time to work on them 
until probably 2011 (I'm mentoring another project regarding package config 
upgrade). 

Feel free to re-use what you want.

Dominique
--
http://config-model.wiki.sourceforge.net/ -o- http://search.cpan.org/~ddumont/
http://www.ohloh.net/accounts/ddumont
__
RPM Package Managerhttp://rpm5.org
LSB Communication Listrpm-lsb@rpm5.org


Re: The state of LSB Packaging?

2010-05-20 Thread Denis Washington

On May 20, 2010, at 11:03 AM, Dominique Dumont wrote:

On Thursday 20 May 2010 10:03:55 Denis Washington wrote:
   

How does that sound?
 

A bit like some ideas I have regarding packaging for ISV ;-) :

http://wiki.debian.org/SummerOfCode2010/UniversalPackageForIsv

I proposed this for Google Summer of code, but no student stepped up.
These ideas are not well fleshed out, and I don't have time to work on them
until probably 2011 (I'm mentoring another project regarding package config
upgrade).

Feel free to re-use what you want.
   


Thanks for the pointer. Looks interesting, although the problem of 
merely defining a format, as lined out in the wiki page you linked to, 
is that support for that must be in the distros, which is somewhat a 
show-stopper as I explained.


However, it would probably be a good idea to define a package format 
after (if) the API is widely adopted, as a long-term solution. The 
obvious advantage of a specified format opposed to the API (which will 
have to always be there as an alternative, though, for cross-platform 
installers and the like) is that installing is more secure, as packages 
of that format would be verified and installed by the system with no 
dangerous third-party code running (provided only restricted scriptlets 
are allowed). The API, on the other hand, requires ISV-provided 
installer code which will most likely have to run as root (but that's 
the case with current installers not using the API, too).


All in all, a package format would be good for the future, but in the 
short run I'll concentrate on an API + metadata definitiion approach.


Regards,
Denis Wahsington
__
RPM Package Managerhttp://rpm5.org
LSB Communication Listrpm-lsb@rpm5.org


Re: The state of LSB Packaging?

2010-05-20 Thread Denis Washington

On May 19, 2010, at 10:12 PM, Jeff Johnson wrote:

Are you writing an "ISV installer"? A "standard" specification? Resurrecting the 
"Bergdorf API"?

All or some or any of the above?

I cannot yet tell ... meanwhile the "Bergdorf API" got farther along than
any other implementation, so please -- no need to apologize for anything.
   


Sorry for not being clear enough, let me explain again. There are only 
two things I am proposing for the LSB:


- A sufficiently precise definition of a package and it's accompanying 
metadata.


- A VERY simple API for notifying the system package manager of the 
installation / removal of such a package.


Distributions would be encouraged to implement this API in their system 
package manager for third-party installers to use. Likewise, ISV's and 
cross-platform installer authors would be encouraged to use that API. So 
if an installer uses it, and the system's package manager supports it, 
the installed package is registered correctly in the native package 
database, and all is fine and dandy.


So far, so good. Now here's the problem: no distro / package manager 
currently supports the API, naturally, because it is not something that 
already existed before. And because this is the LSB, it _must_ already 
exist in the current enterprise distros before it gets into the 
standard. So even if the API would be implemented NOW, we would have to 
wait about 2 to 4 years before even the major enterprise distros have 
adopted it, and another year or so before it is officially part of the 
standard.


What would that mean for ISVs? Right: the API would be completely 
irrelevant. Naturally, they COULD modify their installers to use the API 
if available and the old way otherwise, but why bother if really no 
single LSB-certified enterprise distro has support for it? Even if 
adding support for the API was cheap as dirt, there just wouldn't be any 
point.


Which might let the distro makers think: if no ISV will use the API 
anyway, is there any point in implementing it at all?


The classic chicken-and-egg problem.

Having realized this, it should be clear that there must be a transition 
path between "nobody implements / uses the API" and "(almost) everybody 
implements / uses the API". And this is where the code *I* am planning 
to write comes into play: an implementation of the API that can be used 
by installers NOW by statically linking to it. That implementation will:


- query the system package manager for an implementation of the API, and 
use that if available.


- will use an built-in fallback mechanism if the system package manager 
does NOT implement the API, provided the package manager is known to the 
fallback implementation. In the case of rpm, this would probably be 
similar to the rpmlib hackery I showed you with the Burgdorf API.


- do nothing if there is neither a system nor a fallback implementation, 
that is, package (un)registration will be a no-op.


Using this fallback implementation, an ISV would have the instant 
benefit of increased integration with the native packaging system by 
using the API now. At worst, in the case of more exotic package systems 
without existing fallback (the ISV has probably not supported that 
before, anyway), the (un)installation process would be as badly 
integrated as before, so using the API would be win-only. Because of 
this, chances are that the API gets more widespread use, which in turn 
might get package managers to implement the spec, which in turn makes 
integration better because the fallback mechanisms don't have to be 
used, which in turn makes users happy, which in turn makes ISVs and 
distros happy... you get the idea.


How does that sound?

Regards,
Denis
__
RPM Package Managerhttp://rpm5.org
LSB Communication Listrpm-lsb@rpm5.org


Re: The state of LSB Packaging?

2010-05-19 Thread Jeff Johnson

On May 19, 2010, at 2:26 PM, Denis Washington wrote:

> 
>> Meanwhile, what you are describing (and guessing from your previous 
>> freedesktop-like
>> implementation), you might as well just use PackageKit, which already has 
>> backends
>> and more.
>>   
> 
> Interesting how often my proposal was directly compared to PackageKit 
> (including PackageKit author Richard Hughes himself) just because of the 
> choice of technologies.
> 

Fear not: I'm hardly confusing your previous "Bergdorf API" implementation
with PackageKit (which I think is a bit silly as tools go).

However, you _DID_ choose certain technologies from GNOME freedesktop for your
"Bergdorf API", and the largest objections (not from me) were that
you had used GNOME freedesktop API's prematurely/incorrectly. (All from memory,
I'll dig out details for my delusions if necessary; I'm certainly not 
disagreeing/arguing
what you are/were trying to do or did, I'm an innocent bystander here ;-).

> PackageKit is designed as an interface for installing distro-specific 
> packages or getting specific packages from distro-specific package 
> repositories. That's its use case. Registring software in the package 
> manager's database that does *not* come in the form of a native distro 
> package is completely outside of that use case. Adding that to PackageKit 
> would not make much sense imho. Also, PackageKit is not used in many distros 
> (only in RHEL probably) so it is by far not a candidate for inclusion into 
> the LSB.
> 

No need to explain: PackageKit is silly/foolish as tools go. JMHO, YMMV, 
everyone's does.

> Also, I am aiming for a more low-tech implementation this time. As the 
> fallback implementation must work without being installed on the system, 
> things like registered D-BUS services and PolicyKit are a no-no anyway. A 
> simple library depending only on libc (and glib, if I'm lazy, plus the 
> package-manager-specific libraries used in the backends) will most probably 
> do, assuming the installer will run as root (which is no worse than existing 
> ISV installers).
> 

Are you writing an "ISV installer"? A "standard" specification? Resurrecting 
the "Bergdorf API"?

All or some or any of the above?

I cannot yet tell ... meanwhile the "Bergdorf API" got farther along than
any other implementation, so please -- no need to apologize for anything.

>>> - In parallel, fill the holes in the LSB RPM spec (possibly uplifting to 
>>> v4) and try to synchronize the metadata semantics with the ones of the 
>>> package API (meaning, probably, that the package API will end up receiving 
>>> RPM semantics at many places). This means we will have the package API for 
>>> things like cross-platform installers on the one side and the RPM format as 
>>> an alternative direct format on the other side, and we may be able to keep 
>>> compatibility with the old RPM spec. (Crucial as the LSB 4.x series is 
>>> committed to backwards compatibility.)
>>> 
>>> 
>> Please, its the "LSB format" spec, not the "LSB RPM spec".
>> 
>> The distinction is crucially important.
>> 
>> What LSB has chosen to make "standard" has nothing to do with RPM for
>> many years now.
>> 
>>   
> 
> As you please.
> 

(aside)
I've wasted months of my life on the confusion between LSB <-> RPM.

Enuf: LSB != RPM. Period. They are different implementations and different 
"branding".
If you want a "LSB package" installer/format/brand/whatever, well its silly to
talk on an RPM list for a LSB "product" and/or "standard".

>>> There are probably a lot of issues with this path, but it might be a good 
>>> start to experiment with. What do you think?
>>> 
>>> 
>> For register/unregister (and "transactionally protected" ACID behavior), I'm
>> currently embedding sqlite3 in RPM, and using sqlite3 "virtual tables" (VT) 
>> as
>> an abstraction for register/unregister (largely because sqlite3 VT have two
>> phase commit methods), and using SQL as a data focussed implementation 
>> language.
>> 
>> Note "data focussed" and de facto bog-standard as the basis for choosing SQL.
>> I don't particularly like SQL or sqlite3 implementation languages.
>>   
> 
> Unfortunately I don't understand what exactly you are trying to do. Could you 
> elaborate a bit on this?
> 

I'm looking for "package" register/unregister methods (a la the "Berlin API") 
implemented directly in SQL.

All the rest of what I said are implementation details.

73 de Jeff
__
RPM Package Managerhttp://rpm5.org
LSB Communication Listrpm-lsb@rpm5.org


Re: The state of LSB Packaging?

2010-05-19 Thread Denis Washington

Am 19.05.2010 19:24, schrieb Jeff Johnson:

On May 19, 2010, at 5:57 AM, Denid Washington wrote:

   

I'm still willing to help however I can with LSB+RPM. Its _INSANE_ to continue
futile "Packaging War" battles and and no users benefit (but certainly
distros/vendors benefit from de facto monopolies through customer
lock-in using software packaging).

   

Good to know, I would be thankful for any kind of help. Right now I am thinking hard 
about how an LSB packaging standard would have to look like. I still like the idea of a 
package-manager-agnostic packaging API, but I came to believe that a standard would have 
to be something that is actually implemented in current LSB-certified 
"enterprise" distros - I underestimated how unwilling the LSB seems to be to 
lead instead of just following. So for any packaging standard to come, it is clear that 
it must work without any distro-side modifications.

The question is how this requirement meshes with the package API idea. 
Currently, I am thinking of the following:

 

The logic flaw here is attempting a method based API approach.

If you want an "API", you have two choices:
1) Write your own API.
2) Trick someone else into writing your API.

LSB was very much about 2) not 1) and they failed to trick anyone.

(aside)
What should be done first is to get workable concepts for fundamentals
like "package" and "upgrade". Sure you can start with simple abstractions like

A "package" has a "name" and a "version" concatenated in a string.

but there's a whole lot more that needs to be done in the "real world".
   


I know. As I stated, the metadata needs to be defined as precisely as 
possible. As I am only roughly sketching a rough plan how to proceed, I 
haven't got into the details yet, but yes, that is the single most 
important thing that a future LSB packaging standard must specify.



Note that the fundamental flaw with "LSB packages" and the "LSB package format"
is that LSB hoped to piggy back on a de facto existing implementation called 
RPM.
LSB has _NEVER_ attempted anything but attempting to ram home a "standard" for
RPM packaging. And again, they've failed to "trick" anyone with the "LSB packaging 
standard".
There are in fact no LSB "standard" packages because the "standard" describes
a "LSB format" that is no longer widely used by any RPM implementation.
   


I realize that.


What follow are some suggestions. I'll assume that you will eventually
figger well defined meanings for "package" and "upgrade" and other absolutely
essential data items.
   


So do I.



- Design an implementation with backends for different package systems as started before, 
but with the difference that the implementation does _not_ need to be installed on the 
distro, but can be linked into an ISV's installer. In the case of RPM, this could be done 
with librpm. (Probably the pre-4.6 "legacy" RPMv4 API, as that should be what 
all RPM-based LSB distros support.) For other package managers like dpkg, which don't 
have a public library, packages would have to be created on-the-fly and installed, much 
like some installers currently do as well (the ATI binary driver installer comes to mind).

 

If you want different backends, you end-up getting into implementations and 
APIS where
you need to "trick" up implementations in order to proceed. See how LSB failed, 
and
don't make the same mistake.
   


The whole backend architecture is explicitly thought as an intermediate 
solution. Distributions are encouraged to implement that interface 
cleanly in their package managers, thus avoiding any "tricks" / hacks. 
But for the API to work *now*, we need a fallback implementation that 
can be shipped with installers and does the job on today's distros, even 
if maybe somewhat hacky.


That said, the approach *is* problematic. But I fear that, if the 
proposal won't work on the current LSB-certified distros, it will be 
turned down real fast. And, the fallback implementation would naturally 
use the "clean native" implementation of the system's package manager if 
it is enable, so the fallback solution will only be used on "legacy" 
distributions.



Meanwhile, what you are describing (and guessing from your previous 
freedesktop-like
implementation), you might as well just use PackageKit, which already has 
backends
and more.
   


Interesting how often my proposal was directly compared to PackageKit 
(including PackageKit author Richard Hughes himself) just because of the 
choice of technologies.


PackageKit is designed as an interface for installing distro-specific 
packages or getting specific packages from distro-specific package 
repositories. That's its use case. Registring software in the package 
manager's database that does *not* come in the form of a native distro 
package is completely outside of that use case. Adding that to 
PackageKit would not make much sense imho. Also, PackageKit is not used 
in many distros (only in RHEL prob

Re: The state of LSB Packaging?

2010-05-19 Thread Jeff Johnson

On May 19, 2010, at 5:57 AM, Denid Washington wrote:

>> 
>> I'm still willing to help however I can with LSB+RPM. Its _INSANE_ to 
>> continue
>> futile "Packaging War" battles and and no users benefit (but certainly
>> distros/vendors benefit from de facto monopolies through customer
>> lock-in using software packaging).
>>   
> 
> Good to know, I would be thankful for any kind of help. Right now I am 
> thinking hard about how an LSB packaging standard would have to look like. I 
> still like the idea of a package-manager-agnostic packaging API, but I came 
> to believe that a standard would have to be something that is actually 
> implemented in current LSB-certified "enterprise" distros - I underestimated 
> how unwilling the LSB seems to be to lead instead of just following. So for 
> any packaging standard to come, it is clear that it must work without any 
> distro-side modifications.
> 
> The question is how this requirement meshes with the package API idea. 
> Currently, I am thinking of the following:
> 

The logic flaw here is attempting a method based API approach.

If you want an "API", you have two choices:
1) Write your own API.
2) Trick someone else into writing your API.

LSB was very much about 2) not 1) and they failed to trick anyone.

(aside)
What should be done first is to get workable concepts for fundamentals
like "package" and "upgrade". Sure you can start with simple abstractions like

A "package" has a "name" and a "version" concatenated in a string.

but there's a whole lot more that needs to be done in the "real world".

Note that the fundamental flaw with "LSB packages" and the "LSB package format"
is that LSB hoped to piggy back on a de facto existing implementation called 
RPM.
LSB has _NEVER_ attempted anything but attempting to ram home a "standard" for
RPM packaging. And again, they've failed to "trick" anyone with the "LSB 
packaging standard".
There are in fact no LSB "standard" packages because the "standard" describes
a "LSB format" that is no longer widely used by any RPM implementation.

What follow are some suggestions. I'll assume that you will eventually
figger well defined meanings for "package" and "upgrade" and other absolutely
essential data items.

> - Define the package API essentially as discussed before, with simple 
> register/unregister methods, plus precisely defined package metadata.
> 

Nothing wrong with register/unregister methods.

And "precisely defined" is on the right track, register/unregister certainly
need markup spewage that is parseable, or other gozzintas/comesoutas.

(aside)
Look carefully at CUDF from http://mancoosi.org. There are some flaws, like
Version: is typed as an INT (versions in the real world are far more 
complicated),
but everything else is quite carefully defined, including "package" and 
"upgrade".

> - Design an implementation with backends for different package systems as 
> started before, but with the difference that the implementation does _not_ 
> need to be installed on the distro, but can be linked into an ISV's 
> installer. In the case of RPM, this could be done with librpm. (Probably the 
> pre-4.6 "legacy" RPMv4 API, as that should be what all RPM-based LSB distros 
> support.) For other package managers like dpkg, which don't have a public 
> library, packages would have to be created on-the-fly and installed, much 
> like some installers currently do as well (the ATI binary driver installer 
> comes to mind).
> 

If you want different backends, you end-up getting into implementations and 
APIS where
you need to "trick" up implementations in order to proceed. See how LSB failed, 
and
don't make the same mistake.

Meanwhile, what you are describing (and guessing from your previous 
freedesktop-like
implementation), you might as well just use PackageKit, which already has 
backends
and more.

> - In parallel, fill the holes in the LSB RPM spec (possibly uplifting to v4) 
> and try to synchronize the metadata semantics with the ones of the package 
> API (meaning, probably, that the package API will end up receiving RPM 
> semantics at many places). This means we will have the package API for things 
> like cross-platform installers on the one side and the RPM format as an 
> alternative direct format on the other side, and we may be able to keep 
> compatibility with the old RPM spec. (Crucial as the LSB 4.x series is 
> committed to backwards compatibility.)
> 

Please, its the "LSB format" spec, not the "LSB RPM spec".

The distinction is crucially important.

What LSB has chosen to make "standard" has nothing to do with RPM for
many years now.

> There are probably a lot of issues with this path, but it might be a good 
> start to experiment with. What do you think?
> 

For register/unregister (and "transactionally protected" ACID behavior), I'm
currently embedding sqlite3 in RPM, and using sqlite3 "virtual tables" (VT) as
an abstraction for register/unregister (largely because sqli

Re: The state of LSB Packaging?

2010-05-19 Thread Denid Washington

On May 18, 2010, at 7:20 PM, Jeff Johnson wrote:

On May 18, 2010, at 12:27 PM, Denid Washington wrote:

   

Hi,

You might remember me - I'm the one who wrote a sketchy implementation of the 
then-discussed "Berlin Packaging API" about two years ago [1]. I have shifted 
my focus to other things since then, but since recently have more time again and my 
interest on the topic has been sparked again.

 

Certainly I remember you.
   


Great to hear. :)

   

Now I am trying to gather what has happened since then. If I haven't missed 
anything, there was not that much to be missed. The packaging list archives 
seem to be effectively dead. The only thing I found was thoughts about 
uplifting to RPMv4 sprinkled around some LSB Wiki pages, for instance the LSB 
4.1 Project Plan [2].

 

Yep. Nothing whatsoever to be missed. The last dialogue I was involved in was 
(~12/2008):

Q: What is the _ONE_ most important item for the LSB 4+ packaging 
standard?
A: Establishing a "standard" version comparison so that "newer" and 
"upgrade" are well defined.

Nothing heard (by me) since.
   


Unfortunate, but I thought as much.

   

Now, because I remembered you, Jeff Johnson, to be very constructive, honest 
and generally helpful in criticizing my proposal (and always entertaining) and 
were very much involved in the whole discussion, I would like to ask you: what 
is the state of discussion regarding LSB packaging? Do you know about any 
progress on this front since, say, the end of 2008? Any hints would be very 
valuable for me, as I am seriously thinking about a second (maybe more 
coordinated, complete and consensus-reaching) attempt at working on a new LSB 
packaging proposal..

 

LSB packaging is as extinct as the Dodo AFAIK.

(aside)
You might want to look at http://mancoosi.org which is closest
(but "research" not "standard", standards are much harder) to
evolving something better for software packaging.


Will do so.

There's also http://nixos.org which is attempting "functional" packaging
that avoids many of the snarly issues presented by "standard" packaging.

I'm still willing to help however I can with LSB+RPM. Its _INSANE_ to continue
futile "Packaging War" battles and and no users benefit (but certainly
distros/vendors benefit from de facto monopolies through customer
lock-in using software packaging).
   


Good to know, I would be thankful for any kind of help. Right now I am 
thinking hard about how an LSB packaging standard would have to look 
like. I still like the idea of a package-manager-agnostic packaging API, 
but I came to believe that a standard would have to be something that is 
actually implemented in current LSB-certified "enterprise" distros - I 
underestimated how unwilling the LSB seems to be to lead instead of just 
following. So for any packaging standard to come, it is clear that it 
must work without any distro-side modifications.


The question is how this requirement meshes with the package API idea. 
Currently, I am thinking of the following:


- Define the package API essentially as discussed before, with simple 
register/unregister methods, plus precisely defined package metadata.


- Design an implementation with backends for different package systems 
as started before, but with the difference that the implementation does 
_not_ need to be installed on the distro, but can be linked into an 
ISV's installer. In the case of RPM, this could be done with librpm. 
(Probably the pre-4.6 "legacy" RPMv4 API, as that should be what all 
RPM-based LSB distros support.) For other package managers like dpkg, 
which don't have a public library, packages would have to be created 
on-the-fly and installed, much like some installers currently do as well 
(the ATI binary driver installer comes to mind).


- In parallel, fill the holes in the LSB RPM spec (possibly uplifting to 
v4) and try to synchronize the metadata semantics with the ones of the 
package API (meaning, probably, that the package API will end up 
receiving RPM semantics at many places). This means we will have the 
package API for things like cross-platform installers on the one side 
and the RPM format as an alternative direct format on the other side, 
and we may be able to keep compatibility with the old RPM spec. (Crucial 
as the LSB 4.x series is committed to backwards compatibility.)


There are probably a lot of issues with this path, but it might be a 
good start to experiment with. What do you think?


Regards,
Denis Washington


__
RPM Package Managerhttp://rpm5.org
LSB Communication Listrpm-lsb@rpm5.org


Re: The state of LSB Packaging?

2010-05-18 Thread Jeff Johnson

On May 18, 2010, at 12:27 PM, Denid Washington wrote:

> Hi,
> 
> You might remember me - I'm the one who wrote a sketchy implementation of the 
> then-discussed "Berlin Packaging API" about two years ago [1]. I have shifted 
> my focus to other things since then, but since recently have more time again 
> and my interest on the topic has been sparked again.
> 

Certainly I remember you.

> Now I am trying to gather what has happened since then. If I haven't missed 
> anything, there was not that much to be missed. The packaging list archives 
> seem to be effectively dead. The only thing I found was thoughts about 
> uplifting to RPMv4 sprinkled around some LSB Wiki pages, for instance the LSB 
> 4.1 Project Plan [2].
> 

Yep. Nothing whatsoever to be missed. The last dialogue I was involved in was 
(~12/2008):

Q: What is the _ONE_ most important item for the LSB 4+ packaging 
standard?
A: Establishing a "standard" version comparison so that "newer" and 
"upgrade" are well defined.

Nothing heard (by me) since.

> Now, because I remembered you, Jeff Johnson, to be very constructive, honest 
> and generally helpful in criticizing my proposal (and always entertaining) 
> and were very much involved in the whole discussion, I would like to ask you: 
> what is the state of discussion regarding LSB packaging? Do you know about 
> any progress on this front since, say, the end of 2008? Any hints would be 
> very valuable for me, as I am seriously thinking about a second (maybe more 
> coordinated, complete and consensus-reaching) attempt at working on a new LSB 
> packaging proposal..
> 

LSB packaging is as extinct as the Dodo AFAIK.

(aside)
You might want to look at http://mancoosi.org which is closest
(but "research" not "standard", standards are much harder) to
evolving something better for software packaging. E.g. the Mancoosi
WP5 is sponsoring a SAT depsolver competition this summer that should
lead to interesting implementations.

There's also http://nixos.org which is attempting "functional" packaging
that avoids many of the snarly issues presented by "standard" packaging.

I'm still willing to help however I can with LSB+RPM. Its _INSANE_ to continue
futile "Packaging War" battles and and no users benefit (but certainly
distros/vendors benefit from de facto monopolies through customer
lock-in using software packaging).

73 de Jeff

__
RPM Package Managerhttp://rpm5.org
LSB Communication Listrpm-lsb@rpm5.org