The following bytes were arranged on 9 Apr 2013 by Alan :
> On Tuesday, 9 April 2013 00:23:53 UTC+1, Martin Bazley wrote:
> > I'm not sure why you're trying to fight against this. Do you think
> > drag-and-drop has had its day?
>
> No, I don't think drag-and-drop has had its day. I admit I didn't think
> it was needed to install a package though. It's used everywhere else
> within PackMan and RiscPkg to copy and move applications, setup the package
> database and create stubs though.
I can't think of any other way of installing software, whether that be
dragging it out of a zip file, dragging it off a floppy disc, or even
dragging it out of a NetSurf download window, which doesn't use drag and
drop. RISC OS has never really gone in for 'installer' programs in the
same way Windows did, which is mostly because its layout is considerably
less centralised than either that system or Linux.
What RiscPkg, and PackMan, are trying to be is essentially an
'installer', a concept which has always been somewhat unfamiliar to the
RISC OS desktop. I have voiced before, I think, my objection to the
SysVars and Sprites directories, because they represent an assumption of
much greater centralisation than has historically been the case.
Indeed, the whole thing smacks of trying to establish a 'registry'.
At best, all you need is an option to ask the user if they want the
application to be booted and/or run on startup. Ideally, this should
integrate into the existing, defined methods of doing so - see comments
about SysMerge later.
> > Only I can't imagine any possible way in which it could be
> > simpler for the users. Simpler for the newbies arriving from Linux,
> > perhaps, but if that's a good enough reason to change fundamental parts
> > of the OS, can I just put my vote in for a native bash-style command
> > line interpreter?
>
> I still don't see how it changes the fundamentals of the OS. Do they
> user on Linux still use the bash-style command line interpreter then
> I thought even Linux had some sort of GUI nowadays.
There is a certain kind of Linux user who looks down their nose at
anybody who can't operate the entire system from a text-only terminal.
I'm not sure why - surely the last thirty years of user interface design
progress happened for a reason? - but how much bash syntax you know is a
measure of your social class on some Linux forums.
Besides which, there are still alarmingly large parts of the system
which are only accessible from a terminal, and even many GUI components
are designed to be mere front-ends to bash commands or fancy editors of
conf files.
> > (although one known weakness here is that there's currently no way
> > to install things into Choices)
>
> OK, I know you are not going to like it, but I really don't think a
> Package manager should install things into choices. It should be
> the applications responsibility to look after the Choices.
And I know you're not going to like this, but unfortunately some
applications *do* install things into Choices. StrongED, and its
!StrED_cfg application, is the most obvious example here. I think Zap
has an equivalent, too.
Looking at how you've packaged StrongED, it seems !StrED_cfg is just
dumped in the Apps.Text directory along with !StrongED. This will
technically work, as this is one of the places StrongED will search for
it if it fails to find it in Choices, but it really belongs in Choices.
> > This, however, touches on a rather major deficiency with the RiscPkg
> > format, which once again stems from its careless recycling of Linux
> > conventions: how do you install software which isn't an application? I
> > distribute several BASIC programs as individual files, usually with no
> > more than a ReadMe accompanying them. How would you package those, now
> > that the search-for-applications trick no longer works?
>
> You have to shove them in a hold all RISC OS application of some kind.
> But it's true you can fix the path using the add path in the next
> release, but even that's not a simple way of solving your problem.
>
> Personally, I think if it's not just a module or documentation it
> should be in a RISC OS application, but that's my preference and
> I'm sure you will disagree.
But this is exactly my point. What if it *is* just a module or
documentation? If it's a module then I guess it probably goes in
System, but documentation might go in the Manuals directory, or even in
the same directory as the app to which it pertains.
There are some things which application holders simply cannot solve.
Take another thing I distribute a lot of: Doom levels. These are things
which want close to the Doom application, don't want in any old place on
your hard disc, can't be stubbed, aren't applications themselves, and
could in no conceivable way be converted to applications. Oh, and they
mostly come in pairs of files: LEVELNAME/WAD and LEVELNAME/TXT, with the
latter containing documentation. Can you explain how PackMan would
install those? I'm genuinely quite interested, working on the
assumption that the downloads on my website will sooner or later be
converted to some sort of package format.
You could just say that some things shouldn't be packaged, but you've
got to draw the line somewhere. You offer StrongED mode files, for
example. Besides which, automatic update checking is a rather useful
thing to have for things other than software.
> > How it *should* have been done was to have a 'payload' field in the
> > Control file, giving a list of relative pathnames of files and/or
> > directories in the zip which formed part of the 'installation'.
>
> I prefer to have the option to create the payload with drag and drop
> into a directory I can then zip up.
>
> One of my thought on how to implement proper drag and drop would
> add a field to the control file saying what can be dragged though.
Basically the same thing. I wouldn't describe the process of creating a
package as being as simple as dragging and dropping into a directory -
you have to write a Control file anyway, and a lot of its fields are
compulsory, so what's one more?
This would also solve the oddity (from a RISC OS perspective) of keeping
most things in a subdirectory calls Apps.Category, which is a hangover
from the days when RiscPkg literally expected you to install everything
into subdirectories of Apps. The simplest option would be to define
everything in the package root which wasn't a reserved name as part of
the installation, although keeping it in a subdirectory would eliminate
the small possibility of clashes. The end result would be to make the
process of creating a package slightly simpler than it is now.
One thing which I definitely want to see go away is the Paths file.
There are just so many places like that where RiscPkg should have been
designed with position independence in mind from the very beginning but
so clearly wasn't.
A useful feature for the corner cases would be to allow installation to
be (optionally) partially scripted by the package itself - another
feature I would have built in from the beginning. Two executable files
(or applications!) with reserved names, one to be executed before, and
one to be executed after, would cover most cases. They could even keep
support files in the package, safe in the knowledge that if it doesn't
appear in the 'Payload' field, PackMan won't try to install it.
Hell, if the 'Payload' field was blank, you could distribute 'virtual'
packages which performed tasks instead of physically installing stuff!
That would also allow for Linux-style 'manifest' packages, which you
'installed' to add repositories to the system, in place of the existing
rather clunky method.
I'm wandering off of RiscPkg and onto the realms of designing my own
manager here, I think. I am very tempted, let it be known, to do
exactly that. Maybe this summer...
> There is no interface to SysMerge available for other programs
> to use so how could it use it.
Technically, there is, at least partially - see below.
But that aside, I think this is symptomatic of the whole problem with
RiscPkg. It tried to impose itself on, rather than integrate itself
with, RISC OS.
How do you think packages became so successful on Linux? They were
developed, adopted and promoted by the system developers themselves.
Red Hat distribute all their software through RPMs. A package manager
is not an add-on to the system - it *is* part of the system.
The fact is, I think RiscPkg would be a lot better if it had made a more
serious effort to cooperate with RISC OS, rather than trying to change
things from outside. A constant refrain in my criticism of it is that
it started from the assumption that all RISC OS concepts could be
expressed in terms of Linux ones, when in fact both the installation of
software and the changing of the boot sequence work very differently
indeed.
One of the big hurdles in both cases was that Acorn had already written
tools to install software (the various Merges) and change the boot
sequence (the Boot configure tools), and that these were the only
approved ways of doing it. RiscPkg attempted to circumvent this by
effectively setting up an entire shadow boot sequence which it could
control itself, but this caused friction where the two met, as in the
case of installing modules into !System.
I'd like packages to be part of RISC OS, in the same way they're part of
Linux, which means biting the bullet and stopping dancing around issues
like these. Linux's boot sequence, not to mention application
launchers, work differently and have different interfaces (and, in some
cases, even have defined interfaces at all), and so these problems don't
arise. RiscPkg assumed that, just because it wasn't a problem on Linux,
it wouldn't be a problem on RISC OS. This assumption, in many different
guises, is the cause of all its problems.
The good news is that, thanks to ROOL, the potential for cooperation is
unprecedented. I think a programmatic interface to some of the
configuration tools would have been a necessity sooner or later, but now
we can define it ourselves! I raised this very point on the ROOL forums
a year ago:
http://www.riscosopen.org/forum/forums/2/topics/869
In fact, I am rather tempted to take up this particular challenge myself
- I need the excuse to get into OS development, and this looks like a
nice high-level point to jump in.
Interestingly, it appears that there is a more or less complete
programmatic interface for the 'Look at', 'Add to Apps' and 'Run'
windows (see section 5.2):
http://www.marutan.net/wikiref/Acorn%20Registered%20Developer%20REFERNC/RO4/API/HTML/CONFIGUR.HTM
This is what should have been used in place of SysVars, Sprites and all
those star commands in !Packages. Unless it isn't important for an
application to be booted, of course, which it won't be for most
non-command-line applications.
And some programs - particularly graphics programs or text editors - may
try to claim filetypes which the user doesn't want them to and/or
conflict with each other, making the initialisation of their SysVars
strictly a matter of personal preference. (How many programs on your
disc claim the JPEG filetype? I think I have at least five.) Another
not-so-uncommon case which the design should have taken into account,
but didn't because it simply doesn't arise on Linux.