Ask Ray | We could have had the benefits of the Singularity years ago

I’ve written a book about the future of software: After the Software Wars. I talk about Linux primarily, but it has implications for things like how we can have driverless cars and other cool technology faster.

The book starts with a quote by John McCarthy, the inventor of Lisp: “Some people think much faster computers are required for Artificial Intelligence, as well as new ideas.

My own opinion is that the computers of 1974 were fast enough if only we knew how to program them.”

I believe that we could have had the benefits of the Singularity years ago if we had done things like started Wikipedia in 1991 instead of 2001. There is no technology in 2001 that we didn’t have in 1991, it was simply a matter of starting an effort that allowed people to work together. Proprietary software and a lack of cooperation have been terrible for the computer industry and the world, and its greater use has enormous implications for the Singularity.

I believe your dates are wrong because they should be in the past! Once you understand that, you can apply your fame towards getting more people to use free software and Python.

I am curious to hear what you think.

Warm regards,Keith Curtis

Hi Keith,

I agree with you that open source software is a vital part of our world, allowing everyone to contribute. Ultimately, software will provide everything we need when we can turn software entities into physical products with desktop nanofactories (there is already a vibrant 3D printer industry and the scale of key features is shrinking by a factor of a hundred in 3D volume each decade).

It will also provide the keys to health and greatly extended longevity as we reprogram the outdated software of life. I believe we will achieve the original goals of communism (“from each according to their ability, to each according to their need”), which forced collectivism failed so miserably to achieve.

We will do this through a combination of the open source movement and the law of accelerating returns (which states that the price-performance and capacity of all information technologies grows exponentially over time).

But proprietary software has an important role to play as well. Why do you think it persists? If open source forms of information met all of our needs why would people still purchase proprietary forms of information. There is open source music but people still download music from iTunes, and so on. Ultimately, the economy will be dominated by forms of information that have value and these two sources of information — open source and proprietary — will coexist.

Best wishes,Ray

Dear Ray,

Free versus proprietary isn’t a question about whether only certain things have value. A Linux DVD has 10 billion dollars worth of software. Proprietary software exists for a similar reason that ignorance and starvation exist, a lack of better systems. The best thing my former employer Microsoft has going for it is ignorance about the benefits of free software. Free software gets better only as more people use it. Proprietary software is an inferior development model and an anathema to science because it hinders people’s ability to work together. It has infected many corporations, and I’ve found that PhDs who work for public institutions often write proprietary software.

Here is a paragraph from my writings I will copy here. I start the AI chapter of my book with the following question:

Imagine 1,000 people, broken up into groups of five, working on two hundred separate encyclopedias, versus that same number of people working on one encyclopedia? Which one will be the best? This sounds like a silly analogy when described in the context of an encyclopedia, but it is exactly what is going on in artificial intelligence (AI) research today.

Today, the research community has not adopted free software and shared codebases sufficiently. For example, I believe there are more than enough PhDs today working on computer vision, but there are 200+ different codebases plus countless proprietary ones. Simply put, there is no computer vision codebase with critical mass.

We’ve known approximately what a neural network should look like for many decades. We need “places” for people to work together to hash out the details. A free software repository provides such a place. We need free software, and for people to work in “official” free software repositories.

“Open source forms of information” I have found is a separate topic from the software issue. Software always reads, modifies, and writes data, state which lives beyond the execution of the software, and there can be an interesting discussion about the licenses of the data. But movies and music aren’t science and so it doesn’t matter for most of them. Someone can only sell or give away a song after the software is written and on their computer in the first place. Some of this content can be free and some can be protected, and this is an interesting question, but mostly this is a separate topic. The important thing to share is scientific knowledge and software.

It is true that software always needs data to be useful: configuration parameters, test files, documentation, etc. A computer vision engine will have lots of data, even though most of it is used only for testing purposes and little used at runtime. (Perhaps it has learned the letters of the alphabet, state which it caches between executions.) Software begets data, and data begets software; people write code to analyze the Wikipedia corpus. But you can’t truly have a discussion of sharing information unless you’ve got a shared codebase in the first place.

