| |
| <!DOCTYPE html> |
| <html lang="en"> |
| <head> |
| <meta charset="utf-8"> |
| <meta name="viewport" content="width=device-width, initial-scale=1"> |
| <meta name="description" content=""> |
| <meta name="author" content=""> |
| |
| <title>Roadmap / Apache Celix</title> |
| |
| |
| <link rel="icon" href="/assets/img/favicon.ico"> |
| |
| |
| <link href="/assets/css/bootstrap.min.css" rel="stylesheet"> |
| |
| |
| <link href="/assets/css/style.css" rel="stylesheet"> |
| |
| <style> |
| |
| |
| .card-body img { |
| max-width: 100%; |
| width: 100%; |
| height: auto; |
| } |
| |
| |
| .card-body img + em { |
| text-decoration: underline; |
| } |
| </style> |
| |
| |
| <script> |
| var _paq = window._paq = window._paq || []; |
| |
| _paq.push(['disableCookies']); |
| |
| _paq.push(['trackPageView']); |
| _paq.push(['enableLinkTracking']); |
| (function() { |
| var u="https://analytics.apache.org/"; |
| _paq.push(['setTrackerUrl', u+'matomo.php']); |
| _paq.push(['setSiteId', '9']); |
| var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0]; |
| g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s); |
| })(); |
| </script> |
| |
| |
| </head> |
| <body class="light-grey"> |
| |
| <a href="https://github.com/apache/celix" class="github-ribbon"> |
| <img src="/assets/img/forkme_right_red_aa0000.png" alt="Fork me on GitHub"> |
| </a> |
| |
| |
| <nav class="navbar navbar-expand-lg navbar-dark bg-primary fixed-top"> |
| <div class="container"> |
| <a class="navbar-brand" href="/"> |
| <img src="/assets/img/celix-white.svg" height="40" class="d-inline-block align-top" alt="Celix Logo"> |
| </a> |
| <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarResponsive" aria-controls="navbarResponsive" aria-expanded="false" aria-label="Toggle navigation"> |
| <span class="navbar-toggler-icon"></span> |
| </button> |
| <div class="collapse navbar-collapse" id="navbarResponsive"> |
| <ul class="navbar-nav ml-auto"> |
| <li class="nav-item"> |
| <a class="nav-link" href="/">Home</a> |
| </li> |
| <li class="nav-item"> |
| <a class="nav-link" href="/download.cgi">Download</a> |
| </li> |
| <li class="nav-item dropdown active"> |
| <a class="nav-link dropdown-toggle" href="#" id="ddDocs" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> |
| Docs |
| </a> |
| <div class="dropdown-menu" aria-labelledby="ddDocs"> |
| <a class="dropdown-item" href="/docs/2.4.0/docs.html">2.4.0 (latest)</a> |
| <a class="dropdown-item" href="/docs/2.2.1/docs.html">2.2.1</a> |
| <a class="dropdown-item" href="/docs/2.1.0/docs.html">2.1.0</a> |
| </div> |
| </li> |
| <li class="nav-item dropdown"> |
| <a class="nav-link dropdown-toggle" href="#" id="ddContributing" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> |
| Contributing |
| </a> |
| <div class="dropdown-menu" aria-labelledby="ddContributing"> |
| <a class="dropdown-item" href="/contributing/youatcelix.html">You at Celix</a> |
| <a class="dropdown-item" href="/contributing/submitting-patches.html">Submitting patches</a> |
| <a class="dropdown-item" href="/contributing/source-and-builds.html">Source code and builds</a> |
| <hr> |
| <a class="dropdown-item" href="/contributing/releasing.html">Releasing</a> |
| <a class="dropdown-item" href="/contributing/volunteers.html">Volunteers</a> |
| <a class="dropdown-item" href="https://whimsy.apache.org/board/minutes/Celix.html">Board Reports</a> |
| </div> |
| </li> |
| <li class="nav-item dropdown"> |
| <a class="nav-link dropdown-toggle" href="#" id="ddSupport" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> |
| Support |
| </a> |
| <div class="dropdown-menu" aria-labelledby="ddSupport"> |
| <a class="dropdown-item" href="/support/mailing-list.html">Mailing Lists</a> |
| <a class="dropdown-item" href="/support/issue-tracking.html">Issue Tracking</a> |
| </div> |
| </li> |
| <li class="nav-item dropdown"> |
| <a class="nav-link dropdown-toggle" href="#" id="ddFoundation" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> |
| ASF |
| </a> |
| <div class="dropdown-menu" aria-labelledby="ddFoundation"> |
| <a class="dropdown-item" href="https://www.apache.org/">ASF Home</a> |
| <a class="dropdown-item" href="https://www.apache.org/foundation/how-it-works.html">How it works</a> |
| <a class="dropdown-item" href="https://www.apache.org/licenses/">License</a> |
| <a class="dropdown-item" href="https://www.apache.org/foundation/sponsorship.html">Sponsorship</a> |
| <a class="dropdown-item" href="https://www.apache.org/foundation/thanks.html">Thanks</a> |
| <a class="dropdown-item" href="https://www.apache.org/security/">Security</a> |
| <a class="dropdown-item" href="https://www.apache.org/foundation/policies/conduct">Code of Conduct</a> |
| </div> |
| </li> |
| </ul> |
| </div> |
| </div> |
| </nav> |
| |
| |
| <div class="section"> |
| <div class="container"> |
| <div class="row py-4"> |
| <div class="col-sm-12 card"> |
| <div class="card-body pt-5"> |
| |
| |
| |
| |
| |
| |
| |
| |
| <a href="/docs/2.1.0/docs.html" title="back to documentation"><< back to documentation</a> |
| |
| |
| |
| <!-- |
| Licensed to the Apache Software Foundation (ASF) under one or more |
| contributor license agreements. See the NOTICE file distributed with |
| this work for additional information regarding copyright ownership. |
| The ASF licenses this file to You under the Apache License, Version 2.0 |
| (the "License"); you may not use this file except in compliance with |
| the License. You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| See the License for the specific language governing permissions and |
| limitations under the License. |
| --> |
| <h1 id="roadmap">Roadmap</h1> |
| <p>Note this roadmap is still a draft.</p> |
| <h1 id="apache-celix-201">Apache Celix 2.0.1</h1> |
| <p>Date: TBD (juli/aug 2017?)</p> |
| <h2 id="improve-pubsub-celix-407">Improve PubSub (CELIX-407)</h2> |
| <ol> |
| <li>Finalize introduction serializer services</li> |
| <li>Ensure code coverage of ~ 70%</li> |
| </ol> |
| <h2 id="finalize-runtime-creation-celix-408">Finalize Runtime Creation (CELIX-408)</h2> |
| <ol> |
| <li>Ensure that the runtime command are used for testing some distributed test (e.g. pubsub)</li> |
| </ol> |
| <h2 id="add-support-for-running-celix-as-a-single-executable-todo-issue">Add Support for running Celix as a single executable (TODO issue)</h2> |
| <p>For different reasons it could be interesting to support running bundles from a single executable. |
| Primarily security, but also startup performance.</p> |
| <p>To start this can be achieved by creating static version of the celix provided bundles. These static |
| bundles should have unique symbols, e.g shell_bundleActivator_create instead of a |
| “normal” bundleActivator_create. The normal activator functions should then |
| only be used (using a define or separated source file) when building a shared library bundle. |
| A additional property (e.g. “cosgi.auto.static.start=shell, shell_tui”) can be used to specify which |
| symbol prefixes to use.</p> |
| <p>Note that if this is implemented it would also be a good moment to add a compile option / launcher option |
| to disable dynamic loading of libraries. This way shared library based bundles can be used during |
| development, but for production a static executable with no capability to add bundles runtime |
| could be used if preferable.</p> |
| <h1 id="apache-celix-210">Apache Celix 2.1.0</h1> |
| <p>Date: TBD (Jan 2018)</p> |
| <p>Note a short comming is that there is still no good support for export and import libraries between |
| bundles. For Linux dlmopen is a solution, but for a more broader UNIX support a more “creative” |
| solution is needed (e.g. Just in time replacing the SONAME and NEEDED values in the respective shared libraries)</p> |
| <h2 id="extend-dependency-manager-cc-celix-409">Extend Dependency Manager C/C++ (CELIX-409)</h2> |
| <p>The dependency manager offers declarative API for working with services and is arguable more easier |
| to use than the official OSGi Api. Extend the DM so that in can be used for virtually any bundle |
| without directly using the bundle context, bundle, module, service ref, service registration, etc API. |
| This provided a much smaller API providing almost the same functionality.</p> |
| <p>This means:</p> |
| <ol> |
| <li>Add support for service factory</li> |
| <li>Add support for providing listener hooks. Note that this is already supported by registering |
| a <code>listener_hook_service</code> service, but maybe a more abstracted way.</li> |
| <li>Add support looking up and opening resources in the bundle.</li> |
| <li>Replace add,remove, etc callbacks which uses the service reference, with callbacks using properties</li> |
| <li>Test if the dm correctly works when adding / removing provided services and service dependencies after a component is started.</li> |
| <li>Getting framework properties (e.g. bundleContext_getProperty)</li> |
| <li>Support for getting basic info from bundle (version, symbolic name, manifest)</li> |
| </ol> |
| <h2 id="add-framework-services-todo-issue">Add framework services (TODO issue)</h2> |
| <p>Apache Celix is a framework for service oriented programming, this should also include for interacting with the |
| framework itself. Create framework services for:</p> |
| <ol> |
| <li>bundle management: installing, Starting, Stopping, deinstalling, listing, etc bundles.</li> |
| <li>service registry info: nr of service registered, nr of service listeners, etc.</li> |
| <li>framework listenerL start, stop, error events (whiteboard)</li> |
| <li>bundle listener: installed, start, stop, deinstalled events (whiteboard)</li> |
| </ol> |
| <h2 id="support-dependency-manager-from-framework-todo-issue">Support dependency manager from framework (TODO issue)</h2> |
| <p>Because the dependency manager is actual the preferred way to write bundles, this should be support |
| like “normal” activators" directly from the framework without using a static library.</p> |
| <h2 id="refactor-celix-provided-bundles-to-use-dependency-manager-and-framework-services-todo-issue">Refactor Celix provided bundles to use dependency manager and framework services (TODO issue)</h2> |
| <p>Refactor Celix bundles (shell, shell_tuu, RSA, etc) to use the dependency manager instead of a “vanilla” |
| bundle activator. The dependency manager should be the preferred way to handle services. |
| Also instead of directly using the API from bundle_context, bundle, module, etc the framework services |
| should be used.</p> |
| <h2 id="create-dfi-descriptor-generator-todo-issue">Create dfi descriptor generator (TODO issue)</h2> |
| <p>Create a descriptor generator which can parse type and service headers. |
| This can be relatively easy achieved by (e.g.) using the libclang library. |
| Also extend the CMake add_bundle command and create a CMake bundle_add_descriptors command to be able |
| to add the descriptors to the bundle</p> |
| <h2 id="use-dfi-descriptor-in-service-registrationsreferences-todo-issue">Use dfi descriptor in service registrations/references (TODO issue)</h2> |
| <p>When available dfi descriptors can be used in Celix to validate if service are compatible and |
| in case of the provided service having more functions than the consumer needs, create a (cast to) |
| a compatible consumer version.</p> |
| <h1 id="apache-celix-300">Apache Celix 3.0.0</h1> |
| <p>Date: TBD (aug 2018)</p> |
| <h2 id="remove-support-for-vanilla-bundle-activators-todo-issue">Remove support for “vanilla” bundle activators (TODO issue)</h2> |
| <p>When all Celix provided bundles are using the dependency manager and framework services support for |
| the “vanilla” bundle activator can be dropped. Also a lot internals can be refactored because the public |
| API should have shrunk quite a bit; This should lead to smaller code base -> less complex, easier to maintain |
| and a smaller footprint.</p> |
| <h2 id="refactor-service-registry-to-a-single-threaded-design-todo-issue">Refactor service registry to a single threaded design (TODO issue)</h2> |
| <p>Celix currently has some nested lock. It would be preferable to remove these, but this is difficult |
| because they are used to sync events which react on registering/unregistering services. Specially when |
| a unregister/register event leads to other services being registered/unregisterd. One way to deal with |
| this sync problem is to remove it by adding a single thread which handle al interaction between bundles |
| and the service registry.</p> |
| |
| |
| </div> |
| </div> |
| </div> |
| </div> |
| </div> |
| |
| |
| <footer class="py-3 bg-secondary"> |
| <div class="container"> |
| <div class="row"> |
| <div class="col-md-8 text-center"> |
| <p class="m-0 text-white"> |
| Copyright © 2023 The Apache Software Foundation, Licensed under |
| the <a href="https://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>. |
| <br> |
| Apache Celix, Celix, Apache, the Apache feather logo and the Apache Celix logo are trademarks of The Apache Software Foundation. |
| </p> |
| </div> |
| <div class="col-md-4 text-center"> |
| <a href="https://www.apache.org/events/current-event.html" target="_blank"> |
| <img src="https://www.apache.org/events/current-event-234x60.png" title="Apache Event" width="234" height="60" border="0"> |
| </a> |
| </div> |
| </div> |
| </div> |
| </footer> |
| |
| |
| <script src="/assets/js/jquery.min.js"></script> |
| <script src="/assets/js/bootstrap.bundle.min.js"></script> |
| |
| |
| </body> |
| </html> |