JNLP installer for JNode.

Hi, I thought a little about how to provide a good and nice installer for JNode and than the JNLP discussion started. I think the JNode installer should not be more than a JNLP client and we should have JNLP files for JNode and all its component. The similar idea is behind Gentoo linux and this is way this distribution is so appreciated. I think we should have a main JNLP file for JNode with the appname attribute like "system" and for each module/plug-in/driver a JNLP component descriptor. I think JNLP idea is incredible. I have installed Gentoo Linux and I must say I was impressed. We could extend our JNLP client system to be a repository for installed modules/libraries/applications as gentoo does. Gentoo is my preferred Linux distro coze of this system and if we could have it in JNode I am sure that we won't regret it. This could be also a nice and easy way to update JNode as new packages are written or old ones updated. This JNLP client could work also as a main application installer. What is your opinion about this? I think we should make more architectural decisions and put it down on a paper somewhere so everyone could see it. Discussing only in the forums doesn't bring us closer to our goal of having a nice usable OS. Can we decide this and start implement a JNLP client?

JNLP Advanced?

I have also been using Gentoo Linux. I do also think the Portage system is a very powerful package system. But I also think we should think about the very far future.

What about heavy load? A lot of downloads because all users are downloading the packages. What about a advanced JNLP version? A version that uses for example the BitTorrent network for downloaden/seeding the jar-files? And a possibility that JNode users can choose to seed or not to seed.

Anyone thinking this kind of system can succeed?

Regards,

Mark Monster

Peer Work

I have looked ahead to the same future. It is often a very slow proccess to update a linux distro, because of the high volume the host is serving.

I am in the proccess of developing a component manager that will be able to install plugins for itself. More that that, it can determin what plugins are needed, find them on the network, download them, and install them.

This proccess happens in the course of normal code execution. The only indication of the proccess is a slowdown when the plugin is being downloaded.

The user need not concern himself with the install proccess at all, every thing is done for him, when he needs it. Automatically.

If you would like more details, you can read this discussion.
http://jnode.sourceforge.net/portal/node/view/240

Installer

Hello Valentin,
I'm happy that you like Gentoo Linux and related Tools too ...

But for the beginning (where we don't have much packages compatibile with out new JNLP Installer), don't you think that we could also find a way to install/update automatically also jar/zip/tar.gz packages ? For example, I have downloaded Tomcat 5.0.19 (not containing only jar, but a lot of HTML files, Java sources, etc.) and I'd like to install it ... ok, in the future. Later, we could start to use the JNode-JNLP Installer as soon as we find compatible packages.

If we don't do this, we have the risk to restrict JNode users to Install only a subset of what we find in Internet. The same thing I have with some Linux distros, where sometimes I don't find RPM, and I must compile and install from the sources (.tar.gz). And in this case ther's another nightmare: dependencies between Packages: sometimes I don't wnoe what package I need to download and Install to Compile and Execute the Package that I need really ! We should also find a solution for this. Any idea ? My proposal for the InstallManager could help to keep track of the various Packages / Components with version ... and if we want, to manage symboloc link to the library desired instead to have the same library (ex. Axis, Xercers, Log4J, etc.) copied in many dirs.

What do you think about all thiese things ?

Bye,
Sandro

Depenencies

The format of a service for the ServiceManager requires that there be a path to an implementation of Description for every service in a jar file. Description states neccessary services, prefered services, version, provider, and title.
Also every Description implementation is required to have a public no arg constructor. So after examining a service jar, you can just load the Description class and call newInstance().

The ServiceManager does not inspect these values, except to see that they are non-null. It will install a service wether its needs are met or not. The task of managing dependencies is left to another tool.

I was right

I was right to say that JNLP suppurts shared resources. A JNLP file can contain also resources that an application must have when it is run. Here is a quote from JNLP specs: "A JNLP file is a component extension if the component-desc element is specified. A component
extension is typically used to factor out a set of resources that are shared between a large set applications."

Also the JNLP specification say : "It is expected that future versions of this specification will introduce new elements and attributes that
would be backwards-compatible with the current DTD. Thus, a JNLP Client should not reject a JNLP file
that has extra attributes or elements. This means that the JNLP Client’s XML parser must not validate the
JNLP XML file against any fixed version of the JNLP DTD."
I think this fraze says it. We can have our own stuff inside. If for updateing the JNode system (the OS) itself we need other tags in JNLP file we can have them.

Reinventing the wheel

> don't you think that we could also find a way to install/update
> automatically also jar/zip/tar.gz packages ?

Yes, JNLP. Why spend time inventing another way to install/update packages? JNLP is not restricting jnode users, you will be restricting users by not having it. JNLP isn't a minority subset on the internet (IMO, ofcourse!). It's just not true that there wouldn't be many packages you could install.

Given any non-JNLP package, it isn't too hard to give it a JNLP file, so it could be installed via a JNLP installer. In fact an intelligent installer could probably be made to internally autogenerate a default JNLP file for any package lacking one.

Basically, the problems of writing *an* installer are going to be more or less the same as writing a JNLP installer. Ofcourse, with JNLP some of the work has already be done --- the JNLP spec exists.

JNLP is the standard

I think JNLP knows how to deal with things that you say. I have downloaded the specs and I will read them. To install a software under JNode will always be easy coze you can just copy the files and run the mani class..or that software can come with its own installer. We should have an installer for JNode as a system(for system packages if you want) and as I said we can use it also as a standard app installer for JNode but that doesn't mean that you can't install applications in other way but if one wants to have a nice deployment on JNode he needs to have a JNLP file.

JNLP Installer

How can we start to write specs for the implementation:
in a new Forum or via (private) emails and publishing later here ?

Tell me something.

But for the integration with the Security Manager, Component Manager, Shell, etc. we need the support of many other JNode users ... any idea ?

Bye,
Sandro

Should be part of plugin system

Hi, this installer is an essential part of the plugin system that is under development. So please do not start all kinds of development without proper consultation, or we're doing double work.

Ewout

How do we proceed than?

How do you think we should proceed than?

Proposals page

That was a good question. I've added a proposals page to the documentation, under which you can standard an "installer" proposal.
In this proposal I think that we should try to collect all requirements and then combine it into a sensible idea.

I really want to come to a single solution for installation, updating, security management that can cope with applications, drivers, services etc.

As part of existing documentation?

Could create a new documentation page, and edit that.