I think software and most other engineering products need a much
higher level of coherence than artefacts that are consumed by humans,
like Wikipedia. Wikipedia is full of inconsistencies and even
contradictions. When I browse Wikipedia, I often stumble upon
statements on one page that are contradicted by another page. That's
not a big deal - sometimes I can easily tell which statement is
correct (and fix the other pages), sometimes I can't, but either way,
I am not a computer: I don't follow these statements blindly. In a
computer program, such inconsistencies would lead to erratic behavior,
i.e., bugs. This means that a completely open wiki process will not
work for software.

In a way, a lot of open source software is developed in a restricted
wiki way: someone proposes a change, but before it is merged, it is
checked by people who (hopefully) know all the nooks and crannies of
the existing code. A bit like edit-protected pages in Wikipedia:
everyone can propose changes on the talk page, but only admins can
actually make these changes.

Christopher

On 7 July 2013 04:16, Michael Hale <[email protected]> wrote:
> I'm glad you mentioned that the same issue applies to electronics. I suppose
> I could have just referred to Moore's law instead of the relatively recent
> increasing size of datacenters. I like asking computers to work hard, but I
> find it hard to think of valuable things for them to do. You can play a new
> game or donate time to BOINC, but not very many great games are produced
> each year and BOINC typically runs algorithms that benefit humanity but not
> specifically you. For example, my genetics tests say I have an increased
> risk of prostate cancer, so I'd like to be able to tell Folding@home to
> focus on the proteins that are most relevant for the diseases I'm most
> likely to get.
>
> I still have hope that a more wiki-like model could work for developing
> software libraries though. The problems of technical design in software and
> hardware are similar, but software can be developed more fluidly and rapidly
> due to the lower barrier to entry and non-existent manufacturing costs.
> Essentially all electronics are designed and simulated with software prior
> to constructing physical prototypes these days.
>
> I've thought about the integration problem some, but I haven't ironed out
> how it would all work yet. I think standard object-oriented programming and
> modeling techniques have been absorbed by enough programmers that it might
> be worth a shot though. Essentially, each article would have a standard
> class and supporting data structures or file formats for the inputs and
> outputs of its algorithms. It would be like the typical flow chart or visual
> programming languages you can use with libraries like Modelica, but on a
> larger scale and the formats would often be more complex. So, like, you
> would have a class representing a cloud, with flags for different
> representations (density values in a cubic grid, collections of point
> particles, polygonal shape approximations, etc) which are used for different
> algorithms. So then you would have code that can convert between all of the
> representations, code for generating random clouds (with potentially lots of
> optional parameters to specify atmospheric conditions), code for outputting
> images of the generated clouds in different styles, and algorithms for
> manipulating them through time. Then if I wanted to see the effects on a
> specific cloud I've made drifting over the ocean in different atmospheric
> conditions, I could grab the code to instantiate 3D Euclidean space with a
> virtual camera, add some gravity, add some ground, add some water, add an
> atmosphere, add my cloud, and then simulate it with adjustable parameters
> for the accuracy and speed of computation. Now, there are a lot of details
> that leaves out, but I don't know of another way to easily mix capabilities
> from high-end graphics software and various specialized simulation
> algorithms in lots of ways. Graphics software typically gives you some
> simulation capabilities, and simulation software typically gives you some
> graphics functionality, but I want lots of both.
>
> I think having more semantic annotation tools will be great, but I don't
> spend most of my time doing searches. There is an astounding amount of
> information, data, and media on the internet, but it's not hard to find the
> edge if you really try. It's pretty crazy if you search for images of "blue
> bear" how many results come up, but if you search for "blue bear and green
> gorilla" you don't get anything useful. Then you get to face the craziness
> of how many options you have for combining a picture of a blue bear and a
> different picture of a green gorilla into one picture. I think it's
> interesting what they are trying with the Wolfram Alpha website, but they
> will always have to limit the time of the computations they allow you to do
> on their servers, so that's why I think we need better libraries to more
> easily program the computers we have direct control over.
>
> ________________________________
> From: [email protected]
> Date: Sat, 6 Jul 2013 17:49:41 -0400
> To: [email protected]
> Subject: Re: [Wikidata-l] Accelerating software innovation with Wikidata and
> improved Wikicode
>
>
> Thanks for sharing your thoughts Michael, it is also something that has been
> bothering me for a while and not only in programming, also in other
> technical domains like electronics.
>
> In my opinion, the reason why programming (or technical design in general)
> couldn't follow the wiki world is because it has some structural differences
> that require a different approach. To start with, there is the problem of
> integration, where code solutions are usually part of a larger system and
> they cannot be isolated or combined with others blocks as easily as you
> would combine text fragments like in Wikipedia. I'm sure that all those 10
> open file examples have some particularities about the operative system,
> method, supporting libraries, etc.
> The part of scavenging and gluing will be always there unless you follow the
> approach used in hardware design (wp: semiconductor intellectual property
> core).
>
> Since that kind of modularity trend is hard to set up at large scale other
> than what is already stablished, it would be more practical to focus on what
> can be improved more easily, which is the scavenging. Instead of copying
> code fragments, it would be better to point to the fragment in the source
> code project itself, while at the same time providing the semantic tags
> necessary for describing that fragment. This can be done (more or less) with
> current existing semantic annotation technology (see thepund.it and Dbpedia
> Spotlight).
>
> If this has not been done before it is maybe because semantic tools are now
> in the transition from "adaptation of an emerging technology" into "social
> appropriation of that technology". For the wiki concept it took 6 years for
> it to be transformed into wikipedia, more or less the same amount of years
> between SMW and Wikidata. Semantic annotation of code will eventually
> happen, how fast it will depend on interest in such a tool and the success
> of the supporting technologies.
>
> Micru
>
>
> On Sat, Jul 6, 2013 at 3:10 PM, Michael Hale <[email protected]>
> wrote:
>
> I have been pondering this for some time, and I would like some feedback. I
> figure there are many programmers on this list, but I think others might
> find it interesting as well.
>
> Are you satisfied with our progress in increasing software sophistication as
> compared to, say, increasing the size of datacenters? Personally, I think
> there is still too much "reinventing the wheel" going on, and the best way
> to get to software that is complex enough to do things like high-fidelity
> simulations of virtual worlds is to essentially crowd-source the translation
> of Wikipedia into code. The existing structure of the Wikipedia articles
> would serve as a scaffold for a large, consistently designed, open-source
> software library. Then, whether I was making software for weather prediction
> and I needed code to slowly simulate physically accurate clouds or I was
> making a game and I needed code to quickly draw stylized clouds I could just
> go to the article for clouds, click on C++ (or whatever programming language
> is appropriate) and then find some useful chunks of code. Every article
> could link to useful algorithms, data structures, and interface designs that
> are relevant to the subject of the article. You could also find data-centric
> programs too. Like, maybe a JavaScript weather statistics browser and
> visualizer that accesses Wikidata. The big advantage would be that
> constraining the design of the library to the structure of Wikipedia would
> handle the encapsulation and modularity aspects of the software engineering
> so that the components could improve independently. Creating a simulation or
> visualization where you zoom in from a whole cloud to see its constituent
> microscopic particles is certainly doable right now, but it would be a lot
> easier with a function library like this.
>
> If you look at the existing Wikicode and Rosetta Code the code samples are
> small and isolated. They will show, for example, how to open a file in 10
> different languages. However, the search engines already do a great job of
> helping us find those types of code samples across blog posts of people who
> have had to do that specific task before. However, a problem that I run into
> frequently that the search engines don't help me solve is if I read a
> nanoelectronics paper and I want to do a simulation of the physical system
> they describe I often have to go to the websites of several different
> professors and do a fair bit of manual work to assemble their different
> programs into a pipeline, and then the result of my hacking is not easy to
> expand to new scenarios. We've made enough progress on Wikipedia that I can
> often just click on a couple of articles to get an understanding of the
> paper, but if I want to experiment with the ideas in a software context I
> have to do a lot of scavenging and gluing.
>
> I'm not yet convinced that this could work. Maybe Wikipedia works so well
> because the internet reached a point where there was so much redundant
> knowledge listed in many places that there was immense social and economic
> pressure to utilize knowledgeable people to summarize it in a free
> encyclopedia. Maybe the total amount of software that has been written is
> still too small, there are still too few programmers, and it's still too
> difficult compared to writing natural languages for the crowdsourcing
> dynamics to work. There have been a lot of successful open-source software
> projects of course, but most of them are focused on creating software for a
> specific task instead of library components that cover all of the knowledge
> in the encyclopedia.
>
> _______________________________________________
> Wikidata-l mailing list
> [email protected]
> https://lists.wikimedia.org/mailman/listinfo/wikidata-l
>
>
>
>
> --
> Etiamsi omnes, ego non
> _______________________________________________ Wikidata-l mailing list
> [email protected]
> https://lists.wikimedia.org/mailman/listinfo/wikidata-l
>
> _______________________________________________
> Wikidata-l mailing list
> [email protected]
> https://lists.wikimedia.org/mailman/listinfo/wikidata-l
>

_______________________________________________
Wikidata-l mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/wikidata-l

Reply via email to