Project

Profile

Help

Pulp Python Roadmap » History » Sprint/Milestone 16

bizhang, 12/18/2017 08:24 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 16 bizhang
## Pulp Python 3.0 Use Cases
14 1 dalley
15 14 amacdona@redhat.com
### Synced Package Index use case:
16 13 bizhang
17 2 dalley
> As a user, I can configure an importer to sync a list of projects \[#2884\]
18
>
19 1 dalley
>> Syncing a project includes all releases  
20
>> Syncing a release includes all distribution packages (all types)  
21 14 amacdona@redhat.com
>> Synced packages can be verified based on digest (md5 from pypi, sha512 Pulp)  
22 1 dalley
>> I can specify sync mode to be either additive or mirror
23
24 16 bizhang
### Publish Use Case:
25
26
> <span style="color:blue;">As a user, I can publish a repository (Published projects will include all releases and distributions)</span>
27 15 bizhang
>
28 16 bizhang
>> Published Python Content Units are consumable by pip \[#2885\]
29 1 dalley
30
### Upload Use Case:
31
32 16 bizhang
> <span style="color:blue;">As a user, I can upload individual distribution packages (name, version, platform) \[#3197\]</span>
33 1 dalley
>
34
>> As a user I can upload all types (egg, wheel, sdist)
35 14 amacdona@redhat.com
36 16 bizhang
## Pulp Python 3.1+ Use Cases
37 1 dalley
38 16 bizhang
### Upload Use Case:
39 15 bizhang
40 16 bizhang
> A twine user can publish a distribution package to Pulp \[#2887\]
41 14 amacdona@redhat.com
42 16 bizhang
### Migrations:
43 14 amacdona@redhat.com
44
> As a user, I can migrate Pulp2 packages to Pulp3 in-place. \[#2888\]
45 1 dalley
46 16 bizhang
### Cache Use Case:
47 14 amacdona@redhat.com
48
> As a user, I can use Pulp as a PyPI cache.
49
50 16 bizhang
### PyPI Publish use case
51 14 amacdona@redhat.com
52
> As a user, I can publish a release to a remote package index
53
>
54
>> As a user, I can configure Pulp to publish to PyPI with my auth credentials
55 16 bizhang
>
56
> I can published projects are consumable by other Pulps \[#2886\]
57 2 dalley
58 14 amacdona@redhat.com
### Granular Sync
59 4 dalley
60 1 dalley
> Blacklist: As a user, I can disinclude some content of a project
61 2 dalley
>
62 1 dalley
>> By specifying (release, distribution package)  
63 11 bizhang
>> I can disinclude content by distribution type
64
>
65
> Whitelist (Curated Package index Use Case) As a user, I can sync packages that reproduce a specific environment
66
>
67 1 dalley
>> From the output of pip freeze (loose use case)  
68
>> With the name, exact versions, and distribution type (tight use case)
69
70
## Glossary:
71
72
### Project
73
74
> 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.  
75
> \[ https://packaging.python.org/glossary/#term-project \]
76 2 dalley
77 1 dalley
### Package Index:
78
79
> 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
80
81
### Release
82
83
> A snapshot of a Project at a particular point in time, denoted by a version identifier.  
84
> 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.
85 5 dalley
86
### Distribution Package
87 1 dalley
88
> "Distribution" for short. If we mean linux, we will say "distro"  
89
> 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".
90
91
## Relevant PEPs:
92
93
  - https://www.python.org/dev/peps/pep-0241/ Final (Original Metadata)
94
  - https://www.python.org/dev/peps/pep-0301/ Final (HTTP API)
95
  - https://www.python.org/dev/peps/pep-0314/ Final (Metadata 1.1)
96
  - https://www.python.org/dev/peps/pep-0345/ Accepted (Metadata 1.2)
97
  - https://www.python.org/dev/peps/pep-0427/ Accepted (Wheel 1.0) 
98
  - https://www.python.org/dev/peps/pep-0491/ Draft (Wheel 1.9)
99
  - https://www.python.org/dev/peps/pep-0426/ Deferred (Metadata 2.0)
100
  - https://www.python.org/dev/peps/pep-0459/ Deferred (Standard Metadata Extensions)
101
  - https://www.python.org/dev/peps/pep-0503/ Accepted (Simple API)
102
  - https://www.python.org/dev/peps/pep-0508/ Active (Dep specification)