How Why and When Open Source Works Dr

  • Slides: 52
Download presentation
How, Why, and When Open Source Works Dr. Orion Sky Lawlor U. Alaska Fairbanks

How, Why, and When Open Source Works Dr. Orion Sky Lawlor U. Alaska Fairbanks CS Dept. lawlor. cs. uaf. edu/~olawlor/ 2003/12/17 1

Introduction ● ● ● Imagine a world where you can read and change the

Introduction ● ● ● Imagine a world where you can read and change the source code for all your programs Where you can actually email bugs/suggestions to the author Where you can legally give your buddy a copy of your software Where arguments are solved with code, not lawyers or $$$ That world really does exist! 2

How Open Source Works 3

How Open Source Works 3

How Open Source Works ● ● ● ● I write some code It took

How Open Source Works ● ● ● ● I write some code It took me just two days I post version 0. 1 to my website, saying “Here it is! Have at it!” You download the code It sucks--it's like somebody cranked it out in two days! You fix a few parts of it, and email me the changes I post version 0. 2 to my site. . . 4

Wait! Nobody's paying for it!? ● I wrote it using a free compiler and

Wait! Nobody's paying for it!? ● I wrote it using a free compiler and text editor ● ● I posted it to my website (cheap) You downloaded it (cheap) You compiled it, ran it, read it, fixed it, and emailed me changes ● ● All this cost me was some time All this cost you was some time So given a source of time, nobody needs to pay for software ● Warning: paradigm shift ahead! 5

How do you get people to donate? ● People will give up time for

How do you get people to donate? ● People will give up time for greed, altruism, egotism, hatred, etc: ● Pure public spirit (long-hairs love it!) ● ● Pure self-aggrandizement ● ● ● “I made this” is a kind of bragging rights Crucial to the world's shunned nerds As a way to strike at the hated other ● ● “For the good of all mankind” “It sucks, but Microsoft sucks worse” There are 6 gigapeople on Earth ● ● Somebody's got a free weekend! All you need is a few good coders! 6

Software ain't Bagels ● Software ● Raw materials ● ● ● Bagel ● Binary

Software ain't Bagels ● Software ● Raw materials ● ● ● Bagel ● Binary 1 s & 0 s Free Labor in design Zero labor per copy Public good ● ● ● ● My software is your software! Socialism works Raw materials Labor in design Labor per bagel Exclusive good ● ● Bread, eggs, sugar, yeast Valuable My bagel is not your bagel! Socialism works like crap 7

Open Source in Practice 8

Open Source in Practice 8

How to Contribute to Open Source ● ● ● ● Find a program with

How to Contribute to Open Source ● ● ● ● Find a program with a bug Grab the source code for program Change the source code locally Test your local fixes Summarize your changes in a “patch” Send the patch in to the program author/maintainer Hope the author/maintainer accepts your patch 9

How to Improve Open-Source Code ● Find the “right” source code ● ● You

How to Improve Open-Source Code ● Find the “right” source code ● ● You probably want to work on the latest copy For small projects, this is the latest one listed on the project web page For big projects, usually CVS or SVN Figure out how to build it ● ● Usually just “configure; make” Sometimes “autoreconf; configure; make”, or just “make”, and sometimes swear-at-crap-Makefiles! 10

Improving Open-Source: part 2 ● Figure out what's wrong, and the “right” way to

Improving Open-Source: part 2 ● Figure out what's wrong, and the “right” way to fix it ● ● This is the hardest part. Take notes! Think hard about the design of the code, look at related projects, etc. Fix it. This is usually pretty easy. Test it ● ● ● Make sure you fixed your problem Make sure you didn't introduce new problems Make sure you won't look like a fool! 11

Patches ● Say “diff -u old new > my. patch” ● ● ● Be

Patches ● Say “diff -u old new > my. patch” ● ● ● Be sure to keep the old source code directory around for diffing! Attach “my. patch” to email or bug report Then the author can apply the patch: cp -r hislatest new patch -d new < my. patch ● This usually works even if his code already has other patches! ● Called “merging” 12

How to get your patches accepted ● Send them to the “right” spot Email

