Freedom for the devices: Philosophy, Dogma or Religion?
There are a lot of good reasons to design a microprocessor: you may need one, you may want to earn money, or simply: verify if the expensive and numerous books on this subject tell the truth. However, so many CPU cores already exist that it may seem to be useless. Why spend thousands of man-months if we our efforts are already done by others?
The landscape has evolved in the past decades. The concentration that is characteristic to the industrial (and financial) world has recently "killed" the most promising architectures, because the older ones are believed to be "cheaper", despite the never-ending efforts that are required to make them work, and work with decent performance. The recent "death" of the ALPHA/AXP architecture (R.I.P., old chap) and the constant threat to our privacy caused by several American industrial trusts (under the cover of the "copyright and patent enforcement") shed a new and sad light on the utopian dreams that a few hobbyists dared to imagine. What we now call "Free Hardware" and sometimes "Open Hardware" is the last resort to our freedom to design and in the end: our beloved freedom to think
Applying the GPL/GNU principles to the microelectronics world is not straight-forward: new questions arise and new solutions must be found. How can we protect the project and the members with the existing laws, against patents and squatters, how can we handle the slow increase in popularity and workload? How can we avoid the parallel with the "GNU dogma"? How will I manage to make the workshop last less than two hours? :-)
This text is not an accurate transcript of the conference. You should have been there or try to find a copy of the recording out-takes ;-)
Introduction: What is the F-CPU?
The F-CPU project has started as the FREEDOM PROJECT in mid-1998. Most of the original files are still available from http://f-cpu.tux.org and reflect the reaction and utopia that motivate its contributors. The exact story can be reconstructed with a reading of the mailing list archive at Yahoogroups.
The F-CPU story began when a few Linux kernel contributors got fed up of all the x86 problems and antediluvian features that make programming PCs more a pain than an art. The rumor that the ia64 details would be kept under NDA raised the fear that the current Wintel monopoly would survive with a new face. The Freedom project was started as a reaction and a forecast, a study and scenario for a new kind of consumer-class devices, where the consumer is also actor in the model. In fact, we realized that there can be no Free Software without Free Hardware and at a time when Linux is a "commodity", the CPU is still kept wrapped with NDA and trade secrets. This could not last longer and an increasing number of hackers, hobbyists and professionals gathered around a mailing list to discuss about CPU architecture, a bit like on Usenet (comp.arch).
The F-CPU project is not the only project aiming at designing a "open-source" processor. We already know that the LEON and the OpenCores project are successful examples of CPU cores that follow the Open Source Software example. A large number of small projects, with various ambitions, means and outcomes, exist and are listed by the Open Collector site at http://www.opencollector.org.
The F-CPU project has some utopian goals but high stakes:
- create the "coolest, sexiest CPU ever" because we know that we can't win in the race for raw performance.
- kick Intel out of the desktop and corporate markets
- create a viable, alternative, "free" standard on which one can confidently base long-term SW coding efforts, leading to a longevity of many decades (40 years?)
- create a standard that will make all computers "even", while still providing adaptability (case by case customization) without bothering us with the balance of the architecture
- promote the "Free" model against the "Open" model which offers more potentially dangerous compromises. This is not a "Open CPU" but an architecture where the user is also involved and responsible, not a "dumb consumer" or a meaningless fraction in the "market share".
"Design and let design"
F-CPU is a design as well as a community of hackers, hobbyists, curious people, students or professionals. We communicate mainly through mailing lists and we sometimes meet (such as in this conference). We aspire to the same things in general but we can diverge on specific matters, opinions or culture.
"Live and let live" is one of the golden rules if one wants to live in freedom and peace. For a designer, "to live" means "to design", hence "Design and let design". This has a lot of meanings, such as:
- "Please let me design in peace, don't reduce my freedom to think with your patents etc."
People usually don't understand how frustrating it is to face useless challenges such as bypassing patents.
- "If you're not happy with that design, don't bother me but start your own stuff or reuse something that already exists."
After all, there are enough designs out there, so why waste time discussing endlessly about theory and design tastes.
During the whole F-CPU history, a lot of people have come and said "my design is better" while we were already advanced in another design, or "I don't like F-CPU because I want something else". Stopping everything only to "try somebody else's idea" or "answering somebody's requirements" is not constructive, because it stops any momentum. However, we can benefit from parallel development and exchange points of views. Buggers are left aside and "the one who does is always right", speeches are useless when there is no source code.
It is quite hard to disseminate this way of thinking, even though most people on the mailing lists are open-minded. However it proved successful to dissipate some tensions inside the group.
The fact remains that we can not control the existing industry and "directly" bias it towards our dreams. It would not be realistic, due to the way this industry works: it is a matter of scale. In reaction, we created a "utopia", a domain of spiritual freedom where we can imagine things without corporate constraints, and perform the case studies we want. We can control this reality and we have built around this dream. After more than 2 years of work, we can see that the total amount of work becomes significant and is not void. Yet, it is still unsufficient to influence the industry but we do our best so that, if we succeed, we influence it positively. As programmers and users, we don't want Intel crap (R) anymore, and we hope that the industry will learn this lesson.
After all, we play with the rules of the market, which is loosely based on design reuse. Through the recycling of GNU designs and ideas, which keeps engineers from reinventing the wheel all day long, we can inject "positive" ideas that will not disappear every time a new technology is introduced (while usually, a new breakthrough flushes something else). All this energy is spent on enhancing something stable and when it is sufficiently integrated in the landscape, it will be hard to get rid of it.
However, the great challenge is to "remain free" and not biased towards a particular company or technology. Freedom is expensive and few persons take care to "pay" it the good way. One must have all of that:
- good will
- and a vision...
If the F-CPU utopia is still alive and well, it is because there is nothing to loose, but instead a lot to learn and share. The emerging community of the Free Hardware developers is made of people who understand each others rather well (even when it comes to technical matters :-) ).
The F-CPU Project in the landscape
A computer is a stack of numerous software and hardware layers. The CPU is the center of this stack but it is mostly overlooked because it is believed that there is nothing left to do at that level. The microprocessor-centric companies have locked this field with thousands of patents that cover everything and anything, even the most obvious features one can think of. The Free Hardware projects, including the F-CPU, are fundamental: their viral effect is able to unlock this field and let the real programmers say their word.
Since a few years, we see a lot of CPU core designs emerging with various licenses, from the most proprietary to the most lax ones. Some are conservative, such as the LEON (a SPARC clone), some others are simply different (microcontrollers or test benches for case studies). F-CPU has an extreme position because it uses a strong copyleft license for a far fetched architecture (superpipline, 64 very wide SIMD registers...).
This project aims at letting the user become responsible of the architecture. The design team is therefore made of volunteers from most continents in the world, with different cultural and technical backgrounds (electronics or programming). There have been several articles about the project in the international press, for example:
- Software Development (us)
- c't (de)
- Arroba (es)
- Linux Loader, Linux Magazine (fr)
and other publications that can not be tracked down.
French and German people appear to be the most active contributors. They write most of the resources and they organize themselves into small geographic groups. The active web-sites are located in Germany (www.f-cpu.xxx), in France and at the MIT (http://f-cpu.seul.org). These sites are often sponsored or helped by external organizations:
- In Germany, the Chaos Computer Club sponsors the f-cpu domain names (www.f-cpu.org, www.f-cpu.net, www.f-cpu.com, www.f-cpu.de) through the Devcon.net company.
- Still in Germany, the GAOS e.V. offers resources such as CVS and legal support
- In France, Linuxfr.org supports the media coverage and hosts some archives
- Still in France, APRIL.org offers some online help (mailing list, online management tool mantis) and represents the FSF in France.
- In the US, the SEUL.org site (which hosts the OpenCollector site, among others) offers Linux accounts, CVS, mailing lists and similar resources for the F-CPU contributors.
The F-CPU community lives mainly through and with 3 mailing lists, the main one is English, the other two are French and German. They were created on eGroups.com but since its incorporation inside Yahoo! and the memorable loop/flood due to server mis-configuration, we're moving the lists to other servers. Other ways of keeping in touch and informing the members include IRC channels, conferences...
All these resources were gathered progressively. Similarly, we progressively yielded original resources including:
- A manual and preliminary specification drafts in HTML then LaTeX
- Translations of these resources are ongoing: German, Spanish and French
- Several web sites: f-cpu.org, .net, .com, .de, as well as mirrors around the globe
- A more or less stable and slowly growing international core team
- Some preliminary VHDL files
- Participation to several meaningful events (HAL, CCC, Oekonux...)
- Some press coverage and audience, a slowly growing interest in the industry
However, this outcome looks very "amateur": everything is carefully but slowly handcrafted and the amount of "things left to be done" never ceases to increase. We particularly need:
- full time working contributors (and more free time for the existing contributors)
- web masters (the web-sites are looking awful and unorganized)
- sponsors that can contribute with EDA tools and similar meaningful resources
- distributors willing to distribute our work on "physical media" (either CDROMS or silicon)
- more press coverage and a better "education" of the users to the new concepts brought by the F-CPU project, business model and architecture. Free software has become a quite well known field but Free Hardware, with its different life-cycle, resources, mentality and stakes is really a different game.
We currently have no hardware or means to design the F-CPU: no workstation or professional-class software, only SIMILI can be decently used under win32 (it's a free-ware from Symphony EDA) and it is currently being ported to Linux. Otherwise we depend on the contributors who access the necessary tools at work or in their university. In these conditions, it's no wonder that we are still far from a first physical implementation. This particular situation is currently discussed (look here).
We also need a better web infrastructure, motivated and competent contributors, computation time for the simulations and so much more. This project requires a lot of resources and personal involvement. The subject requires a lot of knowledge and the learning curve is very steep: we need a very low turnover among our contributors. Different fields of expertise are needed so everybody can find something to do.
Although the F-CPU is meant to be used on desktop computers, it will not run x86 software, unless a software simulator (such as BOCHS) is used. The current F-CPU architecture is a high performance SIMD super-pipelined CPU, designed explicitely for high speed computing and real-time applications such as signal and image processing, scientific and industrial computations (in other words: number crunching). The ideal OS has a POSIX compliant API, the first one is likely to be GNU/Linux. However this is not a "Linux only" CPU and the architecture provides room for flexible "experimental" kernels.
The F-CPU utopia comprises a particular ethics. We know that the reality is not pink but we realize (thanks to regular contacts with independent professional designers) that our point of view is shared by those "techies" working in small or big companies (but who can not afford to challenge their "job security" for some sweet dream). We are not the only people who feel this need for a "fair" balance between profit and technical innovation.
In this part, we want to show how "it is possible to make money with the F-CPU" and under what conditions:
- Respect of the license and all the degrees of freedom (as stated in the GPL and the F-CPU charter)
- Companies that make a lot of money with the F-CPU are asked to help more the project in return.
- Anybody can make his own business:
- download the latest version of the F-CPU files
- define a goal (speed, budget, number of chips, etc.)
- "cook" the F-CPU for the technology you use (fine-tuning of the parameters, compilation, validation)
- order the chip batch from your preferred fab plant (TI, IBM, TSMC,...)
- resell the batch as individual chips or as part of a device.
is preserved by the respect of the license terms, that specifies that all the changes to the files and files that are generated must be available at no charge. Any difference in price or performance comes from the silicium process and the commercial part of the distribution, not from hiding architectural features. That's where the word "open" becomes meaningful.
of a product is determined by the time-to-market capability of the company, its ability to make reliable products and the support it grants to the customer. There are "fresh" and "old" products, by the time new versions appear, and they can appear quickly (forward and backward compatibility are very important!). Just like Linux distributions appear and disappear quickly, the turnover and hence the expected volume of the market is promisingly higher and more competitive (the dream of a real "commodity" CPU can become true). A RISC CPU has less inner complexity than an OS so it's easier to know if a "distribution" is "stable".
is ensured by the free availability of any version while a better margin can be obtained with innovations. Reputation also plays a role, like in the Linux distribution model.
We all know that the industry can not continue without good norms and standards: the goods of IEEE754, POSIX, JEDEC and other initiatives are not to be proved again (despite some sad efforts like PCI, DVD or USB...). Now, this crucial norm concerning the Instruction Set Architecture for consumer products is proposed by the consumer itself. We expect that the leading companies will be surprised but they will remember that those companies who "played the fair game" with the Open Source developers have gained early and increasing market share. Now, Linux is not laughed at anymore (look at the attacks from Microsoft) and Adapted, Matrox and S3 are preferred because they are best supported. Emerging companies that want to enter this market will be forced to use an even more aggressive (more open) strategy. It sounds logical that a Free/Open CPU architecture will succeed, like those companies who understand the principle of releasing low-level specifications.
Conclusion about the economical model
The F-CPU project and all the Free/Open HW initiatives have the positive effect of reducing hardware price and development time, so one is more concerned about what a chip really is: silicon. The foundry prices will therefore be important for the end buyers and chip foundries will remain the place where all the benefits are done. Hence this good stock tip: If you want to be rich, buy a foundry!
"Implementing a F-CPU is like making a LINUX distribution or package"
How to "sell" the F-CPU to professionals?
This is a small FAQ that i wanted to write because my experience with "IT professionals" showed that they are sometimes "off the ground". They have a particular reality and goal (namely: "do business" or more crudely "make money"). I am rarely rejected when i approach them, but they sometimes look at me like I'm a real fool.
The first thing to understand is that they are rarely "engineers" or "designers" but "commercial" people. Their priority is different. They do care less about the path but their goal is obvious (read above). Most of them come from middle range technical positions and evolve to marketing, they know what a microprocessor is but never cared or thought about designing one themselves. This is a radically different mind-set and they have the power to influence the industry and the engineer's work itself! When I approach them in order to give them the opportunity to "make money" by distributing F-CPUs, they already think about what I am wanting in return or or what I am asking to them (as if I was homeless and begging for a coin). However, when I start to tell them that I am making a CPU that will blow their business, they are less distracted :-) .
What people ask me first is: "When?"
Rule number one in the F-CPU is: "if you make plans, they are never followed". There is no deadline because we know that we will never meet the criteria. However the development process, though slower than in the industry, is more "natural" and evolutive. The usual way in the industry is "build and patch", while we "build and rebuild", which is slower but keeps the source code base from rotting and falling into "abandon-ware".
Then: "How many people work on it?"
The "core team" counts an average of a half dozen of active developers. However, because it is a "contributive/volunteer" effort where everybody owns his copyright ("distributed copyleft"), it is difficult to know exactly. People are not bound in any way to contribute (or not). This ensures that contributors are highly motivated and the others don't bother. A real census would cause privacy problems.
Another question is: "Performance"
Economic laws says "you get what you pay for", there is no secret! Comparisons are still impossible while no implementation exists. This is fairly deceptive, but subjective benchmarks are, too.
I am getting tired of those people who expect Free Software and Free Hardware to surpass easily other products. They truly want everything!
- low cost
- full control
- someone to sue when they feel deceived
They expect much and get none of them. This is a reason for them to display a disappointed face and tell you that "the thing will fail".
What they don't see is that Free/Open projects put the business equation in other ways, while some of the input values don't change. There are "constant values" such as the available technology, budget and resources, but the equation for "proprietary" and "free" business models are different. For one thing you win, you can not expect to keep the counterpart. For example, if all the work is done for free by others, how dare one hope to control this work?
The yield changes, becomes positive in some cases and looks negative in other cases. One has to weight and balance the advantages and the drawbacks, like everywhere. Portraying "the big picture" of the Free Software philosophy and how the GPL works, is a good way to balance the deception. The short term view ("If i release my code, others will steal it") is never balanced by the larger scope ("The GPL garanties that you can sue them if they don't redistribute their modifications to your code").
I truly get upset by short-sighted "professionals" who fear all risks. They claim a right to make money easily but they yell when they break their toy. I know, I'm a utopian engineer, but I can't stand that people less "responsible" than me give me lessons.
The F-CPU wants to be the first global CPU solution that is compatible with the GNU philosophy. We have a long way to go but we go on. Day by day, we work towards a better and more responsible computing world.
There will always remain the "classical" proprietary industry because it gives some (often fake) assurance to the uneducated customers ("big accounts" with no computer culture). Free Software and Free Hardware is more targeted towards "responsible" people who are both users and actors, who are involved in the world they live in and who want to change it. We can hope to "convince" and "educate" other people and companies by showing them the drawbacks of "conservative/secretive" design and business practices, but it will be difficult before we yield "hard proofs" of this theory. We are working hard towards the making of a first F-CPU prototype.
PS: Due to schedule pressure, this paper is truncated, compared to the expected lengthy presentation that we intended to do. We hope that enough details have been exposed though, despite the fact that a lot of questions remain unanswered. Thank you for your interest and see you next year.
Note: Copyright 2001 Yann Guidon (email@example.com) and Lionel, trollhunter Bouchpan-Lerust-Juéry (firstname.lastname@example.org) Verbatim copying and distribution of this entire article are permitted in any medium without royalty provided the copyright notice and this notice are preserved. version July 25th, 2001
Diskussion auf der Oekonux-Liste