/
0602-chapterTheOslicUseCasesInc.tex
470 lines (431 loc) · 23.5 KB
/
0602-chapterTheOslicUseCasesInc.tex
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
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
% Telekom osCompendium 'for beeing included' snippet template
%
% (c) Karsten Reincke, Deutsche Telekom AG, Darmstadt 2011
%
% This LaTeX-File is licensed under the Creative Commons Attribution-ShareAlike
% 3.0 Germany License (http://creativecommons.org/licenses/by-sa/3.0/de/): Feel
% free 'to share (to copy, distribute and transmit)' or 'to remix (to adapt)'
% it, if you '... distribute the resulting work under the same or similar
% license to this one' and if you respect how 'you must attribute the work in
% the manner specified by the author ...':
%
% In an internet based reuse please link the reused parts to www.telekom.com and
% mention the original authors and Deutsche Telekom AG in a suitable manner. In
% a paper-like reuse please insert a short hint to www.telekom.com and to the
% original authors and Deutsche Telekom AG into your preface. For normal
% quotations please use the scientific standard to cite.
%
% [ Framework derived from 'mind your Scholar Research Framework'
% mycsrf (c) K. Reincke 2012 CC BY 3.0 http://mycsrf.fodina.de/ ]
%
%% use all entries of the bibliography
%\nocite{*}
After all these introducing remarks let us summarize the center of our idea: We
know that the right to use Open Source Software depends on the doings required
by the corresponding Open Source Licenses. In opposite to the commercial
licenses, you can not buy the right to use a piece of Open Source software.
Never! It is embedded into the Open Source Definition that the right to use the
software may not be sold. The OSD states firstly that an Open Source License may
\glqq{}[\ldots] not restrict any party from selling or giving away the software
as a component of (any) aggregate software distribution\grqq{}, and adds
secondly in the same context that an Open Source License \glqq{}[\ldots] shall
not require a royalty or other fee for such sale\grqq{}\footcite[cf.][\nopage
wp. §1]{OSI2012a}.
But nevertheless, it is not adequate to derive from this statement that you are
automatically allowed to use Open Source Software without any service in return:
generally you have to do something for getting the right to use the software. In
other words: Open Source Software is specified by the idea of 'paying by doing'.
Therefore these Open Source Licenses describe specific circumstances under
which the user must execute some tasks. Such circumstances are often sets of
conditions and may be viewed as triggers for a compliant behaviour. So, if we
want to offer license fulfilling to-do lists, we have to consider these triggers.
The real challenge is, that such circumstances are not linear and simple. They
contain combinations of (sometimes) context sensitive conditions. These
conditions refer to different class of tokens. Such a class of token might
denote a feature of the software itself - like being an application or a
library. Or it might denote the circumstances of using the software - like
'using the software only for yourself' or 'distributing the software also to
third parties'.
At the end, we want to determine a set of specific OSUCs - Open Source Use
Cases. And we want to deliver for each of these OSUCs and for each of the
considered Open Source Licenses one list of actions, which fulfill the license
in the context of this use case. In our discussion, such an \textit{Open Source
Use Case} shall be a set of tokens describing the circumstances of a specific
usage. So, in the beginning we have to specify the relevant classes of tokens.
Then we build the valid combinations of tokens, our Open Source Use Cases. And
finally - based on the specifying tokens - we generate a taxonomy. In the
next chapter this taxonomy will become the base of the Open Source Use Case
Finder which leads you to your specific OSUC by only a few questions and
answers.
In other words: this chapter defines the relevant tokens and derives the
conceptual structures. The following chapter will use the results of this
chapter - but without deeper discussions.
So, let's now start with the classes of tokens by which the circumstances of
using a piece of Open Source Software can be specified:
\begin{itemize}
\item Firstly we will consider the \textbf{type of the Open Source Software}.
We will distinguish between code snippets, modules, libraries or plugins on
the one hand, and autonomous, processable applications, programs or servers on
the other hand. Let's name the first set the 'snimolis' and the second the
'proapses' for indicating, that we are not only talking about libraries or
applications in the well known sense\footnote{Of course, our newly introduced
concepts 'snimoli' and 'proapse' are not absolutely one of the most elegant
words. So, initially we tried to talk about 'applications' and 'librabries',
although in our context these words should denote more than they traditionally
do. But we couldn't minimize the irritations of our interlocutors. Too often
we had to amend that we were not only talking about applications and
librabries in the strict sense of the words, but about clusters of similar
entities. Finally we decided to generate our own words. Naturally, each
improving proposal is welcome ;-) }. More detailedly spoken, we will ask you,
whether the Open Source Software, you want to use, is a software library in
the broadest sense (an includable code snippet, a linkable module or library,
or a loadable plugin), or whether it is an autonomous application or server
which can be executed or processed. In the first case, the answer should be
'it's a snimoli', in the second 'it's a proapse'.
\item Secondly we will consider the \textbf{state of the of the Open Source
Software}: It might be used, as one has got it. Or one can modify it, before
using it. More detailedly spoken, we will ask you, whether you want to leave
the evaluated Open Source Software as you have got it, or whether you want to
modify it before using and/or distributing it to 3rd parties. In the first
case, the answer should be 'unmodified', in the second 'modified'.
\item Thirdly we will consider the \textbf{usage context of the of the Open
Source Software}: On the hand you might use the received Open Source Software
as one of your readily constructed applications. On the other hand you might
construct a larger application based upon the received Open Source, because it
is using it as one of its' components. More detailedly spoken, we will ask
you, whether you are you using the evaluated Open Source Software as an
autonomous piece of software, or whether you are using it in combination
with other components for setting up a larger, more complex piece of software.
\item Fourthly we will consider the \textbf{recipient of the of the Open
Source Software}: Sometimes you might wish to use the received Open
Source Software only for yourself. In other cases you might intend to
hand over the software (also) to other people. More detailedly spoken, we will
ask you, whether you are going to use the evaluated Open Source Software only
for yourself, or whether you plan to (re)distribute it (also) to third
parties,
\item Fifthly and finally we will consider the \textbf{combining mode of the
of the Open Source Software usage}: In this case, we will ask you, whether you
are going to combine the evaluated Open Source Software with other
software components by linking all together statically, by linking them
dynamically, or by textually including (parts of) the Open Source Software
into your larger unit.
\end{itemize}
In the beginning we defined an \emph{Open Source Use Case} as a set of
classified tokens. No we have the following classified tokens:
\begin{itemize}
\item \texttt{type::snimoli} or \texttt{type::proapse}
\item \texttt{state::unmodified} or \texttt{state::modified}
\item \texttt{context::alone} or \texttt{context::combined}
\item \texttt{recipient::4yourself} or \texttt{ecipient::4others}
\item \texttt{mode::statically-linked} or \texttt{mode::dynamically-linked} or
\\ \texttt{mode::textually-included}
\end{itemize}
If we now simply combine all the tokens of all these classes with all the tokens
of the other classes\footnote{in the sense of the cross product
TYPE x STATE x CONTEXT x RECIPIENT x MODE}, we get 2*2*2*3*2 = 48 sets of tokens
or 48 \textit{Open Source Use Cases}. But some of these sets are invalid from
an empirical or logical view. And some of these sets are context sensitive:
Firstly, it makes no sense to ask you whether you are going to combine the
received software with other software components by linking them statically or
dynamically, or by including it textually into a larger unit, if you already
have answered, that the received Open Source Software is a \textit{proapse} or
that it shall be used \textit{alone}: A readily prepared application or server
can't be linked to another application or server, which also contains a
\texttt{main}-function. And using a \textit{proapse} or \textit{snimoli}
\textit{alone} includes that it is used \textit{not in combination} with other
units, simply because they are tokens of the same class.
Secondly: If you already have specified that the used Open Source
Software is a \textit{proapse} - hence an autonomous program, an application,
or a server -, then your answer includes, that the software is used alone and is
not used in combination. But if you have specified that the used Open Source
Software is a \textit{snimoli} - hence a snippet of code, a module, a plugin, or a
librabry -, then it can indeed be used in combination (if it becomes a
component of a constructed larger unit) or be used alone (if it is
'only' re-distributed to 3rd parties).
And thirdly - just the other way round: If you already have specified that the
used Open Source Software is a \textit{snimoli} - hence a snippet of code, a
module, a plugin, or a library -, and that this \textit{snimoli} shall be used
only by yourself (not distributed to other 3rd. parties), then your answer
includes pratically, that this \textit{snimoli} is used in combination. This
conclusion is valid, because if you want to use it in the state \textit{alone},
then you would have a software library on your disc (your are 'using' it for
yourself) without combining it to any other software: hence in this case this
librabry would lie on your disc and nothing more: a senseless use case.
Do you think, this is complicate? So we do. We spent a couple of time to
explain ourselves these constraints. Only when we had transposed all the
combinations and rules into a tree, we got the real insight into situation.
So let us summarize these specifications by two little pictures before we
will specify the real Open Source Use Case Finder:
\section{The OS Use Case Dimensions: Classes and Tokens}
\pstree[treemode=R, levelsep=*0.2, treesep=0.6]{\Toval{tokens}}{
\pstree[]{\Tr{\fbox{type?}}}{
\Toval{proapse}
\Toval{snimoli}
}
\pstree[]{\Tr{\fbox{state?}}}{
\Toval{unmodified}
\Toval{modified}
}
\pstree[]{\Tr{\fbox{context?}}}{
\Toval{alone}
\pstree[]{\Toval{combined}}{
\pstree[]{\Tr{\fbox{mode?}}}{
\Toval{statically linked}
\Toval{dynamically linked}
\Toval{textually included}
}
}
}
\pstree[]{\Tr{\fbox{recipient?}}}{
\Toval{4yourself}
\Toval{4others}
}
}
\section{The OS Use Case Taxonomy}
\tiny
\pstree[treemode=R,levelsep=*0.2, treesep=0.2]{\Toval{OSS}}{
\pstree[]{\Tr{\fbox{type?}}}{
\pstree[]{\Tr{\parbox{4em}{\texttt{\{\underline{proapse}\}}}}}{
\pstree[]{\Tr{\fbox{state?}}}{
\pstree[]{\Tr{\parbox{5.2em}{
\texttt{\{proapse,\\
\hspace*{0.5em}\underline{unmodified}\}}}}}{
\pstree[]{\Tr{\fbox{context?}}}{
\pstree[]{\Tr{\parbox{5.2em}{
\texttt{\{proapse,\\
\hspace*{0.5em}unmodified,\\
\hspace*{0.5em}\underline{alone}\}}}}}{
\pstree[]{\Tr{\fbox{recipient?}}}{
\pstree[]{\Toval{\bfseries{OSUC-01}}}{
\Tr{\parbox{5.2em}{
\texttt{\{proapse,\\
\hspace*{0.5em}unmodified,\\
\hspace*{0.5em}alone,\\
\hspace*{0.5em}\underline{4yourself}\}}}}
}
\pstree[]{\Toval{\bfseries{OSUC-02}}}{
\Tr{\parbox{5.2em}{
\texttt{\{proapse,\\
\hspace*{0.5em}unmodified,\\
\hspace*{0.5em}alone,\\
\hspace*{0.5em}\underline{4others}\}}}}
}
}
}
\pstree[]{\Tr{\parbox{5.4em}{
\texttt{\{proapse,\\
\hspace*{0.5em}unmodified,\\
\hspace*{0.5em}\underline{combined}
\bfseries{\lightning}\}}}}}{
\Tr{$\varnothing$}
}
}
}
\pstree[]{\Tr{\parbox{5.2em}{
\texttt{\{proapse,\\
\hspace*{0.5em}\underline{modified}\}}}}}{
\pstree[]{\Tr{\fbox{context?}}}{
\pstree[]{\Tr{\parbox{5.2em}{
\texttt{\{proapse,\\
\hspace*{0.5em}modified,\\
\hspace*{0.5em}\underline{alone}\}}}}}{
\pstree[]{\Tr{\fbox{recipient?}}}{
\pstree[]{\Toval{\bfseries{OSUC-03}}}{
\Tr{\parbox{5.2em}{
\texttt{\{proapse,\\
\hspace*{0.5em}modified,\\
\hspace*{0.5em}alone,\\
\hspace*{0.5em}\underline{4yourself}\}}}}
}
\pstree[]{\Toval{\bfseries{OSUC-04}}}{
\Tr{\parbox{5.2em}{
\texttt{\{proapse,\\
\hspace*{0.5em}modified,\\
\hspace*{0.5em}alone,\\
\hspace*{0.5em}\underline{4others}\}}}}
}
}
}
\pstree[]{\Tr{\parbox{5.4em}{
\texttt{\{proapse,\\
\hspace*{0.5em}modified,\\
\hspace*{0.5em}\underline{combined}
\bfseries{\lightning}\}}}}}{
\Tr{$\varnothing$}
}
}
}
}
}
\pstree[]{\Tr{\parbox{4em}{\texttt{\{\underline{snimoli}\}}}}}{
\pstree[]{\Tr{\fbox{state?}}}{
\pstree[]{\Tr{\parbox{5.2em}{
\texttt{\{snimoli,\\
\hspace*{0.5em}\underline{unmodified}\}}}}}{
\pstree[]{\Tr{\fbox{context?}}}{
\pstree[]{\Tr{\parbox{5.2em}{
\texttt{\{snimoli,\\
\hspace*{0.5em}unmodified,\\
\hspace*{0.5em}\underline{alone}\}}}}}{
\pstree[]{\Tr{\fbox{recipient?}}}{
\pstree[]{
\Tr{\parbox{5.8em}{
\texttt{\{snimoli,\\
\hspace*{0.5em}unmodified,\\
\hspace*{0.5em}alone,\\
\hspace*{0.5em}\underline{4yourself}
\bfseries{\lightning}\}}}}
}{\Tr{$\varnothing$}}
\pstree[]{\Toval{\bfseries{OSUC-05}}}{
\Tr{\parbox{5.2em}{
\texttt{\{snimoli,\\
\hspace*{0.5em}unmodified,\\
\hspace*{0.5em}alone,\\
\hspace*{0.5em}\underline{4others}\}}}}
}
}
}
\pstree[]{\Tr{\parbox{5.2em}{
\texttt{\{snimoli,\\
\hspace*{0.5em}unmodified,\\
\hspace*{0.5em}\underline{combined}\}}}}}{
\pstree[]{\Tr{\fbox{recipient?}}}{
\pstree[]{\Toval{\bfseries{OSUC-06}}}{
\pstree[]{\Tr{\parbox{5.2em}{
\texttt{\{snimoli,\\
\hspace*{0.5em}unmodified,\\
\hspace*{0.5em}combined,\\
\hspace*{0.5em}\underline{4yourself}\}}}}}{
\pstree[]{\Tr{\fbox{$\cup$ mode?}}}{
\Tr{\parbox{5.6em}{\underline{\textit{OSUC-06a}}\\
\texttt{\{statically\\
\hspace*{0.5em}linked\}}}}
\Tr{\parbox{5.6em}{\underline{\textit{OSUC-06a}}\\
\texttt{\{dynamically\\
\hspace*{0.5em}linked\}}}}
\Tr{\parbox{5.6em}{\underline{\textit{OSUC-06a}}\\
\texttt{\{textually\\
\hspace*{0.5em}included\}}}}
}
}
}
\pstree[]{\Toval{\bfseries{OSUC-07}}}{
\pstree[]{\Tr{\parbox{5.2em}{
\texttt{\{snimoli,\\
\hspace*{0.5em}unmodified,\\
\hspace*{0.5em}combined,\\
\hspace*{0.5em}\underline{4others}\}}}}}{
\pstree[]{\Tr{\fbox{$\cup$ mode?}}}{
\Tr{\parbox{5.6em}{\underline{\textit{OSUC-07a}}\\
\texttt{\{statically\\
\hspace*{0.5em}linked\}}}}
\Tr{\parbox{5.26em}{\underline{\textit{OSUC-07a}}\\
\texttt{\{dynamically\\
\hspace*{0.5em}linked\}}}}
\Tr{\parbox{5.6em}{\underline{\textit{OSUC-07a}}\\
\texttt{\{textually\\
\hspace*{0.5em}included\}}}}
}
}
}
}
}
}
}
\pstree[]{\Tr{\parbox{5.2em}{
\texttt{\{snimoli,\\
\hspace*{0.5em}\underline{modified}\}}}}}{
\pstree[]{\Tr{\fbox{context?}}}{
\pstree[]{\Tr{\parbox{5.2em}{
\texttt{\{snimoli,\\
\hspace*{0.5em}modified,\\
\hspace*{0.5em}\underline{alone}\}}}}}{
\pstree[]{\Tr{\fbox{recipient?}}}{
\pstree[]{
\Tr{\parbox{5.8em}{
\texttt{\{snimoli,\\
\hspace*{0.5em}modified,\\
\hspace*{0.5em}alone,\\
\hspace*{0.5em}\underline{4yourself}
\bfseries{\lightning}\}}}}
}{\Tr{$\varnothing$}}
\pstree[]{\Toval{\bfseries{OSUC-08}}}{
\Tr{\parbox{5.2em}{
\texttt{\{snimoli,\\
\hspace*{0.5em}modified,\\
\hspace*{0.5em}alone,\\
\hspace*{0.5em}\underline{4others}\}}}}
}
}
}
\pstree[]{\Tr{\parbox{5.2em}{
\texttt{\{snimoli,\\
\hspace*{0.5em}modified,\\
\hspace*{0.5em}\underline{combined}\}}}}}{
\pstree[]{\Tr{\fbox{recipient?}}}{
\pstree[]{\Toval{\bfseries{OSUC-09}}}{
\pstree[]{\Tr{\parbox{5.2em}{
\texttt{\{snimoli,\\
\hspace*{0.5em}modified,\\
\hspace*{0.5em}combined,\\
\hspace*{0.5em}\underline{4yourself}\}}}}}{
\pstree[]{\Tr{\fbox{$\cup$ mode?}}}{
\Tr{\parbox{5.6em}{\underline{\textit{OSUC-09a}}\\
\texttt{\{statically\\
\hspace*{0.5em}linked\}}}}
\Tr{\parbox{5.6em}{\underline{\textit{OSUC-09a}}\\
\texttt{\{dynamically\\
\hspace*{0.5em}linked\}}}}
\Tr{\parbox{5.6em}{\underline{\textit{OSUC-09a}}\\
\texttt{\{textually\\
\hspace*{0.5em}included\}}}}
}
}
}
\pstree[]{\Toval{\bfseries{OSUC-10}}}{
\pstree[]{\Tr{\parbox{5.2em}{
\texttt{\{snimoli,\\
\hspace*{0.5em}modified,\\
\hspace*{0.5em}combined,\\
\hspace*{0.5em}\underline{4others}\}}}}}{
\pstree[]{\Tr{\fbox{$\cup$ mode?}}}{
\Tr{\parbox{5.6em}{\underline{\textit{OSUC-10a}}\\
\texttt{\{statically\\
\hspace*{0.5em}linked\}}}}
\Tr{\parbox{5.6em}{\underline{\textit{OSUC-10b}}\\
\texttt{\{dynamically\\
\hspace*{0.5em}linked\}}}}
\Tr{\parbox{5.2em}{\underline{\textit{OSUC-10c}}\\
\texttt{\{textually\\
\hspace*{0.5em}included\}}}}
}
}
}
}
}
%%
% \pstree[]{\Tr{\parbox{5.2em}{
% \texttt{\{snimoli!,\\
% \hspace*{0.5em}modified,\\
% \hspace*{0.5em}\underline{combined}\}}}}}{
% \pstree[]{\Tr{\fbox{recipient?}}}{
% \Tr{\parbox{5.2em}{
% \texttt{\{snimoli,\\
% \hspace*{0.5em}modified,\\
% \hspace*{0.5em}combined,\\
% \hspace*{0.5em}\underline{4yourself}\}}}}
% \Tr{\parbox{5.2em}{
% \texttt{\{snimoli,\\
% \hspace*{0.5em}modified,\\
% \hspace*{0.5em}combined,\\
% \hspace*{0.5em}\underline{4others}\}}}}
% }
% }
}
}
}
}
}
}
\normalsize{}
%\bibliography{../../../bibfiles/oscResourcesEn}