Project

Profile

Help

Pulp Python Roadmap » History » Sprint/Milestone 24

amacdona@redhat.com, 04/16/2019 07:05 PM

1 1 dalley
# Pulp Python Roadmap
2
3 14 amacdona@redhat.com
Legend:  
4
(Red, undecided)  
5
(Yellow, decided- needs story)  
6
(blue, decided with story)  
7
(Black - Finished bc green is hard to read)
8
9 9 dalley
~~~
10 8 dalley
This is a living document that is moving towards a long term plan to develop pulp_python 3.0 and beyond.
11 6 dalley
~~~
12 1 dalley
13 22 bizhang
## Pulp Python 3.0 Use Cases
14 1 dalley
15 14 amacdona@redhat.com
### Synced Package Index use case:
16 13 bizhang
17 19 amacdona@redhat.com
As a user, I can configure an importer to sync a list of projects \[#2884\]
18 2 dalley
19 19 amacdona@redhat.com
  - Syncing a project includes all releases
20
  - Syncing a release includes all distribution packages (all types)
21 23 amacdona@redhat.com
  - <span style="color:blue;">Synced packages can be verified based on digest (md5 from pypi, sha512 Pulp)</span> \[#3613\]
22 1 dalley
  - I can specify sync mode to be either additive or mirror
23 23 amacdona@redhat.com
  - {color:blue} I can sync all projects from a package index \[#985\]
24
  - {color:blue} I can sync the metadata of projects and defer the download of packages (lazy sync) \[#1884\]
25
  - Blacklist: As a user, I can disinclude some content of a project by version specifiers and digests
26
  - Whitelist (Curated Package index Use Case) As a user, I can sync packages that reproduce a specific environment by version specifiers and digests
27 24 amacdona@redhat.com
  - {color:blue} As a user, pulp validates the hashes of downloaded packages \[#3613\]
28
  - {color:blue} Performance improvement: Parallel DL of metadata \[#4132\]
29 1 dalley
30
### Publish Use Case:
31
32 23 amacdona@redhat.com
As a user, I can publish a repository (Published projects will include all releases and distributions)
33 1 dalley
34
  - Published Python Content Units are consumable by pip \[#2885\]
35 23 amacdona@redhat.com
  - {color:blue} Published Python Content Units are consumable by pipenv \[#4686\]
36
  - {color:blue} I can published projects are consumable by other Pulp instances \[#2886\]
37 1 dalley
38
### Upload Use Case:
39 19 amacdona@redhat.com
40 23 amacdona@redhat.com
As a user, I can upload individual distribution packages (name, version, platform) \[#3197\]
41 19 amacdona@redhat.com
42
  - As a user I can upload all types (egg, wheel, sdist)
43 23 amacdona@redhat.com
  - {color:blue} As a user, I can upload and create a PythonPackageContent in a single call (one-shot upload)
44 1 dalley
45
### As a user I have documentation that covers all above in this format:
46
47 19 amacdona@redhat.com
  - Quickstart 
48
      - Installation
49 23 amacdona@redhat.com
      - upload \[#3212\]
50
      - sync \[#3213\]
51 19 amacdona@redhat.com
      - {color:blue} publish \[#3214\]
52 23 amacdona@redhat.com
  - REST API Reference
53
  - Build and host docs \[#3215\]
54 16 bizhang
55 1 dalley
## Pulp Python 3.1+ Use Cases
56 16 bizhang
57 1 dalley
### Upload Use Case:
58 14 amacdona@redhat.com
59
> A twine user can publish a distribution package to Pulp \[#2887\]
60
61 16 bizhang
### Migrations:
62 14 amacdona@redhat.com
63
> As a user, I can migrate Pulp2 packages to Pulp3 in-place. \[#2888\]
64
65
### Cache Use Case:
66 16 bizhang
67
> As a user, I can use Pulp as a PyPI cache.
68 2 dalley
69 14 amacdona@redhat.com
### Granular Sync
70 4 dalley
71 1 dalley
> Blacklist: As a user, I can disinclude some content of a project
72 23 amacdona@redhat.com
73
~~\>\> By specifying (release, distribution package)~~ (Included in 3.0)
74
75 11 bizhang
>> I can disinclude content by distribution type
76 23 amacdona@redhat.com
77
~~\> Whitelist (Curated Package index Use Case) As a user, I can sync packages that reproduce a specific environment~~ (Included in 3.0)
78
79 1 dalley
>> From the output of pip freeze (loose use case)  
80
>> With the name, exact versions, and distribution type (tight use case)
81
82
## Glossary:
83
84
### Project
85
86
> A library, framework, script, plugin, application, or collection of data or other resources, or some combination thereof that is intended to be packaged into a Distribution.  
87 2 dalley
> \[ https://packaging.python.org/glossary/#term-project \]
88 1 dalley
89
### Package Index:
90
91
> A repository of distributions with a web interface to automate package discovery and consumption. (this should align to a pulp repo). A Package Index is assumed to implement the PyPI APIs
92
93
### Release
94
95
> A snapshot of a Project at a particular point in time, denoted by a version identifier.  
96 5 dalley
> Making a release may entail the publishing of multiple Distributions. For example, if version 1.0 of a project was released, it could be available in both a source distribution format and a Windows installer distribution format.
97
98 1 dalley
### Distribution Package
99
100
> "Distribution" for short. If we mean linux, we will say "distro"  
101
> A versioned archive file that contains Python packages, modules, and other resource files that are used to distribute a Release. The archive file is what an end-user will download from the internet and install. A project may contain many releases, and releases may contain many distribution packages. Can be type sdist, bdist, etc. "Distribution package" is used instead of "package" to avoid confusion with "import packages" or linux "distributions".
102
103
## Relevant PEPs:
104
105
  - https://www.python.org/dev/peps/pep-0241/ Final (Original Metadata)
106
  - https://www.python.org/dev/peps/pep-0301/ Final (HTTP API)
107
  - https://www.python.org/dev/peps/pep-0314/ Final (Metadata 1.1)
108
  - https://www.python.org/dev/peps/pep-0345/ Accepted (Metadata 1.2)
109
  - https://www.python.org/dev/peps/pep-0427/ Accepted (Wheel 1.0) 
110
  - https://www.python.org/dev/peps/pep-0491/ Draft (Wheel 1.9)
111
  - https://www.python.org/dev/peps/pep-0426/ Deferred (Metadata 2.0)
112
  - https://www.python.org/dev/peps/pep-0459/ Deferred (Standard Metadata Extensions)
113
  - https://www.python.org/dev/peps/pep-0503/ Accepted (Simple API)
114
  - https://www.python.org/dev/peps/pep-0508/ Active (Dep specification)