How to get your patches accepted ● Send them to the “right” spot Email them to the right author ● Or to the right mailing list ● Or fill out a “bug report” in some (hideous) “bug database” Be extremely clear what you've fixed ● Say “foo(17, 3) currently segfaults” ● Not “foo() sucks; this is way better” ● ● ● Use the format the authors want ● ● patch or CVS or just a big source file You should get an email response! 13

Examples I've Contributed ● Patch to Mesa 3 D arb_fragment_program ● ● Parser hung

Examples I've Contributed ● Patch to Mesa 3 D arb_fragment_program ● ● Parser hung on “ 0. 300000” and parsed wrong value for “ 0. 1” Reported as bug 2520 https: //bugs. freedesktop. org/show_bug. cgi? id=2520 ● ● Accepted, incorporated into Mesa 6. 3 Patch to Tcl/Tk “tk. Img. Photo” ● ● ● I made photo display about 2 x faster They didn't like my (quite different) coding style; patch ignored http: //lawlor. cs. uaf. edu/~olawlor/tmp/tk. Img. Photo. patch 14

Projects I've Started ● usb_pickit ● ● A little program to talk to the

Projects I've Started ● usb_pickit ● ● A little program to talk to the Microchip “PICKit” device programmer over USB A weekend project, during which I learned a lot about USB devices Spawned a google groups mailing list and three derived projects min 00 ● ● ● Konica Minolta 2400 W driver Another weekend project Almost totally unused! 15

Why Open Source Works Well 16

Why Open Source Works Well 16

Patches as Software Engineering ● ● ● All open-source code is built from patches

Patches as Software Engineering ● ● ● All open-source code is built from patches (e. g. , Apache web server) Patches are written by person B, and accepted by person A. A doesn't know or trust B, and so checks his patch over carefully. Bad patches are rejected regularly by maintainers This is where open source's high quality comes from! Compare to commercial code. . . 17

Open Source Code is not Wikipedia ● Any idiot can write “George Washington is

Open Source Code is not Wikipedia ● Any idiot can write “George Washington is a Duck” in Wikipedia ● ● Their changes show up immediately, and in the best case are deleted after the fact Any idiot can send in a patch that won't even compile ● ● Their changes will be rejected by the maintainer/author With open-source, every change is 18 pre-vetted by somebody

Open Source Legality & Licenses 19

Open Source Legality & Licenses 19

Is Open Source Legal? ● Moral argument: I made it. I get to decide

Is Open Source Legal? ● Moral argument: I made it. I get to decide who can use it ● ● Nobody, paying customers, my friends, or everybody. Legal answer: yes. There are several factors at work ● ● Copyright: preserves author's interest in work Contract law: allows conditions to be attached to anything ● By eating this apple, you agree that you and all your descendents will know evil 20

Copyright's Legal Foundations ● ● “Thou Shalt Not Steal” US Constitution, Article 1, Sect

Copyright's Legal Foundations ● ● “Thou Shalt Not Steal” US Constitution, Article 1, Sect 8 ● ● “To promote the Progress of Science and useful Arts, by securing for limited Times to Authors and Inventors the exclusive Right to their respective Writings and Discoveries; ” Title 17 US Code ● ● ● Concept of right to copy (copy right) Concept of “Fair Use” 21 “Limited Times” = 70+ years

Copyright Limitations ● If you create something, you hold the legal right to copy

Copyright Limitations ● If you create something, you hold the legal right to copy that thing ● ● No copyright notice or registration is even needed (today) Applies to “fixed” works that are: ● ● Written (since 1486/1789) Sound and music (since 1910 s) Software (since 1980) Does not apply to: ● ● Ideas (protected by patents) Works not in “fixed” form (unrecorded, code still inside your head) 22

Copyright “Terms and Conditions” ● ● As the copyright owner, you can license copies

Copyright “Terms and Conditions” ● ● As the copyright owner, you can license copies to people You pick the terms of that license ● ● ● For example, the license might forbid making additional copies Or the license might allow copies, but only unmodified copies Or the license might allow anything Or the licensee might have to give up his immortal soul to use the software Copyright violations are criminal; 23

Example Copyright License (EULA) ● Commercial software almost always comes with a “EULA” ●

