summaryrefslogtreecommitdiff
path: root/roadmap.mdwn
blob: 79b126b94e6232a66d357832a7896b262b5f2c77 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
[[!meta title="Road map"]]

This is the road map for ick development. It does not stretch very far,
because predicting the future is difficult. This road map also doesn't
give any dates, this is a hobby project. It's also open for discussion.

Ick is now usable by others. If you try ick and have problems, do tell
us, see the [[contact]] page for contact information.

Ick is by no means an abandoned project, but we're taking a breather
while waiting for other developments. Most importantly, ick will want a
web UI, and that and other features will require end-user
authentication. The Qvisqve software ick uses for authentication will
be getting that support in 2018. Once it does, ick will start adding
support for that.

Until then, the plan is to make small, incremental improvements to
ick, fix bugs, improve documentation, smooth rough corners, and
gather experience on using ick.

The long-term goal is to develop ick into a hosted service, which can
be run on a commercial basis, without compromising on software
freedom.

# Roadmap towards hosted ick

    @startroadmap
    hosted_demo:
      label: |
        Lars run a hosted
        demo service for
        himself and users
      depends:
        - user_friendly
        - secure_from_users
        - secure_for_users
        - on_demand_workers
        - trigger_service
        - multiarch

    user_friendly:
      label: |
        Ick is reasonably
        user friendly to
        techies.
      depends:
        - webui
        - self_registration

    multiarch:
      label: |
        Ick supports building
        for multiple
        architectures.
      depends:
        - worker_tags
        - concurrency

    secure_from_users:
      label: |
        Ick is safe and
        secure from users
        doing silly things.
      depends:
        - networkless_containers

    secure_for_users:
      label: |
        Ick is secure for
        users to use.
      depends:
        - isolation
        - secrets

    secrets:
      label: |
        Ick provides a way to
        securely use secrets:
        ssh keys, pgp keys,
        Qvisqve access
        tokens.
      depends:
        - owned_resources

    networkless_containers:
      label: |
        Containers have, by
        default, no network
        access. Trusted users
        can allow specific
        builds to have
        network access in
        containers.
      depends:
        - owned_resources

    concurrency:
      label: |
        Ick can execute
        several actions in
        the same build
        concurrently.
      depends:
        - worker_tags

    worker_tags:
      label: |
        Ick allows projects
        and workers to have
        tags, and can choose
        which worker to give
        an action to, based
        on tags

    on_demand_workers:
      label: |
        Ick can create
        and destroy
        workers on demand
      depends:
        - worker_tags

    trigger_service:
      label: |
        Ick can trigger
        multiple builds when
        a git repo changes,
        or when an ick build
        finishes, or after
        some time has passed

    isolation:
      label: |
        Users can only see,
        manipulate their own
        data
      depends:
        - owned_resources

    owned_resources:
      label: |
        Each resource is
        owned by its creator

    self_registration:
      label: |
        Users can create
        an account by themselves
        via a web browser
      depends:
        - webui

    webui:
      label: |
        Ick has a web UI
        that allows creation,
        updating, triggering
        of projects, builds,
        viewing status, logs
    @endroadmap

# Roadmap legend

    @startroadmap

    blocked:
        label: |
            This is blocked
            (cannot be done
            until something
            else is done first)
        status: blocked
        depends:
        - finished
        - ready
        - next

    finished:
        label: |
            This is finished
            (already done)
        status: finished

    ready:
        label: |
            This is ready
            (can be done if
            we choose to)
        status: ready

    next:
        label: |
            This is next
            (has been chosen
            to be done in
            the current iteration)
        status: next

    @endroadmap