Mercurial > hg > toolbox
comparison toolbox-blog.txt @ 2:458f2c48ecce
more docs
author | Jeff Hammel <k0scist@gmail.com> |
---|---|
date | Tue, 19 May 2015 20:08:52 -0700 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
1:1047e058103d | 2:458f2c48ecce |
---|---|
1 Toolbox deployed | |
2 | |
3 Mozilla has a lot of software tools for a wide class of problems we | |
4 typically encounter. We're self-motivated people: when we encounter a | |
5 problem, sometimes we look or ask around to see if anyone else has did | |
6 anything similar, but if something doesn't turn up (quickly) we'll | |
7 write it ourselves. | |
8 | |
9 This is pretty much how (the functional parts of) the Open Source | |
10 world works. It goes hand in hand with the bazaar model: | |
11 http://en.wikipedia.org/wiki/The_Cathedral_and_the_Bazaar . The | |
12 strength of the bazaar model is robustness: the process cannot be | |
13 stopped by any particular point of failure. You get a robust | |
14 ecosystem of software that evolves in a manner parallel to biological | |
15 life. | |
16 | |
17 The weakness of the bazaar approach, especially when considered as | |
18 part of an economic system, is that effort is duplicated. The Open | |
19 Source revolution has made the greatest gains in proliferation: number | |
20 of languages, number of software projects, and ability to easily fork | |
21 existing code using distributed version control. But, just as the | |
22 federated web is harder to achieve than information silos, harvesting | |
23 and consolidating the vast richness of software is harder than its | |
24 proliferation and not merely for technical reasons. | |
25 | |
26 Proliferation was largely a technological problem. This is best | |
27 illustrated by DVCS. Consider the contrast between forking and | |
28 merging. With centralized version control, both forking and merging | |
29 are hard. With DVCS, forking is now trivial. But despite the fact | |
30 that better tools have been introduced (which actually largely don't | |
31 have anything to do per se with DVCS), merging is a human problem. | |
32 Regardless of the amount of cleverness and hours required, technical | |
33 problems are solvable and will be solved. Human problems can't be | |
34 solved simply by throwing resources at them. | |
35 | |
36 Information curation will be the problem of this dawning decade. | |
37 Using the internet as the predominent informatic presence in peoples' | |
38 lives, the question has gone from "can this be done?" to "how do I | |
39 figure out how to do this?" (shadowed only by the overarching | |
40 question, "why am I doing this?"). Programming has lost its position to | |
41 UI/UX design. | |
42 | |
43 Toolbox exists as a prototype to aid in unmixing the software tool | |
44 soup. It carries two related purposes: | |
45 | |
46 1. To give people a place to put and find software tools of a wide | |
47 variety of types, purpose, and sources. To this end, a tool should | |
48 have a name, a description, a URL, and appropriate metadata. Mozilla | |
49 tools live in any number of places: in user repos, in shared repos, as | |
50 web apps, on github, or at any number of off-site hosts. Often, for | |
51 reasons of convenience and legacy, a useful tool exists packaged [*] | |
52 as part of another tool or other piece of software. In this sense, | |
53 toolbox is a software index, similar to PyPI or softpedia. | |
54 | |
55 2. To give people a tool to curate the existing Mozilla tools towards | |
56 the end of consolidating similarly purposed code towards discrete | |
57 high-quality pieces of software. Often, as explained above, code is | |
58 duplicated. This is done because either an appropriate existing tool | |
59 could not be found (in an expedient manner) or existing tools were not | |
60 appropriate to the task at hand. Toolbox, as a software index, should | |
61 mostly solve the former case given proper participation. | |
62 If an existing tool is found to be unsuitable for the task at hand, | |
63 this can be for a few reasons: | |
64 | |
65 - no such software exists to solve the problem. In this minority case, | |
66 there is nothing to do but to write the software or reconsider what | |
67 you're actually trying to do | |
68 | |
69 - there is software that could be built on, but it is not an expedient | |
70 solution to the problem. This again can be for several reasons: | |
71 | |
72 * the modification to the upstream project is easily doable and | |
73 expedient, but a lengthy review/approval process hampers is | |
74 practicability to a solution within the time frame desired. This | |
75 is essentially a problem in the area of deployment/packaging | |
76 since, in the open source model, the upstream code is freely | |
77 available, but concerns external to the code itself | |
78 (i.e. distributability) require more than just the code | |
79 modifications for continuation of an operable software process [**]. | |
80 In this case, an appropriate methodology is as follows: | |
81 | |
82 A. The issue is ticketed with the upstream project with the | |
83 appropriate patch. | |
84 | |
85 B. A vendor branch is created of the upstream project with the fix | |
86 applied. | |
87 | |
88 C. Relevent packaging/deploy systems are updated to point to the | |
89 vendor branch instead of the upstream project. | |
90 | |
91 D. Changes to the upstream project are propagated (either manually | |
92 or automatically) to the vendor branch. | |
93 | |
94 E. The change is accepted upstream. If there are no other | |
95 discrepencies between the vendor branch and the origin, the vendor | |
96 branch is deleted and all references point to the origin. If there | |
97 are discrepencies, the particular upstreamed change is removed | |
98 from the vendor branch and fetched from upstream. | |
99 | |
100 While none of this is hard, it requires time, management | |
101 (i.e. attention), and adequate tools. | |
102 | |
103 * the modification won't be accepted upstream. This is similar to | |
104 the above case, except the vendor branch will never (conceivably) | |
105 go away. It is usually not possible to distinguish the case up | |
106 front or in any predictable time-frame. It may also be | |
107 conceivable to permanantly fork the project; that is, the vendor | |
108 branch becomes a first-class resource (a project of its own right) | |
109 versus a temporary necessity that should not (normally) be | |
110 consumed downstream. | |
111 | |
112 * The modification to the code is hard in terms of required time to | |
113 invest, required maintenance, and/or required attention to | |
114 complexity. In general, the required work and maintenance will be | |
115 unknown whereas the time to measure from nothing to a working | |
116 solution may be more estimable. | |
117 | |
118 - there are one or more softwares that nearly do what you desire, but | |
119 not quite. This is often due to a misclarity of intent of the | |
120 software formulators, or software that may have originally had a | |
121 clear intent but that has been adopted to fulfill more nebulous | |
122 purposes. | |
123 | |
124 The above presents a best-practices scenario. In order for open | |
125 source, as a global village, to sustain and flourish, the strengths of | |
126 open source -- the unconstrained flow of information, the championship | |
127 of the individual, cooperative advantage, and community ethics -- must | |
128 be utilized and best practices must be achieved as the flowerbed is | |
129 shared with corporate interests to which the open-source ecosystem, | |
130 while competition for market share mandating utilization via its | |
131 (often) excellent code base, the proliferation of potentially | |
132 non-moneyed (and non money-oriented) alternatives represents a direct | |
133 threat to the power structure[***]. | |
134 | |
135 More directly, effort must be made towards coherency and cohesiveness | |
136 of open source. How does one bring order to the bazaar?[****] One | |
137 must begin with an understanding of how the bazaar works. Open source | |
138 programmers are, by inspection, largely good citizens (after a | |
139 fashion). They allow consumption and distribution of their work, | |
140 their source code, without exploit it for a capital | |
141 advantage[*****]. If the process of organizing is fitted organically | |
142 into their existing workflow, open source programmers will | |
143 organize. If the practical advantage to themselves and to the system | |
144 as a whole of organizing is perceived, a coder will go to the | |
145 (non-over-burdening) required effort in order to make this so. When | |
146 first exposed to tools such as issue trackers, VCS, automated testing | |
147 (e.g.), programmers often first resist adoption of these technologies | |
148 until a case clearly manifests that the tool in question does (or more | |
149 often, would have) saved considerable time, effort, and/or | |
150 status. Then the developer uses the tool and will consider anyone who, | |
151 as s/he previously did, does not naive. This pointing of arrows is an | |
152 example of how the bazaar works: individuals are agents and operators of | |
153 information, but the transfer of information, which is in what makes | |
154 information valuable, is a transpersonal process. You do not bring | |
155 order to the bazaar; you plant the seeds and nurture towards a | |
156 bountiful harvest. | |
157 | |
158 ------ | |
159 | |
160 [*] using the term loosely | |
161 | |
162 [**] For instance, consider a software project requiring a one line | |
163 modification of gcc to build. Assuming even that this one line is a | |
164 proper and non-contraversial fix for a gcc bug, gcc releases are | |
165 heavily checked for stability and released only periodically, so the | |
166 turnaround even given a swift review process will be long and also in | |
167 general unknowably long. The software project in question can, as a | |
168 patchwork fix, require its developers to apply the patch to their own | |
169 gcc source and build their own compiler to continue project | |
170 development. However, this raises the bar to entry quite a bit, | |
171 skill-wise, time-wise, and psychologically. In addition, while | |
172 previously the project could require a particular OOTB version of gcc, | |
173 following the patch requirement, precise build instructions must be | |
174 provided and it will become difficult to diagnose what is going wrong | |
175 with particular compile errors. All legacy developer environments | |
176 will be rendered non-working and all developers will have to apply the | |
177 same additional work to get a good development environment going | |
178 forward unless tools are provided. | |
179 | |
180 [***] Open source is not unique in this particular position. In fact, | |
181 the anti-marketing market is a large market. Consider sales of Che | |
182 Guevera t-shirts, feminist literature from the traditional publishing | |
183 oligarchy, and Hollywood's marketing of the underdog. In all of these | |
184 cases, that which is being peddled is -- symbolically and sometimes | |
185 literally -- in direct philosophic conflict with the marketeer. The | |
186 market, however, cares only to the degree that this is | |
187 perceived as an existential threat (which is usually not at all), and | |
188 subversion may be safely sold and counted only in terms of dollars. If | |
189 the Recording Industry Association of America ever needed a slush | |
190 fund, it could easily gain an buffer by selling plain white cotton | |
191 T-shirts emblazoned with the logo: "Destroy the RIAA". | |
192 | |
193 [****] The question itself is intentionally flawed | |
194 | |
195 [*****] There is the case where (a) programmer(s) intentionally | |
196 (conciouslly or subconciously) will set up a consulting firm | |
197 installing overly complex house-ware, charging for their expertise, | |
198 and then running. While this does happen, it is not a major factor in | |
199 open source at large. |