Example Copyright License (EULA) ● Commercial software almost always comes with a “EULA” ● ● ● End User License Agreement BY INSTALLING THIS SOFTWARE, YOU ACCEPT ALL THE TERMS AND CONDITIONS OF THIS AGREEMENT. IF YOU DO NOT AGREE TO THE TERMS OF THIS AGREEMENT, DO NOT USE THE SOFTWARE. This Agreement permits you ("Licensee") to use the enclosed copyrighted machine readable software program. . This License grants you the right to use the Software on a single computer. It does not authorize network use of any kind. You may not decompile, disassemble, or use any method to discover the trade secrets contained in the Software. You may not modify, adapt, translate, rent, lease, timeshare, or loan the Software. You may copy elements of the Software onto the hard disk of your computer and load elements of the Software into RAM and the CPU of your computer. This License is effective until terminated. This License and your right to use the Software terminate automatically if you violate any 24 part of this agreement. Should the Agreement be terminated, you

But that's Crazy, Man! ● You're typically agreeing to some pretty insane stuff in

But that's Crazy, Man! ● You're typically agreeing to some pretty insane stuff in an EULA: ● You may not decompile, disassemble, or use any method to discover the trade secrets contained in the Software. ● ● This License grants you the right to use the Software on a single computer consisting of one central processing unit, one keyboard, and one display screen. ● ● Core Duo CPU? Dual monitors? Breach. Should the Agreement be terminated, you agree to return all copies of the Software. . . including copies resident in the computer's memory. ● ● ndisasm -u libfoo. dll? A contract breach! Hand over your RAM, you felon! Evil. Co shall have the right to conduct an audit on your premises or by electronic means to ensure that your use of the Software complies with your authorized use of the Software. You hereby consent to Evil. Co performing such an audit by any means necessary, including: 2 am raids by Evil. Co's SWAT team; picking the lock on your front door and secretly installing webcams in your air ducts; or periodic random abductions and application of drugs and/or torture including sodium pentothal, breaking on the wheel, and other acts as allowed by the laws of a suitable country. You agree the Geneva Convention does not apply. You may be held until you prove to Evil. Co's satisfaction that you have never considered copying the software. Confess now, heretic! You also agree to a bunch of stuff in French. 25

EULA: A New Hope ● ● Copyright is just a tool You can use

EULA: A New Hope ● ● Copyright is just a tool You can use it for good or evil 26

Open Source Licenses Compared ● ● ● Public Domain: whatever you like BSD: you

Open Source Licenses Compared ● ● ● Public Domain: whatever you like BSD: you can't claim it's yours; you legally agree there is no warranty; but copy and modify OK GPL: you are legally required to give out source code and the ability to modify and distribute Freeware EULA: you can copy, but not modify-and-redistribute Commercial EULA: you can't copy, modify, examine, distribute, fold, spindle, 27

Terms in an Open-Source EULA ● You can use the software You can copy

Terms in an Open-Source EULA ● You can use the software You can copy the software You can modify and copy the software You can reverse-engineer, forward-engineer, or reengineer the software And it's all 100% legal! ● Just, please don't sue us! ● ● 28

Public Domain ● ● Here's my favorite EULA (mine!) “Public Domain” == No copyright

Public Domain ● ● Here's my favorite EULA (mine!) “Public Domain” == No copyright ENGLISH You can do whatever you want. LEGALESE I release the copyright to this work to the public domain. If your country does not have a concept of public domain, I recommend you get a better country. This license ("License") grants you ("You") the non-exclusive right ("Right") to download, use, modify, and redistribute the covered images, text, and software ("Stuff") of Orion Sky Lawlor or related entities ("Me") without limitation or exclusion. Of course, there is no warranty. If the Stuff causes You problems, sorry, I'm always glad to get bug reports. 29

BSD: Berkeley Standard Distribution Copy & modify OK; lie & sue not OK Copyright

BSD: Berkeley Standard Distribution Copy & modify OK; lie & sue not OK Copyright (c) <YEAR>, University of Alaska. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. - Neither the name of the University of Alaska at Fairbanks nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30

BSD: Berkeley Standard Distribution Copy & modify OK; lie & sue not OK Copyright

BSD: Berkeley Standard Distribution Copy & modify OK; lie & sue not OK Copyright (c) <YEAR>, University of Alaska. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. - Neither the name of the University of Alaska at Fairbanks nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 31

GPL: You MUST give away source! Preamble The licenses for most software designed to

GPL: You MUST give away source! Preamble The licenses for most software designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead. ) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. 32

