Skip to main content

Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

Difference between revisions of "Virgo/Future"

(Virgo Plan)
 
(94 intermediate revisions by 8 users not shown)
Line 1: Line 1:
{{Virgo}} This page summarises the Virgo plan and notes design ideas for future Virgo features.  
+
{{Virgo}}
 +
This page summarises the Virgo plan and notes design ideas for future Virgo features.  
  
 
= Virgo Plan  =
 
= Virgo Plan  =
Line 5: Line 6:
 
The following plan is subject to change and depends on how much resource is available as the project evolves.  
 
The following plan is subject to change and depends on how much resource is available as the project evolves.  
  
== 3.0.0 Release ==
+
== 4.0.0 (Cobalt) Release ==
  
Theme: Eclipse RT integration
+
* Upgrade to Gemini Management 2.0
 +
* Support Equinox unity (my suggestion, it may now be called something different) - see [https://bugs.eclipse.org/bugs/show_bug.cgi?id=404390 bug 404390]
  
Schedule: June 2011
+
== 3.8.0 Release ==
  
Content:  
+
See the [https://bugs.eclipse.org/bugs/buglist.cgi?classification=RT&list_id=16480624&product=Virgo&query_format=advanced&target_milestone=3.8.0.M01 Bugs addressed for 3.8.0] for more information.
  
*Jetty support ([https://bugs.eclipse.org/bugs/show_bug.cgi?id=321726 bug 321726])
+
== 3.7.2 Release ==
*Use Equinox config admin instead of that of Felix ([https://bugs.eclipse.org/bugs/show_bug.cgi?id=310217 bug 310217])
+
*Use Equinox log service instead of that of Felix ([https://bugs.eclipse.org/bugs/show_bug.cgi?id=310218 bug 310218])
+
*Use Equinox event admin instead of that of Felix ([https://bugs.eclipse.org/bugs/show_bug.cgi?id=310219 bug 310219])
+
*Upgrade Spring to 3.0.5 or later ([https://bugs.eclipse.org/bugs/show_bug.cgi?id=314282 bug 314282])
+
*p2 repository in the repository chain ([https://bugs.eclipse.org/bugs/show_bug.cgi?id=309778 bug 309778])
+
*Upgrade from Spring DM to Gemini Blueprint ([https://bugs.eclipse.org/bugs/show_bug.cgi?id=317943 bug 317943])
+
*Rebase region support on OSGi RFC138
+
*Admin console administration of remote Virgo instances
+
*Multiple user regions
+
*Tomcat 7/servlet 3.0
+
*Critical bug fixes
+
  
== Future Releases  ==
+
* Upgrade to Gemini Web 3.0 (Embedded Apache Tomcat 8.5.16)
  
The following features are not currently in plan:  
+
See the [https://bugs.eclipse.org/bugs/buglist.cgi?classification=RT&list_id=16480617&product=Virgo&query_format=advanced&target_milestone=3.7.2.RELEASE Bugs addressed for 3.7.2] for more information.
  
*Integration server
+
== 3.7.1 Release ==
*Batch server
+
  
= Future Features  =
+
* Upgrade to Gemini Blueprint 2.1
 +
* Upgrade to Spring Framework 4.3.9
 +
* Upgrade to Jolokia 1.3.6
 +
* Upgrade to commons-io 2.5
 +
* Upgrade to Logback 1.2.3
 +
* Upgrade to Slf4j 1.7.25
 +
* Deliver OkHttp3 Bundles with Virgo
  
== Jetty Support  ==
+
See the [https://bugs.eclipse.org/bugs/buglist.cgi?classification=RT&list_id=16480617&product=Virgo&query_format=advanced&target_milestone=3.7.1.RELEASE Bugs fixed with 3.7.1] for more information.
  
This is covered by [https://bugs.eclipse.org/bugs/show_bug.cgi?id=321726 bug 321726].
+
== 3.7.0 (Steel) Release ==
  
Work has started and is progressing well, there is a new GIT repo that produces a full Virgo build but based on Jetty instead of Gemini Web on top of the Virgo Kernel. The Splash screen application is working. The next step is to add JSTL and Security support for the Admin application. Further work is also required to the build to support Windows and a general tidy up. The Virgo-Jetty repo can be found listed on the [[Virgo/Source|source]] tab.  
+
* Upgrade to Gemini Blueprint 2.0
 +
* Upgrade to Gemini Web 3.0 (Embedded Apache Tomcat 8.5.11)
 +
* TBD, but see the [https://bugs.eclipse.org/bugs/show_bug.cgi?id=396813 Steel bugtrain bug 396813].
  
Ideally this will allow arbitrary versions of Jetty to be swapped in. We need to make sure that any Jetty APIs we use are stable (will continue to work as Jetty evolves).
+
== Release Branding  ==
  
=== Bootstrapping Jetty  ===
+
To accommodate simultaneous releases of Virgo runtime, OSGi Web Container runtime, and Virgo tooling, we are branding each release with the name of a colour, including old releases.
  
Jetty already supports [[Jetty/Feature/Jetty OSGi#Jetty_bootstrapping_in_OSGi|bootstrapping inside OSGi]]. The Jetty bootstrapping bundle 'org.eclipse.jetty.osgi.boot' can easily be included in the list of initial artifacts automatically deployed into the user region during Virgo startup.  
+
{| class="wikitable" border="1" cellpadding="10" cellspacing="0"
 +
|+ '''''Virgo Release Branding and Component Versions'''''
 +
|-
 +
! Brand
 +
! Runtime
 +
! Web Container
 +
! Blueprint
 +
! Spring Framework
 +
! Management
 +
! Eclipse IDE Tooling
 +
|-
 +
| Fern || SpringSource dm Server 1.0.x || Embedded Apache Tomcat 6.0.x || Spring DM 1.1.x || 2.5.6.A || - || -
 +
|-
 +
| Emerald || SpringSource dm Server 2.0.x || OSGi Web Container 1.0.x <br> (Embedded Apache Tomcat 6.0.x) || Spring DM 1.2.1 || 3.0.0.RELEASE || - || -
 +
|-
 +
| Cornflower || Virgo 2.1.x || Gemini Web 1.1.x <br> (Embedded Apache Tomcat 6.0.x) || Spring DM 1.2.1 || 3.0.0.RELEASE || - || -
 +
|-
 +
| Maya || Virgo 3.0.x || Gemini Web 2.0.x <br> (Embedded Apache Tomcat 7.0.x) || Spring DM 1.2.1 || 3.0.5.RELEASE || - || -
 +
|-
 +
| Bondi || Virgo 3.5 || Gemini Web 2.1 <br> (Embedded Apache Tomcat 7.0.x) || Gemini Blueprint 1.0 || 3.0.5.RELEASE || Gemini Management 1.0.2  || Virgo IDE 1.0
 +
|-
 +
| Sky || Virgo 3.6.x || Gemini Web 2.2.x <br> (Embedded Apache Tomcat 7.0.x) || Gemini Blueprint 1.0.2 || 3.1.0.RELEASE || Gemini Management 1.0.x || Virgo IDE 1.0.1
 +
|-
 +
| Steel || Virgo 3.7 || Gemini Web 3.0.x <br> (Embedded Apache Tomcat 8.5.x) || Gemini Blueprint 2.0  || 4.2.x.RELEASE || Gemini Management 1.0.5 || Virgo IDE 1.5
 +
|-
 +
| Cobalt || Virgo 4.0 || Gemini Web 3.0.x <br> (Embedded Apache Tomcat 8.5.x) || Gemini Blueprint 2.0  || 4.2.x.RELEASE || Gemini Management 2.0 || Virgo IDE 1.6
 +
|}
  
=== Deploying Web Bundles  ===
+
Note 1: we are steering clear of the following "wimp list" of colours: [http://www.microsoft.com/windowsazure/ Azure], [http://www.eclipse.org/indigo/ Indigo].
  
Jetty already supports [[Jetty/Feature/Jetty OSGi#Deployment_of_web-applications_via_OSGi|deployment of OSGi web applications]].
 
  
After Jetty is bootstrapped in the OSGi framework, web bundles may be deployed directly to Jetty using the whiteboard pattern.
+
= Future Directions =
  
A ContextHandler service must be registered with appropriate service properties. Presumably the bundle registering the service is the web bundle itself, although this is not clear from the Jetty documentation above which refers to the registering bundle as a 'contributor'. It is not clear whether the contributor is a bundle which is contributing some other web bundle or whether the contributor is the web bundle itself (in which case why should it be called 'contributor'?).  
+
Support for the OSGi Subsystems specification is deferred indefinitely ([https://bugs.eclipse.org/bugs/show_bug.cgi?id=358437#c4 rationale]), except for [https://bugs.eclipse.org/bugs/show_bug.cgi?id=358441 generalising the InstallArtifact tree to a DAG] which was implemented in Virgo 3.5.0 (see the Kernel Enhancements section of the [http://www.eclipse.org/virgo/download/release-notes/3.5.0.RELEASE.php Virgo 3.5.0 release notes]).
 
+
Assuming that the contributor is the web bundle itself, Virgo will need to create a ContextHandler service each time a web bundle starts.  
+
 
+
If deployment of the web application fails, the failure must be reported back on the thread which initiated deployment. A problem with the whiteboard pattern is that errors are not easily detected. Perhaps Jetty provides some way to listen for successful or failed deployment of a particular web bundle?  
+
 
+
=== Deploying WAR Files  ===
+
 
+
Jetty supports deploying WAR files by installing the WAR file as a bundle using the "war:" URL scheme. However, Virgo supports deploying WAR files via all its standard deployment mechanisms which ultimately drive the deployer API. We could either drive installation using the "war:" scheme or, for consistency with Virgo's existing support for WARs including the way errors are detected and handled, we could continue to transform WARs into web bundles using the transformation support in Gemini Web or similar.  
+
 
+
=== Class Loading  ===
+
 
+
Need to ensure correct class loading and resource lookup in the single bundle case as well as the case of a web bundle inside a scoped plan.  
+
 
+
Need to support class loader customisation, throw-away class loaders, etc. as in the current Virgo web support.
+
 
+
=== Logging  ===
+
 
+
Need to ensure Jetty's logs feed in to the appropriate Virgo Medic logs.
+
 
+
Also need to support per-application logging.
+
 
+
= Prototypes  =
+
 
+
== Snaps  ==
+
 
+
Snaps is a prototype also from dm Server where it was known as Slices. It aims to give you the full benefit of a dynamic and modular OSGi environment for your web applications by allowing you to spread the front end across many bundles, or Snaps. The Snaps source code is available from one of our Git repos listed on the 'Source' tab. Thanks to Patsy Phelan and Dmitry Sklyut for comments on this content.
+
 
+
A Snap is an OSGi Web Application Bundle that is responsible for handling requests for part of the total application. Requests are served up to each snap depending on what part of the context path the snap has registered to handle. Each Snap will be given requests by a host bundle. A Host bundle is also just a normal web application bundle with filter configured to dispatch certain requests to any registered Snaps.
+
 
+
&nbsp; [[Image:Snaps.png]]
+
 
+
The host will handle requests to '/app/*' while '/app/orders' and '/app/billing' will be dispatched to the relevant Snap bundle.  
+
 
+
Snaps is different from other technologies such as Web Fragments in that it much more decoupled and takes advantage of OSGi to allow for the dynamic composition of a web app at runtime. The lifecycle of the Snap and the Host is completely decoupled. This is due to the services like approach. Web Fragments are static and much more closely coupled, they share the same classpath and the modularity it offers is only at development time. This extra decoupling means that snaps can be developed in isolation from the host application, even after the host application has be released.  
+
 
+
[[Category:Virgo]] [[Category:EclipseRT]]
+

Latest revision as of 06:12, 23 June 2017


This page summarises the Virgo plan and notes design ideas for future Virgo features.

Virgo Plan

The following plan is subject to change and depends on how much resource is available as the project evolves.

4.0.0 (Cobalt) Release

  • Upgrade to Gemini Management 2.0
  • Support Equinox unity (my suggestion, it may now be called something different) - see bug 404390

3.8.0 Release

See the Bugs addressed for 3.8.0 for more information.

3.7.2 Release

  • Upgrade to Gemini Web 3.0 (Embedded Apache Tomcat 8.5.16)

See the Bugs addressed for 3.7.2 for more information.

3.7.1 Release

  • Upgrade to Gemini Blueprint 2.1
  • Upgrade to Spring Framework 4.3.9
  • Upgrade to Jolokia 1.3.6
  • Upgrade to commons-io 2.5
  • Upgrade to Logback 1.2.3
  • Upgrade to Slf4j 1.7.25
  • Deliver OkHttp3 Bundles with Virgo

See the Bugs fixed with 3.7.1 for more information.

3.7.0 (Steel) Release

  • Upgrade to Gemini Blueprint 2.0
  • Upgrade to Gemini Web 3.0 (Embedded Apache Tomcat 8.5.11)
  • TBD, but see the Steel bugtrain bug 396813.

Release Branding

To accommodate simultaneous releases of Virgo runtime, OSGi Web Container runtime, and Virgo tooling, we are branding each release with the name of a colour, including old releases.

Virgo Release Branding and Component Versions
Brand Runtime Web Container Blueprint Spring Framework Management Eclipse IDE Tooling
Fern SpringSource dm Server 1.0.x Embedded Apache Tomcat 6.0.x Spring DM 1.1.x 2.5.6.A - -
Emerald SpringSource dm Server 2.0.x OSGi Web Container 1.0.x
(Embedded Apache Tomcat 6.0.x)
Spring DM 1.2.1 3.0.0.RELEASE - -
Cornflower Virgo 2.1.x Gemini Web 1.1.x
(Embedded Apache Tomcat 6.0.x)
Spring DM 1.2.1 3.0.0.RELEASE - -
Maya Virgo 3.0.x Gemini Web 2.0.x
(Embedded Apache Tomcat 7.0.x)
Spring DM 1.2.1 3.0.5.RELEASE - -
Bondi Virgo 3.5 Gemini Web 2.1
(Embedded Apache Tomcat 7.0.x)
Gemini Blueprint 1.0 3.0.5.RELEASE Gemini Management 1.0.2 Virgo IDE 1.0
Sky Virgo 3.6.x Gemini Web 2.2.x
(Embedded Apache Tomcat 7.0.x)
Gemini Blueprint 1.0.2 3.1.0.RELEASE Gemini Management 1.0.x Virgo IDE 1.0.1
Steel Virgo 3.7 Gemini Web 3.0.x
(Embedded Apache Tomcat 8.5.x)
Gemini Blueprint 2.0 4.2.x.RELEASE Gemini Management 1.0.5 Virgo IDE 1.5
Cobalt Virgo 4.0 Gemini Web 3.0.x
(Embedded Apache Tomcat 8.5.x)
Gemini Blueprint 2.0 4.2.x.RELEASE Gemini Management 2.0 Virgo IDE 1.6

Note 1: we are steering clear of the following "wimp list" of colours: Azure, Indigo.


Future Directions

Support for the OSGi Subsystems specification is deferred indefinitely (rationale), except for generalising the InstallArtifact tree to a DAG which was implemented in Virgo 3.5.0 (see the Kernel Enhancements section of the Virgo 3.5.0 release notes).

Back to the top