This document is an invitation to contribute to p2. Below is a non exhaustive list of items on how p2 could be improved. If you are interested in contributing to any of those item, please contact us on the p2-dev mailing list and we'll start from there.
- Director application to read the p2f file (Mengxin)
- The p2f file has been introduced to help with the sharing of plugins / features. This work aims at allowing the director application to take a .p2f file as input to drive an installation. Bug 358157
- Propose solutions to dependency resolution errors (DJ, Ian, Pascal)
- When the dependency resolver fails to find a solution, it is not clear how to resolve the issue: should something be removed from the existing install, should a repository be added, is there a conflict between the pieces being installed, etc.. This work aims at making the error messages shown in the UI actionable such that the user can more easily resolve the issue. Bug 348124
- Web-browsing repository content (Matt, Pascal)
- The content.jar and other repository formats supported by p2 are not viewable in a web browser. The works aims at making the content of p2 repos available in a web browser friendly format. Additionally this should render the content of repositories indexable by search engine, as such allowing to better find repositories when a dependency is missing. Bug 355418
- Shared installs improvements (DJ)
- Though used extensively, shared installs have severe limitations. The end-user installed plugins are lost when the base is changed, the list of repositories from the base is not visible for the end user, etc. Minimally, this works aims at making sure the repositories are not lost. Ideally we'd get a super duper UI that would let the end user pick the roots that have been removed. Bug 358471
- Automatically detect JRE
- p2 currently fakes out the JRE by providing an IU called a.jre that represents one of the JRE available. Unfortunately, in case where the JRE actually running does not match the one found known p2, the user may end up with runtime errors because of the missing packages. This works aims at detecting the JRE at runtime to avoid the problem previously mentioned. Bug 346174
- p2 shell scripts (Brian)
- This works aims at providing shell script to make it easier to use p2 in a shell script. Bug 352128
Ease of contributing and using p2
- Build p2 with Tycho (Anthony)
- p2 has pom files, but they are out dated. We should strive to produce all the p2 downloads and update sites using p2. This includes build the examples, build the products and add the build of the examples. Bug 304594
- Improve / clean-up the p2 examples
- The p2 git repo contains a variety of examples that may not be up-to-date wrt API use. We need to clear those up and also see if more pertinent examples are necessary.
- Improve documentation / wiki page
- The documentation for p2 is not very clear, structured and contains a fair number of outdated pages. We should clear it up and make it easy for new comers, both users and contributors to find their way.
- Office hours (everybody)
- The Jenkins community has a concept of office hours that allow contributors and users to ask questions. Without necessarily having topics every time, just making it know that we are on IRC, ready to answer questions on certain days could be a good start.
- Generic require
- The OSGi RFC 154 added the ability to support express support to express generic requirement in a manifest. This works aims at expanding the p2 metadata model to support this in the requirement and capability model. Bug 324352
- Support for variables in the metadata
- This works aims at providing the ability to parameterize the installation and the configuration of an IU based on some variable whose value would either be provided by an user or by another IU.
- OS specific actions (Mengxin)
- Provide p2 actions to deal with OS specific things (e.g. adding a shortcut, installing an rpm, etc.) The Bug 241408 reports the enhancement related to start menu and desktop icons.
- Provide inter process locking for bundle pool (Ian)
- In the case of shared install using bundle pooling, if multiple processes are modifying the pool some concurrency issue can occur and artifacts be lost. The goal here is to complete the work we started last year around this.
- Provide stable install / uninstall order
- Sometimes IUs have interdependencies between each other (e.g. one action relies on the another one to have been executed) but the install and uninstall order provided by p2 is unspecified. This works aims at providing a stable install order based on the dependency expressed in the requirements. Bug 327127
- Represent uses-clause in the resolver
- OSGi uses-clause add a subtle twist to dependency resolution. Currently p2 resolver does not cope with it. This work aims at adding uses-clause support to the SAT encoding.
- Option to remove the plugins automatically when uninstall feature (John, DJ)
- Currently the p2 GC will only collect the bundles from the install upon next uninstall operation. This work item adds an option automatically remove the plugin. Bug 232356
- pausing a p2 operation (Mengxin, Helmut Haigermoser)
- “pause” an installation would mean: “pause downloading content”, and “pause installing content”, with a “resume” button making p2 continue the process of executing the provisioning plan. Pausing a download would come in handy if you need to suspend to RAM and bring it back up later(go home for the day and want to continue your install the next day). Pausing an install would also be nice in case the installation has to be halted, maybe you need disk I/O for something else and want to wait with the p2 install until later etc. Bug 358842
- Follow the progress of the OBR specification. There are currently two pieces of work. First is to allow p2 to read the OBR repository format, second is to implement the OBR API when it becomes available. Bug 289125
- Run p2 on Felix
- Try to run p2 on Felix. Some work has been initiated by Pascal. Now all the bundles resolve and install. However there are some other limitations in the eclipse touchpoint and other places in p2 that prevent p2 to
- p2cudf to generate command line for linux package managers
- With p2cudf can cope with dependencies expressed by linux package managers. This works aims at using p2cudf to produce the solution to an install request and generate the command line argument to install the debian or rpm packages.
- use CUDF format to express resolver use cases
- p2cudf uses the simple and human readable CUDF format to express dependencies. Such format could simply be extended to integrate specific p2 features (singleton, root IUs, etc.
- extension points replacement with OSGi services (Katya)
- Bug 325328
- support customizable download statistics (Mengxin)
- Bug 364929
Probably a lot