GPL: Basic Idea ● ● ● GPL software is copyrighted The copyright owner allows

GPL: Basic Idea ● ● ● GPL software is copyrighted The copyright owner allows you to use, modify, and redistribute The copyright owner REQUIRES you (via the GPL terms) to give away source code and distribution rights along with binaries. If you don't comply with the GPL, you're violating the software's copyright “Copyleft” or “Copyright Jujitsu” 33

GPL: Freedom is Slavery ● ● Proponents of slavery in the 1800's would phrase

GPL: Freedom is Slavery ● ● Proponents of slavery in the 1800's would phrase their support in terms of “freedom of contract” ● E. g. , you sign away 7 years as an indentured servant under terms ● The bogus “freedom” to own and become a slave is now unenforceable by contract GPL folks want to remove your contractual ability (under public domain or BSD) to later sign away your natural right to source code. GPL software can never be thus enslaved, it is “free” as in “source code available” ● Richard Stallman is force behind GPL 34

When Open Source Fails 35

When Open Source Fails 35

Why does the GPL exist? ● GPL exists because people get greedy with BSD

Why does the GPL exist? ● GPL exists because people get greedy with BSD & public domain: ● ● Foo. Code starts out in public domain Greedy. Co improves Foo. Code slightly, and sells it in a box (with a EULA) Foo. Code's original author has to pay money to get the right to see what Greedy. Co has done with his code! And he can't even see the source code! Or merge those changes! The GPL prevents the “evil” of proprietary code from contaminating the original open 36 source code. GPL code is always open.

Forking is bad ● “forking” is when a common codebase splits into incompatible versions

Forking is bad ● “forking” is when a common codebase splits into incompatible versions ● ● When merging patches becomes too hard or is made illegal The original BSD-licensed BSD UNIX fragmented into Irix, HPUX, Solaris, Xenix, AIX, . . . ● ● ● None of these were open source Led to tons of duplicated effort Silly avoidable inconsistencies 37

GPL helps deter “forking” ● With GPL code, there are never legal reasons to

GPL helps deter “forking” ● With GPL code, there are never legal reasons to fork ● ● ● Nobody can have a private copy Anybody can legally merge incompatible source code versions There are still technical / political / social reasons projects fork ● ● E. g. , GIMP developers have a fight over floating-point pixels. One faction splits off and becomes “Film Gimp” (now Cine. Paint). Aw, fork it! 38 E. g. , Roman Catholic Church & Luther

When the Author Vanishes ● It happens pretty frequently that the author of an

When the Author Vanishes ● It happens pretty frequently that the author of an open-source package will vanish ● ● ● ● Maybe he was hit by a bus Or he's busy with something else Or he finally got a girlfriend / job Or he's ticked off at person X Or he's tired of the flood of email Or his spamfilter goes Terminator Or he's pulling a Thelma and Louise Anyway, he ain't answering email 39

No Author, No Merging ● Without an author to merge them, patches accumulate ●

No Author, No Merging ● Without an author to merge them, patches accumulate ● ● People change code locally, or post patches on their own websites Distributions send out patches This is worse than a fork, because nobody's in charge. It's chaos! Invariably, somebody steps up. ● Google for all the patches. Merge all the good ones. Maybe rename the program, explain the situation at a 40 new website

A New Author Arises ● So a new self-selected person annoints themselves maintainer ●

A New Author Arises ● So a new self-selected person annoints themselves maintainer ● ● ● Google is the closest thing to the true arbiter of maintainerhood People send patches to this new guy, merging happens, life is good This is a very common process! ● ● ● Happens once every 2 -10 years Sometimes smooth hand-off (same website), sometimes not Often original coder isn't good at 41

Mailing List ● ● Any reasonably big project has a bunch of people (3+)

Mailing List ● ● Any reasonably big project has a bunch of people (3+) interested in what's happening with the code ● So you have a mailing list ● People send patches, bugs, etc to the mailing list ● Stupid requests are ignored ● Good patches are quickly merged ● Flamewars are rare, except approaching a fork True sign of a fork: separate mailing lists 42

Email vs Tech Support ● You can usually just email the guy responsible for

