# dtag-dbu/oslic

### Subversion checkout URL

You can clone with HTTPS or Subversion.

Fetching contributors…

Cannot retrieve contributors at this time

471 lines (431 sloc) 24.015 kb
 % 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}
Something went wrong with that request. Please try again.