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

Reply via email to