Email vs Tech Support ● You can usually just email the guy responsible for program X ● ● ● Say X doesn't work with Y, and you think you know why, or how to fix it You can just email this to X's author You can't do this with Dell, Microsoft, etc ● ● ● The smart programmers are protected from the corrosive flood of moron-users by an insulating layer of moron-tech-support “You can't do that--X and Y are incompatible” Just *try* reporting a simple bug! 43

Emails for Big Projects ● The maintainer of a popular project faces a flood

Emails for Big Projects ● The maintainer of a popular project faces a flood of emails ● ● He probably spends most of his time deleting email, not even reading or answering it! For big projects (e. g. , Linux kernel), the maintainer (Linux Torvalds) usually has smart folks act as lieutenants to screen incoming patches (e. g. , Alan Cox). Sometimes the lieutenants have lieutenants, and so on. Patches sent to the top are 44 summarily deleted.

Conclusions 45

Conclusions 45

Open-Source Quality ● ● ● With open source code, if you find a bug

Open-Source Quality ● ● ● With open source code, if you find a bug you can fix it yourself today, email the author, and by this evening everybody in the world can be using the fixed version Legal barriers (EULAs, missing source code) and procedural barriers (tech support, nondisclosure agreements) prevent proprietary code from evolving at the same rate Open-source code has gone from totally unusable (1993) to barely useable (2000) to pretty darn good (2007). Where will it go next? 46

Open Source is a Social Experiment ● ● ● It seems possible that spammers

Open Source is a Social Experiment ● ● ● It seems possible that spammers and morons could destroy open source, and also Wikipedia But they have not done so yet! Morons don't use open source ● ● It's usually too hard to use This is emergent behavior: ● ● Good interfaces are hard to write Good interfaces let morons use the code Morons don't provide good patches; you'd waste your life emailing morons 47 So don't provide a good interface.

Openness is Not Just for Code ● ● On my website I give away:

Openness is Not Just for Code ● ● On my website I give away: ● 10, 000 photos of Alaska & elsewhere ● 300 vector road sign images ● Big projects and little code samples If it's free, and you don't have to think about who owns it, it wins ● It doesn't matter how good the expensive stuff is, if you'd get sued if you used it on your project. . . Public domain means “don't worry about that legal crap”! Open Source Movies, Music, CPU designs 48 (Sun T 1), Recipes? Why not?

Open-Source is a Social Contract ● ● Open source is a new economic model

Open-Source is a Social Contract ● ● Open source is a new economic model for organizing societies Capitalism harnesses the power of greed to achieve amazing things Open source harnesses the powers of altruism and egotism to achieve amazing things Collectively-owned open source can coexist peacefully with privately-owned goods 49

Open Source vs. Capitalism ● ● Capitalism (private ownership, the profit motive) works great

Open Source vs. Capitalism ● ● Capitalism (private ownership, the profit motive) works great in the physical world-nothing else even compares. But capitalism is based on the concept of money, an efficient way to ration access to scarce goods, which all physical products require. Open source is not based on money, because software is composed of bits plus human effort. Bits are free, and the world is big enough there is no scarcity of human effort. This means there is no more need to ration effort--people can freely spend their time doing wherever they like. The new scarce good is human attention, and the currency is publicity (search rankings/“googlejuice”). 50

Open Source Revolutionaries ● ● ● The old discredited social revolution, socialism, was implemented

Open Source Revolutionaries ● ● ● The old discredited social revolution, socialism, was implemented by nationalizing-stealing--the fruits of capitalism such as factories. Open Source is not about nationalizing or stealing the source code to existing commercial software. Instead, we are building new software from scratch. Microsoft is terrified of open source, but they're terrified because open source is a formidable competitor! Many large companies, seeing the benefits of open source development even inside their own organizations, have embraced open source (including IBM, Apple, Sun, etc) 51

Open-Source is the new Capitalism ● Free capitalist economies work better than command economies

Open-Source is the new Capitalism ● Free capitalist economies work better than command economies because smart people have the power to fix things themselves ● ● E. g. , in America Henry Ford can just build a car factory “his way” around an assembly line. He doesn't have to convince the central committee that it's a good idea. He can just do it, and the market will decide who's right. Open source software works better than proprietary software because smart people have the power to fix things themselves ● E. g. , if you've got a vision for “What Linux should be”, well, there's the source code--have at it! Your users will freely decide who is right. If you've got a vision for “What Windows should be”, you'll have to convince Microsoft's central planning committee before you can even begin. 52