I agree that proprietary software is and should be allowed in a free market. If someone wants to sell something useful that another person finds value in and wants to pay for, I have no problem with that. But free software is a better development model and we should be encouraging / demanding it.

I’ll end with a quote from Linus Torvalds:

“Science may take a few hundred years to figure out how the world works, but it does actually get there, exactly because people can build on each others’ knowledge, and it evolves over time. In contrast, witchcraft/alchemy may be about smart people, but the knowledge body never ‘accumulates’ anywhere.

It might be passed down to an apprentice, but the hiding of information basically means that it can never really become any better than what a single person/company can understand. And that’s exactly the same issue with open source (free) vs. proprietary products. The proprietary people can design something that is smart, but it eventually becomes too complicated for a single entity (even a large company) to really understand and drive, and the company politics and the goals of that company will always limit it.”

The world is screwed because while we have things like Wikipedia and Linux, we don’t have places for computer vision and lots of other scientific knowledge to accumulate. To get driverless cars, we don’t need any more hardware, we don’t need any more programmers, we just need 100 scientists to work together in SciPy and GPL ASAP!

I’m frustrated that the open source community hasn’t produced a solid modeling engine, or a workable speech recognition suite. Maybe they have since last time I looked.

If the the wiki concept or the equivalent arrived in 1991, a more probable outcome than Wikipedia would have been Nupedia. ( http://en.wikipedia.org/wiki/Nupedia ) There would not have been storage space to burn, it probably would have been hosted on an .edu domain, and there would be a much smaller population of potential readers/writers/donors, so it would probably run on foundation grants or something, and be nice and professional and all.

Keith, you’re clearly very passionate and want to argue your case despite the fact that you’re really only complaining. In fact, there’s one simple reason why people don’t embrace open source more: money buys more than just product development.

Because a company like Microsoft or Apple charges money for their software, they also have the resources to then advertise their product, which puts awareness of the product into the mind space of the public. Without income, open source software can’t self-promote. It relies entirely on word of mouth. Word of mouth only works on buzz, when people can get excited about something. You’re excited about this, but I would bet you’re the only one out of the hundred people you know. That’s no intended to be offensive; I’m making a point about the potential reach of your product.

As a business owner, I can tell you that the first thing to learn is that it’s not just how good a mousetrap you make that matters. You need to be able to help other people see how much better the mousetrap is. And if you don’t have the resources to do that, you won’t sell even the very best of mousetraps. You can kick and scream and cry and complain if you like, but that doesn’t change your basic problem.

Unfortunately, this reduces your basic argument to a public rant and/or complaint, more than an actual logic argument. You’re lamenting that the world is the way it is, and then suggesting that if we just see that there’s a better way, everything would be better. But, in fact, it’s you who is ignoring the realities of the world in which we live, which involve actual supply-and-demand dynamics and a extreme competition for intellectual brain attention. Ray’s closing sentence is ultimately the final word on the matter: “Ultimately, the economy will be dominated by forms of information that have value and these two sources of information — open source and proprietary — will coexist.” If you’re passionate about one, spread the word. But it will never be the only option.

I’m not “complaining”, I’m explaining that we should have driverless cars and the singularity already.

There is already advertising around free software: Google, Facebook, Monster.com, GoDaddy.com, IBM, Boeing, etc. Money is fungible so once you understand that the free software business model works, then you will see this includes advertising.

I agree that people need to understand why the free software mousetrap is better. You are a perfect example of someone who needs to be convinced. I didn’t understand Linux either, until 6 years ago. I recommend going to a Linux conference. My book also help explain a lot, including why it works better in your “supply-and-demand dynamics”.

I ignore no realities. I’ve studied free software extensively. You are the one who ignores and cannot understand Wikipedia if you cannot extend it into areas like computer vision, strong AI, etc.

I think proprietary software will co-exist with free software the way the dinosaurs co-existed with us. Saying that someone’s written the last word on free software makes as much sense as saying that we’ve written the last word on nanotechnology.

I don’t think Python is a panacea, just that it can serve as a quality GC lingua franca.

Python already scales to very big systems, and the current limitations with software libraries like this: http://scipy.org/Topical_Software are not related to the static versus dynamic issue. That is far from a consideration for them.

I am a fan of static typing, but it is not necessary, and not sufficient. There is plenty of analysis you can do on Python code. You can also build debugging systems that run alongside the code and performing additional validation. C# has added dynamic programming, and therefore losing static type checking.

I am sure you have good ideas in your system, but I believe more people should contribute to the Python ecosystem. Any part of Python is tweakable. I also don’t think we need any new languages. We should grab the language that is closest.

We need better programming languages, but just about any GC language is good enough. Scientists and the Linux desktop need to find one, and it can even be a different one from each other.

BTW, if we went back to Lisp, we’d be much better off than with the mess of userland C/C++ that we have today.

I am overseeing the development of an autopoietic (self organizing) software system called MX1-ASCA (Autopoietic Software Construction Architecture) that will produce all possible computer programs in a computer programming language of choice by automating the syntax of the chosen computer programming language.

If I can execute the general form of a computer programming language (that program which produces all physically possible deductions of a language (the discrete computer programs possible in the chosen language)), we will certainly arrive at the singularity much before A.D. 2045.

A superior form of intelligence will emerge from the shear randomness of the chaotic software system MX1-ASCA. I can validate my induction because i know that computer programming languages are extensions of the human intellect. And, if it is possible that a program which simulates human intelligence is derived from the language then it is within the very language itself that this form of intelligence must emerge.

So, you see, the software required to simulate human intelligence is already here. It takes the form of the very computer programming languages that we use every day as computer programmers and computer scientists.

All we have to do is automate the syntax of a computer programming language and eventually we will arrive at a superior form of intelligence through billions of loops of the MX1-ASCA program. It is not randomness which fuels MX1-ASCAs capabilities. It is structured “guided” randomness which allows semantics to come together in the deduction of a computer program from the general form of the programming language itself.

MX1-ASCA will effectively mimic the big bang. It will be more like a software big bang. I expect modules to emerge that may not exactly have an initial purpose but will eventually have purpose when the “fire” cools, just as how carbon allowed for the formation of much more complex molecules and chemistry during the beginning of our universe.

As for closed software “not counting”, I also agree. Closed/proprietary development rarely has an immediate positive impact on humanity. When us mere mortals are graced with this new proprietary technology, it is often held back for decades and given to us one bite at a time. The technology is always released in an immature state as it has only been tested by a few (maybe hundred) people.
Technology discovered through open development is available to developers and early adopters immediately and is thus put through much more rigorous testing before the general public even hear about it. This provides massively increased stability for those who aren’t excited about the prospect of hacking their cars engine to tweak an extra 10% HP out with the very real possibility of destroying their car or spontaneously combusting. Early adopters are our generations test pilots, and we’re happy to be so. Incidentally, failure by developers to consider input from early adopters is one more major problem with the technology industry as a whole, open or closed.

Keith, I absolutely agree with you, and not to detract from my absolute agreeance, I want to quickly make a counterpoint.
Proprietary software can enjoy faster narrow development than Open-Source in a few scenarios (though the reason is always monetary). Open-Source developers are notoriously egotistical and usually of the mindset that if end users don’t like their software, they should learn to use a terminal and submit bug reports with the level of detail only a programmer would include. Canonical is the first major game changer in this regard in that they pay developers to put aside their egos and code for humans. The development of Open-Source software is rarely focused on monetary incentive. Proprietary softwares development is nearly always geared entirely toward whatever makes the biggest buck. Profitable software doesn’t need to be productive (or even operational) as non-technical end users 1. Don’t have very high expectations with regards to productivity/stability, and 2. Are easily confused/misdirected by lots of flash. Proprietary software only stabilizes and/or becomes productive when the monetary incentive requires such and this only happens with software targeted at high end industrial applications (think design/graphics).

While I say this, I think both Open-Source/Free software and Proprietary (monetarily driven) software have a few lessons to learn from each other. Absolutely all software (and all knowledge) should (and wants to) be freely available for the benefit of all humanity. Anything else is restrictive, stifling and anti-human.

As for all the comments regarding autonomous cars, no one is stopping us from developing an Open-Source autonomous car. All that is missing is management. As with most software, this would have been developed 10+ years ago if someone had stepped up with both the technical ability and the political consideration to sway more devs into contributing. Chrysler has been a major opponent to Open-Source ECM’s (I recall hearing rumors of a law suite against some devs who developed an Open-Source replacement ECU for the late model Jeep XJ’s), but I don’t believe they have the political sway to stop a well organised Open-Source movement for the development of an autonomous car.

Proprietary software enjoys faster development than free software only because the FOSS community needs to work more efficiently. The FOSS community is in the millions today. But usermode is chaos. We have more than enough people working on computer vision for example, but they are not working together in a standard codebase.

Free software only gets better as more people use it, and as they work more productively. My book spends a number of pages listing the inefficiences in the free software community as it applies to the desktop world domination, but some of these issues apply to the AI programmers as well.

Proprietary software has places where it does a better job, but that is because it had a head start. And if you look at a lot of the proprietary software codebases (Oracle, Office, Photoshop) you will see that their codebases are a creaky mess and we should abandon them anyway. It takes an army to tend a garden the size of a city.

You are mistaken in thinking that proprietary software is in any significant way ahead of the free software movement. Free software has thousands of features that proprietary software doesn’t have. Here is another good example that I listed above: http://scipy.org/Topical_Software. We can have more and we can have it faster with Python.

Free software has nothing to learn from proprietary software in the same way that science has nothing to “learn” from alchemy. There are some proprietary codebases with bits of interesting code, that need to be absorbed by the free software movement. But the world needs to quit writing proprietary software. We need free software to create significant bodies of knowledge to accumulate. Thinking proprietary software is valid is like thinking ignorance and starvation is valid. A Linux OS changes how you think about your computer compared to Windows or the Mac. It is a much more powerful and richer tool.

Thanks for your insights. But I don’t understand how the car could have driven 140,000 miles if the software isn’t anywhere near ‘done’. I put single quotes around ‘done’ because software is, ofcourse, never done.

You say the code doesn’t count (not sure what this means) because it’s not shared. But the whole thing still counts as a technological achievement. One that was accomplished without opensource, even.

So I’m still not sure about the validity of the point you are trying to make. But I still appreciate your effort.

It managed 140,000 miles because there were humans watching over it the entire time. It didn’t even save them money. And it is still missing a ton of functionality as it is just a small team building this. If you hear of 10 people building an airplane, you can know they would produce nothing like a Boeing. Computer vision and driving will require a big effort.

It is true that an accomplishment in proprietary software is an accomplishment, but the knowledge never accumulates and becomes something for more people to stand on. If Einstein discovered E=mc^2, and then put this paper in his desk drawer, then it is arguably not an accomplishment yet. Part of science is verifiability.

That is such a massive tax on productivity over time. I think it could fail, like OpenCV has. I think the OpenCog guys should integrate their work with SciPy. People build Python wrappers for everything, but it is best to have a native solution.

Any time people work together on software, that is a good thing, but picking a language that makes every developer productive is so important.

That driverless car effort you cite exists not just because of Google, but also Darpa, Stanford, etc. However, that system is not nearly as robust as it needs to be. It is not doing OCR of the road signs. It only sees other objects as obstructions, and doesn’t realize that running over a roadside cone is better than running over a human. One could create many scenarios where it would fail. It is like comparing a radio controlled airplane built by 10 people to a Boeing 787.

I don’t want just one car driving around, but all of them. And when we do robust computer vision for cars, it will trickle down to robotic butlers, toys, etc.

From my perspective, any code that is proprietary doesn’t count, because the rest of the world can’t work on it. And, Google / Stanford is not doing this effort in a shared way. I’ve talked to them about this:http://keithcu.com/wordpress/?p=1515