diff toolbox-blog.txt @ 2:458f2c48ecce

more docs
author Jeff Hammel <k0scist@gmail.com>
date Tue, 19 May 2015 20:08:52 -0700
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/toolbox-blog.txt	Tue May 19 20:08:52 2015 -0700
@@ -0,0 +1,199 @@
+Toolbox deployed
+
+Mozilla has a lot of software tools for a wide class of problems we
+typically encounter.  We're self-motivated people: when we encounter a
+problem, sometimes we look or ask around to see if anyone else has did
+anything similar, but if something doesn't turn up (quickly) we'll
+write it ourselves.
+
+This is pretty much how (the functional parts of) the Open Source
+world works.  It goes hand in hand with the bazaar model:
+http://en.wikipedia.org/wiki/The_Cathedral_and_the_Bazaar . The
+strength of the bazaar model is robustness: the process cannot be
+stopped by any particular point of failure.  You get a robust
+ecosystem of software that evolves in a manner parallel to biological
+life.
+
+The weakness of the bazaar approach, especially when considered as
+part of an economic system, is that effort is duplicated.  The Open
+Source revolution has made the greatest gains in proliferation: number
+of languages, number of software projects, and ability to easily fork
+existing code using distributed version control. But, just as the
+federated web is harder to achieve than information silos, harvesting
+and consolidating the vast richness of software is harder than its
+proliferation and not merely for technical reasons.
+
+Proliferation was largely a technological problem.  This is best
+illustrated by DVCS. Consider the contrast between forking and
+merging. With centralized version control, both forking and merging
+are hard. With DVCS, forking is now trivial.  But despite the fact
+that better tools have been introduced (which actually largely don't
+have anything to do per se with DVCS), merging is a human problem.
+Regardless of the amount of cleverness and hours required, technical
+problems are solvable and will be solved.  Human problems can't be
+solved simply by throwing resources at them.
+
+Information curation will be the problem of this dawning decade.
+Using the internet as the predominent informatic presence in peoples'
+lives, the question has gone from "can this be done?" to "how do I
+figure out how to do this?" (shadowed only by the overarching
+question, "why am I doing this?"). Programming has lost its position to
+UI/UX design.
+
+Toolbox exists as a prototype to aid in unmixing the software tool
+soup. It carries two related purposes:
+
+1. To give people a place to put and find software tools of a wide
+variety of types, purpose, and sources. To this end, a tool should
+have a name, a description, a URL, and appropriate metadata. Mozilla
+tools live in any number of places: in user repos, in shared repos, as
+web apps, on github, or at any number of off-site hosts.  Often, for
+reasons of convenience and legacy, a useful tool exists packaged [*]
+as part of another tool or other piece of software.  In this sense,
+toolbox is a software index, similar to PyPI or softpedia.
+
+2. To give people a tool to curate the existing Mozilla tools towards
+the end of consolidating similarly purposed code towards discrete
+high-quality pieces of software. Often, as explained above, code is
+duplicated. This is done because either an appropriate existing tool
+could not be found (in an expedient manner) or existing tools were not
+appropriate to the task at hand. Toolbox, as a software index, should
+mostly solve the former case given proper participation.
+If an existing tool is found to be unsuitable for the task at hand,
+this can be for a few reasons:
+
+- no such software exists to solve the problem. In this minority case,
+  there is nothing to do but to write the software or reconsider what
+  you're actually trying to do
+
+- there is software that could be built on, but it is not an expedient
+  solution to the problem.  This again can be for several reasons:
+
+  * the modification to the upstream project is easily doable and
+    expedient, but a lengthy review/approval process hampers is
+    practicability to a solution within the time frame desired. This
+    is essentially a problem in the area of deployment/packaging
+    since, in the open source model, the upstream code is freely
+    available, but concerns external to the code itself
+    (i.e. distributability) require more than just the code
+    modifications for continuation of an operable software process [**].
+    In this case, an appropriate methodology is as follows:
+
+    A. The issue is ticketed with the upstream project with the
+    appropriate patch.
+
+    B. A vendor branch is created of the upstream project with the fix
+    applied.
+
+    C. Relevent packaging/deploy systems are updated to point to the
+    vendor branch instead of the upstream project.
+
+    D. Changes to the upstream project are propagated (either manually
+    or automatically) to the vendor branch.
+
+    E. The change is accepted upstream.  If there are no other
+    discrepencies between the vendor branch and the origin, the vendor
+    branch is deleted and all references point to the origin. If there
+    are discrepencies, the particular upstreamed change is removed
+    from the vendor branch and fetched from upstream.
+
+    While none of this is hard, it requires time, management
+    (i.e. attention), and adequate tools.
+
+  * the modification won't be accepted upstream.  This is similar to
+    the above case, except the vendor branch will never (conceivably)
+    go away.  It is usually not possible to distinguish the case up
+    front or in any predictable time-frame.  It may also be
+    conceivable to permanantly fork the project; that is, the vendor
+    branch becomes a first-class resource (a project of its own right)
+    versus a temporary necessity that should not (normally) be
+    consumed downstream.
+
+  * The modification to the code is hard in terms of required time to
+    invest, required maintenance, and/or required attention to
+    complexity. In general, the required work and maintenance will be
+    unknown whereas the time to measure from nothing to a working
+    solution may be more estimable.
+
+- there are one or more softwares that nearly do what you desire, but
+  not quite.  This is often due to a misclarity of intent of the
+  software formulators, or software that may have originally had a
+  clear intent but that has been adopted to fulfill more nebulous
+  purposes. 
+
+The above presents a best-practices scenario.  In order for open
+source, as a global village, to sustain and flourish, the strengths of
+open source -- the unconstrained flow of information, the championship
+of the individual, cooperative advantage, and community ethics -- must
+be utilized and best practices must be achieved as the flowerbed is
+shared with corporate interests to which the open-source ecosystem,
+while competition for market share mandating utilization via its
+(often) excellent code base, the proliferation of potentially
+non-moneyed (and non money-oriented) alternatives represents a direct
+threat to the power structure[***].
+
+More directly, effort must be made towards coherency and cohesiveness
+of open source.  How does one bring order to the bazaar?[****] One
+must begin with an understanding of how the bazaar works.  Open source
+programmers are, by inspection, largely good citizens (after a
+fashion).  They allow consumption and distribution of their work,
+their source code, without exploit it for a capital
+advantage[*****]. If the process of organizing is fitted organically
+into their existing workflow, open source programmers will
+organize. If the practical advantage to themselves and to the system
+as a whole of organizing is perceived, a coder will go to the 
+(non-over-burdening) required effort in order to make this so. When
+first exposed to tools such as issue trackers, VCS, automated testing
+(e.g.), programmers often first resist adoption of these technologies
+until a case clearly manifests that the tool in question does (or more
+often, would have) saved considerable time, effort, and/or
+status. Then the developer uses the tool and will consider anyone who,
+as s/he previously did, does not naive. This pointing of arrows is an
+example of how the bazaar works: individuals are agents and operators of
+information, but the transfer of information, which is in what makes
+information valuable, is a transpersonal process.  You do not bring
+order to the bazaar; you plant the seeds and nurture towards a
+bountiful harvest.
+
+------
+
+[*] using the term loosely
+
+[**] For instance, consider a software project requiring a one line
+modification of gcc to build.  Assuming even that this one line is a
+proper and non-contraversial fix for a gcc bug, gcc releases are
+heavily checked for stability and released only periodically, so the
+turnaround even given a swift review process will be long and also in
+general unknowably long. The software project in question can, as a
+patchwork fix, require its developers to apply the patch to their own
+gcc source and build their own compiler to continue project
+development.  However, this raises the bar to entry quite a bit,
+skill-wise, time-wise, and psychologically. In addition, while
+previously the project could require a particular OOTB version of gcc,
+following the patch requirement, precise build instructions must be
+provided and it will become difficult to diagnose what is going wrong
+with particular compile errors.  All legacy developer environments
+will be rendered non-working and all developers will have to apply the
+same additional work to get a good development environment going
+forward unless tools are provided.
+
+[***] Open source is not unique in this particular position.  In fact,
+the anti-marketing market is a large market.  Consider sales of Che
+Guevera t-shirts, feminist literature from the traditional publishing
+oligarchy, and Hollywood's marketing of the underdog.  In all of these
+cases, that which is being peddled is -- symbolically and sometimes
+literally -- in direct philosophic conflict with the marketeer. The
+market, however, cares only to the degree that this is
+perceived as an existential threat (which is usually not at all), and
+subversion may be safely sold and counted only in terms of dollars. If
+the Recording Industry Association of America ever needed a slush
+fund, it could easily gain an buffer by selling plain white cotton
+T-shirts emblazoned with the logo: "Destroy the RIAA".
+
+[****] The question itself is intentionally flawed
+
+[*****] There is the case where (a) programmer(s) intentionally
+(conciouslly or subconciously) will set up a consulting firm
+installing overly complex house-ware, charging for their expertise,
+and then running.  While this does happen, it is not a major factor in
+open source at large.