Sorry to wind this back a little, but there were a couple of questions from Tom which got skipped over.I'm afraid that when it comes to shells there isn't a standard. There was an RFC created a long time ago, which roughly represented the work that is now Gogo. There was a decision at the time that there wasn't a need for a standard, this decision could be revisited, particularly if someone wants to drive the work through the Alliance.As for the following question:Originally I thought that Karaf was the "enterprise version of felix". This doesn't seem to be the case?Karaf and Felix may both be hosted at Apache, but Karaf is a totally separate project from Felix with a very different ethos. Karaf does not implement an OSGi framework, or OSGi standards, but builds a server based on OSGi components from a variety of places.Karaf is flexible, but ultimately opinionated about libraries and dictates a number of high level choices. Felix works hard to allow you to use implementations from anywhere with the standalone components they produce.Karaf is also prepared to invent concepts (e.g. features and kar files) and not contribute them back to OSGi, leaving them as proprietary extensions. This even happens when OSGi standards do exist (or are nearly final). Karaf also promotes non standard (and some non Apache) programming model extensions.
While this does, by some measures, make Karaf a "bad" OSGi citizen, it is also one of the reasons why Karaf is so successful, and helps to drive OSGi adoption (a very good thing for OSGi). By being opinionated Karaf can be simpler for new users, even if it provides a more limited view of what your OSGi options are. The Felix framework, on the other hand, lets you make all the decisions, but also requires you to make all the decisions!In summary I would describe Karaf as an Open Source OSGi server runtime, where Felix is more like a base operating system.Tim
Sent from my iPhone
On 22 Jul 2017, at 06:44, Christian Schneider <email@example.com> wrote:That sounds interesting. Can you point us to the code where those commands are implemented and where the completion is defined?I know there is the completion support that you can define in the shell init script but I think this is difficult to maintain this way.Is it now possible to somehow define the completion for gogo commands per bundle or even by annotations directly on the class?Christian2017-07-21 16:57 GMT+02:00 Guillaume Nodet <firstname.lastname@example.org>:If you look at Karaf >= 4.1.x, a bunch of commands are not coming from Karaf anymore, but from Gogo or JLine. I moved them when working on the gogo / jline3 integration. The main point that was blocking imho is that they did not have completion support. With the new fully scripted completion system from gogo-jline, gogo commands can have full completion, so I don't see any blocking points anymore. It's just about tracking commands and registering them in the karaf shell.--2017-07-21 15:27 GMT+02:00 Christian Schneider <email@example.com>:On 21.07.2017 12:27, firstname.lastname@example.org wrote:
Yes, but what's the actual situation from a standards point of view?I fully agree that we need to work towards more common approaches. The OSGi ecosystem is too small to afford being fragmented like this.
Is a shell defined by a standard at all? OSGi enroute seems to require a gogo shell and appears to rely on felix gogo shell command framework.
Is it just that Karaf happens to ship a shell that happens to be based on the felix gogo shell (or perhaps not, but stack traces seem to suggest so), but that basically if I want to implement a shell command I have to implement it differently for each shell type?
That seems a poor situation and leaves me with having to implement one command implementation to be used in the development environment and one that is used in the karaf deployment.
Originally I thought that Karaf was the "enterprise version of felix". This doesn't seem to be the case?
There *could* be a really powerful environment and ecosystem here, if it was all a *little* bit less fragmented :-)
We all have the chance and duty to work on improving this though.
Open Source Architect