From 8c899a01c80fdceab395e5c11389ca8334c67864 Mon Sep 17 00:00:00 2001 From: Blaise Thompson Date: Mon, 26 Mar 2018 19:52:39 -0500 Subject: 2018-01-26 19:52 --- processing/chapter.tex | 96 +++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 87 insertions(+), 9 deletions(-) diff --git a/processing/chapter.tex b/processing/chapter.tex index 4f8f029..a32f170 100644 --- a/processing/chapter.tex +++ b/processing/chapter.tex @@ -795,7 +795,7 @@ It is also not a method of the \python{Data} class, it is a bare function. % Join accepts multiple data objects and attempts to join them together. % To do this, the variable and channel names must agree. % -% TODO: join example +% TODO: join example (from Darien on slack) \section{Fitting} % ============================================================================== @@ -832,20 +832,98 @@ Can be used directly... Loops through... Returns model and outs... -\section{Construction and maintenance} % ========================================================= +\section{Construction, maintenance, and distribution} % ========================================== + +While WrightTools has already been useful to the work done in the WrightGroup over the last 3 +years, the true potential of the package is in potential future uses. % +WrightTools is designed to be extended and continuously enhanced to serve an ever-wider set of +users and spectroscopies. % +Despite it's name, WrightTools is built to be used even by those outside of the Wright Group. % +Currently WrightTools may be only 75\% of what a typical multidimensional spectroscopist needs, but +if those scientists work to enhance the package with what \emph{they} need, they may also solve +problems for others such that the usefulness of the software gradually increases. % + +In order for this dream to come true, WrightTools must be constructed and maintained by +collaborative tools such that users feel comfortable contributing to future enhancements. % +It has not been easy to build this software as a group of 3 to 5 contributors, and the coordination +problems will be harder as more users and developers join. % +To this end, the following section discusses strategies for keeping WrightTools collaborative and +useful. % + +\subsection{Licensing} % ------------------------------------------------------------------------ + +In order to even talk about collaborative development, one must at least have an open source +license. % +According to US copyright law, software is fully copyright protected by default. % TODO: cite +Those writing software must explicitly license their project in order to ensure that users have +basic rights to copy edit and distribute code. % +A whole set of licenses have been written to use for this purpose. % +Briefly, strong copyleft licenses do not allow for software to be modified or enhancements without +sharing those enhancements under the same licenses. % +These ``viral'' licenses are meant to force companies and individuals who would otherwise not open +source to share their code. % +The strongest copyleft licenses do not even allow others to link against the licensed software +without themselves being copyleft. % +This strategy has been moderately successful, but is becoming less popular. % TODO: cite +Open source licenses are less opinionated, merely granting users the right to copy, modify, +distribute, and publish code without restriction except perhaps credit to the source. % + +% TODO: link GPL, LGPL etc + +WrightTools is MIT licensed (otherwise called the Expat license). % +This license is incredibly permissive and puts as few restrictions as possible on the end users. % +Because the license is short, it is reproduced below. % -\subsection{Collaborative development} % --------------------------------------------------------- +\begin{dquote} + The MIT License (MIT) -\subsection{Version control} % ------------------------------------------------------------------- + Copyright (c) 2016-2018 WrightTools Developers. -\subsection{Unit tests} % ------------------------------------------------------------------------ + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT + NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +\end{dquote} + +As an aside, since Python is an interpreted language the source code of a library \emph{must} be +distributed for that library to work. % +In this way, ``closed-source Python'' is a kind of oxymoron. % +However many Python libraries end up being interfaces to compiled code that could in theory be +closed-source. % +The Scientific Python Stack have MIT-compatible licenses, including BSD-like licenses. % + +\subsection{Distribution} % ---------------------------------------------------------------------- -\section{Distribution and licensing} \label{pro:sec:disbribution} % ============================== +How does WrightTools get onto end-users machines? % +Distribution... -WrightTools is MIT licensed. % +WrightTools is distributed on PyPI and conda-forge. % -WrightTools is distributed on PyPI and conda-forge. +WrightTools uses semantic versioning. % + +% TODO: citations to WrightTools on PyPI and conda-forge + +\subsection{Collaborative development} % --------------------------------------------------------- + +Git... + +\subsection{Unit tests} % ------------------------------------------------------------------------ + +Unit testing... \section{Future directions} % ==================================================================== -Single variable decomposition. \ No newline at end of file +Single variable decomposition. % + +Usage in next-generation simulation packages. % \ No newline at end of file -- cgit v1.2.3