[00:00.000 --> 00:01.920] And it's called Under the Desk at MIT. [00:03.900 --> 00:05.100] Thanks for coming to the talk. [00:05.260 --> 00:05.820] I appreciate it. [00:06.920 --> 00:11.420] What my talk is going to be about is a new group I'm trying to form called the Public Domain Software Foundation. [00:11.700 --> 00:24.300] And basically what this talk is going to be about is it's going to be about avoiding the whole world of licensing and legal matters and just sticking to code and getting to actually program instead of having to play amateur lawyer. [00:24.300 --> 00:31.280] So it's something I've been trying to do for years, but I'm actually trying to convince other people to go ahead and do it along with me. [00:31.520 --> 00:38.260] The reason my talk is called Under the Desk at MIT is that I recently snuck in the back door of MIT and they haven't kicked me out yet. [00:38.640 --> 00:44.700] And when you do get to MIT, you have this kind of nagging, looming question of what am I going to do while I'm here? [00:46.340 --> 00:49.380] And so I kind of grew up on free software. [00:49.720 --> 00:51.420] I'm a little bit older than I look. [00:51.420 --> 01:00.620] And my first program was actually written aside from, you know, basic and things like that in elementary school with GCC in the 1980s. [01:00.860 --> 01:03.200] So I'm a huge fan of Richard Stallman. [01:03.620 --> 01:08.680] And RMS, if it wasn't for him, I wouldn't really be able to even be a programmer, I don't think. [01:08.780 --> 01:11.960] I never would have been able to get access to the compilers I needed. [01:12.240 --> 01:19.200] And, you know, back then a basic compiler cost, you know, over $1,000, which in today's dollars is probably closer to $3,000 to $5,000. [01:20.840 --> 01:26.840] So when Richard was developing the first versions of the GNU software, he was at the AI lab at MIT. [01:27.060 --> 01:32.680] And there were a number of times when he slept under his desk actually writing GDB and GCC and the other tools. [01:32.900 --> 01:35.080] It was mostly a one-man effort when it first came out. [01:35.480 --> 01:44.340] So I'd like to take a moment before I even start to just recognize his amazing contribution and thank him for it, because I don't think any of us, for the most part, would be here today without him. [01:46.940 --> 01:50.220] I'd like to go over a little bit of history, a little bit more than I already have. [01:50.360 --> 01:55.600] And that's that what really started everything was the commercialization of the MIT AI lab. [01:55.720 --> 02:00.800] And if you were here for the keynote opening address, you got a better history of this from RMS than I'm going to give you. [02:00.880 --> 02:04.200] But I just want to briefly kind of cover it because I'm going to relate back to it throughout my talk. [02:05.620 --> 02:13.700] You know, basically what we had at the AI lab in the 1970s was a situation where software wasn't really considered intellectual property at all. [02:13.920 --> 02:15.980] It wasn't something that was licensed or copyrighted. [02:16.020 --> 02:18.360] It was just basically like mathematics. [02:18.360 --> 02:27.040] It was something that was discovered and made available and, you know, basically committed to paper, to tape, or to, you know, any of a number of other mediums over the years. [02:27.640 --> 02:38.360] As the commercialization hit the MIT AI lab, and we started to have competing interests between commercial software and this idea that, you know, software wasn't really something you could own. [02:38.480 --> 02:39.380] It wasn't actually property. [02:41.800 --> 02:46.080] The AI lab had a schism, and there was basically a separation to the two camps. [02:46.180 --> 02:55.220] One that believed that software's property was something that was invested in and developed, and the other that believed that, you know, software was something that couldn't be owned and that it should be shared and freely available. [02:56.640 --> 03:13.820] That really culminated in the announcement of the GNU project, and its beginnings in 1983 and 84 with, like I said, the introduction of GCC and GNU, GDB, the debugger, and so forth, all of the tools that are associated with that, and what eventually became the GNU plus Linux operating system. [03:15.240 --> 03:20.580] The GPL really took the lead in the early years, thanks mostly to Richard and the fact that he was the one leading the community. [03:21.680 --> 03:32.240] Over the years, though, as more people began to gain exposure to computers and start to write software themselves, they found they had different competing interests compared to what Richard had of just basically sharing things. [03:32.340 --> 03:34.180] They had, you know, grants they needed to fund. [03:34.320 --> 03:41.880] They had companies they wanted to start and so forth, and different universities had different cultures than MIT, and were also producing really great software. [03:42.700 --> 03:50.560] What we found was the BSD license came onto the scene, and that was the next really large license that took up a lot of what was in MIT. [03:50.560 --> 03:54.080] was available in terms of the actual source code, the number of lines of code available. [03:54.600 --> 04:04.920] If you were to actually go back and look at the number of lines under the BSD license and the GPL, you would see that the BSD license caught up very quickly to the GPL, and eventually came close to surpassing it. [04:06.860 --> 04:12.400] As time went on, there was basically, you know, two or three licenses, mainly the GPL, the BSD. [04:12.400 --> 04:20.100] MIT had a license for a while that was pretty popular, but eventually kind of faded out, and was replaced by GPL and BSD. [04:21.860 --> 04:38.240] Commercial interests eventually entered the subject area and the world of software, and that kind of happened during the dot-com boom, when a lot of companies saw that they could do a very quick and low-cost startup by having software costs reduced by using, [04:38.300 --> 04:40.000] you know, openly available software. [04:40.240 --> 04:48.140] And we found the open-source movement founded from that, you know, Eric Raymond and so forth, actually trying to get companies to share their source code so that things could progress faster in general. [04:49.280 --> 04:52.840] Now, this led to a number of problems, you know, most specifically license proliferation. [04:53.940 --> 04:58.480] And that's something I'm going to try and address in this talk, and hopefully something that the Public Domain Software Foundation can address. [04:58.480 --> 05:05.840] So, what's next for the community of software developers out there, the people who are developing free software and who are working in this area? [05:06.560 --> 05:09.540] And hopefully, there's going to be a Public Domain component to that. [05:10.960 --> 05:23.760] Now, the two groups that are really opposed, as I said, and this goes all the way back to the days of the AI lab, is the people who don't view software necessarily as property, and who view it as something that should be freely shared and available, that anyone should have access to and be able to study. [05:23.980 --> 05:32.660] And I kind of call them the freedom camp, and then the control camp, which would be, you know, the businesses that are trying to make money and develop a commercial ecosystem around software development and computers. [05:33.040 --> 05:45.820] Now, the Freedom Group, as Richard pointed out during his keynote address and through many documents on the Free Software Foundation website and the licenses, is that there's four primary freedoms that are of most importance. [05:45.960 --> 05:51.300] You know, freedom zero, the freedom to run the code, freedom one, to study the code, freedom two, to share the code, and freedom three, to improve the code. [05:52.040 --> 05:54.020] The control group, obviously, has different interests. [05:54.020 --> 05:56.800] You know, their primary concern is investment recruitment. [05:57.000 --> 06:03.300] They pay a number of programmers to develop software, and they need to make sure that they can pay the salary and actually get a return on investment. [06:03.540 --> 06:05.460] We pay the investors to continue their business model. [06:06.320 --> 06:14.380] They're interested in protecting trade secrets rather than actually allowing people to study the code, and they're interested in competitive advantages over the competitors rather than sharing the code. [06:14.900 --> 06:24.740] And likewise, a predictability of maintenance cost has a much greater concern to them than the ability to allow people to improve the code or what kind of benefits those improvements could yield. [06:26.340 --> 06:32.440] So, whenever you're trying to mediate a situation or dealing with people who are in conflicting views, I think the most important thing to do is look for common ground. [06:32.520 --> 06:35.340] So, what kind of common ground can we find between these two camps? [06:36.120 --> 06:38.380] I think everyone wants improved software quality. [06:38.600 --> 06:43.540] You know, everyone hates bugs, and the process of debugging is always very painful and time-consuming. [06:44.660 --> 06:46.020] Improved software efficiency. [06:46.320 --> 06:50.600] You know, software that costs less to make and software that costs less to develop and share. [06:51.860 --> 06:58.700] A lack of difficulty in training and education of people who you want to use your software or who you want to be able to develop with your programming languages or your APIs. [06:59.260 --> 07:01.160] A reduced investment in basic computing. [07:01.400 --> 07:07.040] Every business would like to have a free payroll package so they don't have to take that off of, you know, their overhead out of their bottom line. [07:08.420 --> 07:15.780] And two that I've highlighted down here because these are the most important to me personally is rapid technological progress and rapid scientific, you know, progress. [07:15.780 --> 07:21.940] So, what software development models are going to support these common commonalities the best? [07:23.220 --> 07:25.980] And what exactly is the public domain and how could it play into this? [07:26.140 --> 07:28.800] Well, the public domain is basically no rights reserved. [07:29.040 --> 07:34.160] When you place something in the public domain, you're basically putting it out there without any copyright on it, without any claim of ownership. [07:34.440 --> 07:36.640] There's no legal restrictions on use at all. [07:37.660 --> 07:40.820] Public domain does not impact the four primary freedoms. [07:40.820 --> 07:44.660] Those are still preserved by public domain content. [07:44.660 --> 07:48.940] Since the content isn't owned by anyone, there's no one there to take away your freedoms. [07:49.580 --> 07:50.940] No one's freedoms are restricted. [07:51.120 --> 07:57.440] That's a little bit different than the GNU project and the GPL in the corporations and people who would like to develop, you know, commercial software. [07:57.640 --> 07:58.580] Their freedoms are restricted. [07:58.740 --> 08:02.680] You're actually placing restrictions on them and saying that, you know, there's things that you can't do. [08:03.960 --> 08:06.500] And that personally doesn't sit very well with me. [08:06.500 --> 08:13.380] I kind of consider myself a libertarian and I don't think that anyone should kind of impose their will on others and take away people's freedoms. [08:13.620 --> 08:21.380] So I have always had a hard time putting my software under the GPL knowing that I was restricting people from doing things that could benefit everyone. [08:22.900 --> 08:30.280] And because no one's freedoms are restricted, public domain is much more friendly to corporations than the government, obviously, because anyone can take that source code. [08:30.380 --> 08:31.220] Anyone can approve it. [08:31.280 --> 08:32.020] Anyone can share it. [08:32.100 --> 08:33.460] And anyone can develop based on it. [08:35.360 --> 08:37.600] It's eventually where everything ends up anyway. [08:38.140 --> 08:43.020] Software that falls out of copyright after the term copyright is over is public domain software. [08:44.460 --> 08:51.260] Initially in the AI lab, if you actually look at the environment and how software was treated and how it was considered, it actually was considered public domain. [08:51.400 --> 08:52.380] It wasn't someone's property. [08:52.540 --> 08:54.160] It wasn't something you had to go ask to share. [08:54.240 --> 08:56.820] If you would have just taken it, you know, that wouldn't have been a problem. [08:59.340 --> 09:04.920] But most importantly, the idea of public domain involves a paradigm shift in the way that people think of software. [09:04.920 --> 09:15.200] Instead of thinking of it as something that holds a lot of value that has to be licensed and you have to negotiate with other people to use and something that you're doing a great good by sharing with others. [09:16.080 --> 09:22.160] You know, I think we should think of software as like a discovery, like mathematics. [09:22.160 --> 09:24.480] It's just something that happens to exist in the world. [09:24.580 --> 09:26.860] It just happens to be the best way to process information. [09:28.020 --> 09:36.260] So if we can start thinking of software as not something that has value and it should be sold and contractually negotiated, I think we'll see a lot more rapid progress. [09:36.420 --> 09:37.480] We'll see a lot more software out there. [09:37.580 --> 09:38.700] We'll see a lot more people using it. [09:38.860 --> 09:43.640] And we'll see a decline in the number of people who try and charge for it and try and charge exorbitant amounts for it. [09:47.100 --> 09:48.520] So, went through this a little bit. [09:48.720 --> 09:49.880] You know, why is GPL... [09:49.880 --> 09:52.660] Why is public domain better than open source of the GPL? [09:53.120 --> 09:54.440] Again, no one's freedoms are restricted. [09:54.720 --> 09:55.800] It's much more efficient. [09:56.180 --> 09:58.460] Programmers don't have to spend time trying to understand licenses. [10:00.220 --> 10:03.620] The GPL is a pretty easy to read license and it was specifically written that way. [10:03.980 --> 10:09.880] But if you read the licenses of some other open source vendors, like the IBM license, they're very complex. [10:10.020 --> 10:19.740] And you almost need advice from a lawyer to really understand and understand how you can use the code and who you can share the code with and what kind of liabilities you're opening yourself up to if you copy code from one of those open source projects. [10:21.340 --> 10:23.580] I really think that programmers should spend time programming. [10:23.820 --> 10:25.280] I really hate the law. [10:26.340 --> 10:27.520] Like I said, I'm a libertarian. [10:27.680 --> 10:31.660] So, every paragraph of law is something that I really just cringe at. [10:34.140 --> 10:35.740] Unless duplication of work is necessary. [10:35.960 --> 10:48.980] Well, one of the things that people tend to do when they're faced with a license they don't understand or they have too many licenses that span their work to be able to do things like relicense it or really get a good grasp on what can be done with it is they tend to reimplement. [10:50.480 --> 10:59.380] And re-implementation is something that takes a lot of time and it's very plagued with the possibility of lawsuit and other problems and legal entanglements. [11:01.440 --> 11:07.540] So, it's best to avoid re-implementation not only for the legal problems with it, but also because I think it's a waste of time. [11:08.860 --> 11:12.580] The thing that's best about public domain, I think, is that it's the lowest point in the legal landscape. [11:12.800 --> 11:19.720] I'm sure many of you are familiar with this phrase I have quoted up here that information yearns to be free just as sparks fly upward or water seeks the lowest point. [11:20.340 --> 11:22.980] All information eventually becomes public domain. [11:23.180 --> 11:32.500] So, why not skip the process of becoming public domain and just go right to the point where it seems to naturally flow to where it naturally wants to be. [11:33.960 --> 11:36.260] So, we talked a little bit about license complexity. [11:36.440 --> 11:41.700] You know, the fact that some of the licenses are getting, you know, multiple pages long, involving many legal teams. [11:41.700 --> 11:45.540] Every company seems to have its own license and there's more and more complexity in licenses these days. [11:47.200 --> 11:49.920] It's one of the major problems of the open source movement. [11:50.420 --> 11:54.780] People can't necessarily tell without legal advice if they can share the code or how they can share the code. [11:55.900 --> 11:58.320] And anyone can and does create their own license. [11:58.480 --> 12:11.080] I spent a number of years on a mailing list called License Discuss for the Open Source Institute, where people would basically propose licenses to the list and ask for discussion on them in terms of do they meet the OSI guidelines or the things that they could get certified as open source. [12:11.580 --> 12:21.080] And what we found is that amateur licenses that are not even legally valid, things that would say, you can use my code, but you can't oppress women in your day-to-day life if you use my code. [12:21.460 --> 12:24.280] Or, you can use my code, but you have to support Free Tibet. [12:26.340 --> 12:27.680] Would get proposed to the list. [12:27.840 --> 12:35.680] And, you know, what do you do if that license isn't proposed to the list, but just went ahead and posted it on the Internet as a license on source code that you find. [12:37.220 --> 12:43.320] It's really not in a position you want to be in to try and judge if a license is legally valid, even though it seems if it's not, in order to try and copy code. [12:44.160 --> 12:47.560] And what the Open Source Institute found is that they couldn't just keep up. [12:48.460 --> 12:52.440] There was a time when there was as many as two new licenses every week being posted to the list. [12:52.840 --> 12:57.500] So, on top of all that, you have legal diversity across just different jurisdictions. [12:57.800 --> 13:00.680] You know, what's valid licensing in Europe is not the same as America. [13:00.680 --> 13:07.700] And as we get into a more global development model, as more countries get high-speed Internet access, it gets more and more complex. [13:08.120 --> 13:14.780] And the laws keep changing with lobbyists and groups like WTO trying to enforce American copyright and values on other nations. [13:15.700 --> 13:20.820] So, really, it broke down to five major types, the GPL, the LGPL, BSD, MIT, and Mozilla. [13:22.180 --> 13:27.940] And if you go out and you want to try and find code that you can include in your project to save you some time, Trove categories can be helpful. [13:27.940 --> 13:36.120] Things like SourceForge and FreshMeat use Trove to basically categorize licenses, you know, code underneath licenses, so that you can search and find the kind of code that you need. [13:36.360 --> 13:40.100] But more license complexity is needed. [13:40.420 --> 13:42.740] We already have all these licenses that are difficult to understand. [13:42.940 --> 13:48.780] And what we're finding is that things like Richard's success, as he highlighted with TiVo, is a major problem. [13:50.360 --> 14:02.080] When you legally find a way around someone's license that agrees with the letter of the law, but not necessarily the nature or the spirit of the law as they wrote it, they tend to get annoyed and they try and find ways to keep you from doing that. [14:02.240 --> 14:07.480] They come out with a new version of license, more restrictions, which inevitably leads to more complexity. [14:07.480 --> 14:14.180] We have a lot of new things coming out like DRM, liability changes as the Internet has become more popular and more people are paying attention to it. [14:15.260 --> 14:21.680] A tremendously larger base of people who actually write code and have their own interests and their own desires for licenses. [14:24.080 --> 14:34.260] Complex situations on where code is actually running and who has it, like virtual machine-based platforms, web application service providers and grids and clusters, and licensed content included with applications. [14:34.620 --> 14:35.780] You know, things like Google Maps. [14:35.940 --> 14:39.560] And if you don't own the map, and how much of the software is actually licensed to you? [14:39.600 --> 14:42.460] And is it okay to use their API in your program? [14:42.480 --> 14:44.920] And if you can't use the API, can you use the content as well? [14:46.120 --> 14:49.380] We've been finding a blur between hardware and software with things like EEPROM. [14:49.520 --> 14:53.880] And, you know, if I buy a computer from a vendor, am I allowed to look at the EEPROM? [14:53.980 --> 14:57.940] And, you know, if that prevents me from booting a certain operating system, am I allowed to remove it? [14:57.940 --> 14:59.600] Or am I even allowed to read it? [15:01.860 --> 15:13.380] So, as I said, the Open Source Institute had a large number of problems trying to deal with these complex licensing issues that were starting to emerge as well as just the fact that there were so many competing interests and all the new people who kind of rushed to software development during the dot-com boom. [15:14.580 --> 15:19.620] Even today, right now, the Open Source Institute has 59 preferred licenses on their homepage. [15:19.940 --> 15:32.640] And if you can imagine going through a major project, a major piece of source code, something like, say, an Office suite with code under 59 different licenses to try and determine how you can package it and what you can do with it in a Linux distribution, [15:32.760 --> 15:34.680] you can see that that's a pretty complex problem. [15:36.960 --> 15:39.260] License changes mean new review is needed. [15:39.640 --> 15:46.120] So, every time an author releases a new version of the license, you have to go through and make sure that the license complies with everything you've done and everything that they've done. [15:46.320 --> 15:53.720] And since it's contract law, they can not necessarily retroactively apply things, but they can make things difficult for you in the future as you release new versions. [15:53.920 --> 15:55.820] So, you have to append a security patch. [15:56.040 --> 15:58.640] You may have to find yourself underneath their new version of their license. [15:59.540 --> 16:02.740] And I've always found that license authors are not shy about new versions. [16:02.920 --> 16:06.240] We've seen, you know, 30 or 40 versions of some licenses in a two-year time span. [16:07.540 --> 16:12.200] So, OSI has been trying to convince people not to write new licenses that are not needed. [16:12.200 --> 16:18.200] You know, pick one that has the kind of basic features that you want, the kind of basic structure, and try and stick with that license. [16:20.340 --> 16:25.300] It seems to work pretty well, but like I said, there's still 60 or more licenses out there that are frequently used. [16:25.780 --> 16:27.680] We've got worse problems on the horizon. [16:28.160 --> 16:32.160] You know, when is knowledge representation of derivative work? [16:32.320 --> 16:35.560] Things like the semantic web are coming out where people are trying to parse things to RDF. [16:36.060 --> 16:41.440] Hopefully, source code will eventually be parsed into things like RDF, where we can automatically download source code and include it in programs. [16:44.300 --> 16:50.440] So, what do you do when source code and its format as data become kind of intertwined? [16:50.660 --> 16:52.040] And how does licensing affect that? [16:52.380 --> 16:59.440] When you're running an ASP program, like Google Maps or something like that, which has become extremely popular, you know, when is the ASP actually running it? [16:59.500 --> 17:00.140] And when are you are? [17:00.280 --> 17:01.140] And where is the data? [17:01.240 --> 17:02.060] And who owns the data? [17:02.320 --> 17:11.020] And then distributed processing applications that have modules and code that automatically replicate and download, you know, folding at home in those types of applications? [17:11.020 --> 17:12.840] Who's responsible for the licensing there? [17:13.780 --> 17:19.920] And how does that work with things like the GNU GPLs, restrictions on distribution and source code sharing? [17:21.600 --> 17:24.300] At the same time, you know, programming is getting much easier. [17:24.540 --> 17:35.460] We've seen the massive API introduced things like Java, which have complete networking toolkits, complete cryptographic toolkits, complete data structures of basically every type of data structure that's ever been invented. [17:36.120 --> 17:37.360] PHP is very similar. [17:38.280 --> 17:42.940] Massive Internet repositories are becoming popular, like CPAN, where source code is automatically downloaded. [17:44.200 --> 17:47.780] It's not very easy to put licensing restrictions on what you download from CPAN. [17:49.180 --> 17:55.060] New, even easier languages are coming out, like Python and Ruby on Rails, which have even more complex problems with licensing. [17:56.620 --> 18:03.740] So as free software has become mainstream, it's become like the best way for someone just out of college to get a job. [18:03.740 --> 18:05.800] So they want to write free software, right? [18:05.860 --> 18:10.400] And they haven't necessarily been exposed to the same culture that most of us have been in it many years. [18:11.300 --> 18:14.400] So what do they do about licensing when they're not fully educated about it? [18:14.560 --> 18:15.960] It's the easiest way to learn new skills. [18:15.960 --> 18:22.860] If you want to learn how to program, well, everyone will tell you sit down and start a project, you know, write a text editor and something like that. [18:23.080 --> 18:30.780] But as the number of open source projects out there periphery and we see more and more source code and more and more licenses, it just gets more and more complex. [18:32.480 --> 18:41.600] Companies are starting to flock to free software and open source because it's easy to support something like a blog or a website that you want to set up yourself without actually really investing significant income in. [18:42.180 --> 18:46.840] Internet startups that need to start on low, small amounts of capital are really using a lot of it. [18:46.960 --> 18:50.520] And people are even looking to writing open source projects as supplemental income. [18:50.960 --> 19:01.400] which when you get into that, you may not necessarily license the code, but you can sell documentation of books and so forth, which can really complicate the stints of how do you limit competition when other people are doing that. [19:03.400 --> 19:15.360] So about the same time when a lot of people were coming to free software and becoming more focused on it and getting involved in it, the FSF as a group became a lot less focused on the GNU project, which was actually a full replacement operating system. [19:16.620 --> 19:25.900] Back in the 1990s, if you wanted to get involved with the FSF, you'd go to their website, and they'd have a list of all the programs that they needed in order to have a complete and free operating system. [19:27.480 --> 19:28.840] That's no longer the case. [19:29.120 --> 19:44.540] Since Linux and GNU plus Linux have kind of emerged on the scene, there's less interest in focusing on getting a complete operating system and actually directing the community to write specific portions of code as there is on trying to address all these complex licensing issues that are coming up, [19:45.040 --> 19:55.660] you know, advocating free software to all the companies and new types of software that are emerging, and basically just educating people on what a license is and why software should be free and why it's important to have access to it. [19:57.160 --> 20:02.320] But now what we have is that free OS coordination is completely split between commercial interests and the free software foundation. [20:02.320 --> 20:07.620] We have, you know, GNU plus Linux and Linux and all the distributions that are of GNU plus Linux. [20:08.280 --> 20:11.800] The BSD distributions and even new operating systems emerging like ReactOS. [20:12.180 --> 20:16.360] And with that split, we're getting even more and more duplication of work. [20:18.020 --> 20:22.140] We're seeing a lot of programs forked in order to avoid license conflicts. [20:22.740 --> 20:28.880] Tremendous numbers of re-implementations of simple things like editors, mail clients, you know, graphic editors and IDEs and so on. [20:28.880 --> 20:39.180] If you actually go to the web or something like FreshMeet and you search for some of these basic applications, you can see hundreds, even sometimes maybe a thousand different versions of them if you actually search on the Windows platform as well. [20:39.660 --> 20:45.680] And a lot of those are nothing more than the, you know, the inclusion of a component in a basic application structure. [20:45.900 --> 20:47.180] No actual code writing. [20:47.920 --> 20:50.720] But code is produced and it's licensed and it's made available. [20:53.580 --> 20:57.540] So how can we better spend the time that we're producing all these thousands of applications with? [20:57.540 --> 20:59.240] Well, I think number one is innovating. [20:59.660 --> 21:04.920] You know, the free software community actually tremendous amount of innovation. [21:05.220 --> 21:10.440] Things like distributed hash tables and stuff like that that come out of the educational sector almost always emerge first as free software. [21:10.840 --> 21:14.880] The peer-to-peer revolution I think really emerged from the free software community. [21:15.220 --> 21:25.580] But right now I think we're spending so much time re-implementing things to avoid the licensing conflicts that that's really getting degraded and there's a lot less of that going on. [21:26.540 --> 21:30.820] We aren't writing as many free software applications to replace, you know, commercial applications. [21:31.020 --> 21:33.940] You know, to do functions that free software applications don't exist for. [21:34.300 --> 21:37.060] We're not doing as much algorithm improvement. [21:37.320 --> 21:39.220] There hasn't been a lot of new search algorithms. [21:39.360 --> 21:46.920] There hasn't been dramatic improvements to some of the optimizations of the compilers and the different languages and things that we would like to see. [21:47.140 --> 21:50.040] For some examples you can look at some of the new chips with Altivec. [21:50.040 --> 22:04.020] You know, some of the IBM chips and some of the MMX code, you know, places where free software applications could benefit from those types of basic structural architectural changes in microprocessor design where most projects just aren't picking that kind of thing up. [22:05.520 --> 22:09.320] We could be writing code for emerging sciences like bioinformatics and grid computing. [22:09.540 --> 22:13.740] Or even doing things like ERP, you know, payrolls, you know, business efficiency increasers. [22:14.560 --> 22:16.800] And what it all comes down to is what do we want to do? [22:17.400 --> 22:21.420] You know, I'm certainly not going to tell you you have to go write an ERP system if you want to write another editor. [22:23.080 --> 22:28.220] But it's the goal for most of us what Richard said that, you know, all software should be free. [22:29.400 --> 22:34.020] And to me personally, that's not the primary motivation for me writing free software. [22:34.420 --> 22:39.800] It's not as important as I think other things like, you know, rapid technological and scientific advancement. [22:39.800 --> 22:41.820] I'd really like to travel into space. [22:42.280 --> 22:45.920] You know, I'm a huge fan of Richard Branson and some of the space projects and stuff like that. [22:46.020 --> 22:58.900] And if we could get NASA kind of sharing more of their code and working with them to produce code and that kind of thing, I think that we could kind of push that ahead if everyone had access to some of the software and some of the things that are going on there. [22:59.820 --> 23:00.940] Reduce computing cost. [23:01.180 --> 23:07.920] You know, cheaper projects, cheaper products, and higher wages would all result if companies spent less money on software. [23:09.480 --> 23:15.160] In economic debates between do you have all shared code or do you have things that are actually sold, you always find a mixed model. [23:16.200 --> 23:19.620] There's usually a basic level of guarantees like healthcare and nutrition, you know, shelter. [23:19.840 --> 23:22.620] People will make sure you don't starve to death as part of your government. [23:22.960 --> 23:25.180] Higher levels require competition to get to. [23:26.120 --> 23:27.940] Privatization of most companies in the commercial sector. [23:28.140 --> 23:29.740] And limited scholarship for advanced degrees. [23:29.840 --> 23:31.480] Not everyone goes to school for their entire life. [23:31.520 --> 23:32.800] You have to compete if you want to get there. [23:33.120 --> 23:36.740] And some nationalization, things like, you know, mining and oil. [23:36.740 --> 23:39.700] So, what would a mixed model look like for software? [23:42.200 --> 23:45.020] Hopefully, what I would like to see is basic infrastructural code. [23:45.180 --> 23:48.680] The stuff that we're writing over and over and over again, be public domain. [23:50.240 --> 23:55.880] The more complex software, some of the newer stuff, allow that to fall into the copy left. [23:56.060 --> 24:00.140] So that the copy left policy can actually force other people who want to work in that area to release their code. [24:00.140 --> 24:07.820] But what good does the GPL really do with the base of, say, data structure implementation, where that code is already free and everyone already has free copies of it? [24:08.040 --> 24:09.800] The copy left doesn't provide a lot of value. [24:09.820 --> 24:21.300] So if we could kind of solidify on a small number of versions of, say, data structure libraries or basic system libraries or even a system operating kernel, we'd spend a lot less time on that area. [24:21.300 --> 24:23.480] And we'd be able to move up into more important things. [24:24.160 --> 24:27.660] There may be, you know, justification for commercial products at the very high end. [24:27.880 --> 24:31.240] Things like specific research in medical areas and things like that. [24:32.840 --> 24:34.660] Am I writing an operating system right now? [24:34.920 --> 24:36.060] The short answer is no. [24:36.580 --> 24:38.100] The long answer is yes, I am. [24:39.240 --> 24:45.300] What I'm trying to do is come up with a Linux distribution that is, at its core, all public domain software. [24:45.300 --> 24:52.100] So I've been re-implementing the basic Linux commands, some of the basic libraries, and I've started on a small kernel. [24:53.180 --> 24:57.380] It's basically completely written from scratch, and it's going to be distributed as public domain. [24:58.560 --> 25:09.640] The idea being that if we can get one distribution out there, it'll provide kind of a escape hatch, pressure release for everybody who's having, you know, struggles with this kind of problem. [25:11.460 --> 25:13.280] Hopefully, it'll be a step-by-step replacement. [25:13.540 --> 25:16.240] You know, I'm not going to hold it off until I have complete public domain. [25:16.760 --> 25:19.080] Ports like package and patch management will be available. [25:20.300 --> 25:25.540] And I'm also trying to put together code repositories as I do this, you know, RFC reference implementations and cryptographic code. [25:27.460 --> 25:31.280] So what's stopping people from participating in this kind of stuff and doing public domain? [25:31.520 --> 25:33.280] Companies, you know, the revenue models still work. [25:33.700 --> 25:34.960] Software that's not fun to write. [25:35.720 --> 25:38.080] There's support concerns, you know, for things like TiVo. [25:38.840 --> 25:43.200] If you modify your TiVo code and your TiVo no longer works, should you be able to send it back and get it repaired? [25:43.440 --> 25:45.040] Should you be able to have them come out and help you fix it? [25:45.400 --> 25:49.880] In the educational sector, there's really an identity crisis in American schools right now. [25:50.260 --> 25:52.700] You know, are they a public institution to educate people? [25:52.740 --> 25:56.300] Or are they a research institution to do research and generate funding and income from that? [25:56.400 --> 25:59.400] Are they there to spin off, you know, technology transfer in companies? [25:59.460 --> 26:00.780] Or are they there to educate students? [26:02.140 --> 26:09.700] A lot of schools are becoming very secretive about their source with their source code, their software projects and stuff, because they're trying to spin them off into commercial companies. [26:10.480 --> 26:13.040] There's extensive competition for government grants and things like that. [26:13.260 --> 26:15.960] Scientists are competing with each other, so they don't want to share their source code. [26:17.580 --> 26:29.160] One of the more complex things, I think, is that grants, you basically have to have some kind of metric to determine, well, how useful is the software that these doctors have written that we've given them a grant to develop? [26:29.520 --> 26:31.540] For example, the NIH or someone like that. [26:31.540 --> 26:34.620] And right now it's really based on two things, usage and reputation. [26:35.000 --> 26:44.720] As an example, I wrote a sample size calculator for basically clinical trials with some researchers when I was at the University of Florida. [26:45.060 --> 26:57.700] And I tried to convince them to put it under the GPL and distribute it, and they weren't willing to do that because they said, you know, when we apply for the grant that supports the statistical research that involves, you know, funding the mathematicians who develop these models, [27:00.960 --> 27:04.720] we have to provide some metric of how many people are using these models, how useful are they? [27:05.260 --> 27:06.100] Are they worthwhile? [27:06.640 --> 27:10.360] And what they were doing is basically counting web hits for the number of times it was run. [27:10.500 --> 27:20.580] So even though it would be more efficient to run it on a local computer and basically distribute the source code so others could look at it, it was kept on a server so that they were able to protect and provide metrics for their grants. [27:22.380 --> 27:24.140] Again, they also have to protect their reputation. [27:24.400 --> 27:32.840] So just like TiVo, if someone modifies that software and still cites it as useful and they modify it in a way that produces inaccurate results, it's a major problem. [27:34.260 --> 27:36.180] There's cryptographic solutions to that. [27:36.580 --> 27:38.960] TiVo code verification is a great example of that. [27:40.320 --> 27:45.280] Basically what TiVo is going to do is, you know, a checksum of the source code, a digital signature verification. [27:45.280 --> 27:46.860] If it's not there, it's not going to run. [27:48.600 --> 27:50.840] There's a lot of similar ways that you can do that. [27:51.020 --> 27:59.460] You know, Digital Signatures of the output is one way to avoid doing it with the actual source code so that you force people to go to a server when they want something that's actually, you know, valuable and runnable. [27:59.980 --> 28:04.540] If you want to download the code and produce output for your planning and your own usage, you can do that. [28:04.620 --> 28:16.240] But, if you want something that you publish and recognize as something that's useful to someone, Well, then you have to go to a server that actually has a digital signature infrastructure as part of it that will, you know, give you a signed output rather than just, [28:16.400 --> 28:17.420] you know, a basic output. [28:19.120 --> 28:21.240] You can digitally sign your source code as well. [28:22.480 --> 28:25.300] Make sure that, you know, people are validating that source code. [28:25.440 --> 28:29.920] If someone produces an accurate result, you can ask them to produce source code that's verifiable by digital signature. [28:31.180 --> 28:33.980] You can even do complete identity protection with PGP keys. [28:34.080 --> 28:50.180] And I don't go into that too deeply here in this talk, but I do have another talk where I actually show the structures of software signatures and the different formats of PGP keys and stuff and actually go through exactly what happens when you sign source code and what kind of packets you produce and how to decrypt and decode those packets. [28:51.800 --> 28:53.780] There's also some legal mechanisms available. [28:54.380 --> 28:56.240] Trademark law has been very successful. [28:56.460 --> 29:05.520] You know, we saw that with Mozilla and the Netscape is basically they said that, you know, people could download copies of Mozilla and modify it, but they couldn't call it Mozilla after they had modified it. [29:06.840 --> 29:17.940] So, I think that might be something useful for people to look into who are unable to support GPL or are nervous about using public domain software as a format of distribution. [29:19.960 --> 29:21.140] Patents, I really don't like. [29:21.260 --> 29:27.860] And I don't really see how useful an actual patent on source code itself could be or a source code model. [29:28.040 --> 29:40.320] But, you know, patenting something like a technique of inserting, say, you know, radiologically active beads inside tumors or something like that, and then being able to distribute the source code because you have patented the actual method of treatment. [29:40.500 --> 29:43.960] You know, that's possibly a way that some of these people who can't currently release their source code could. [29:44.860 --> 29:56.560] I think it's important to look for alternatives to contract law because contract law is very, very complex and almost always involves really long-term mediations and negotiations in court. [29:57.220 --> 29:58.580] Alternatives to copyright law as well. [29:58.720 --> 30:05.680] You can do limited-term copyrights where you can just say that, you know, this software is copyrighted for a period of three years, after which it becomes public domain. [30:08.240 --> 30:10.720] So, why should you, as a developer, public domain your work? [30:11.180 --> 30:13.840] Like I said, it eliminates the need for re-implementation. [30:14.020 --> 30:14.780] It's more efficient. [30:15.100 --> 30:16.920] There's less versions for other people to shift through. [30:17.480 --> 30:20.460] It saves you from having to deal with the complexity of all the licenses. [30:20.460 --> 30:23.480] And it saves others from having to deal with the licenses as well. [30:24.900 --> 30:26.540] It allows for easier automation. [30:26.860 --> 30:31.940] A good example of where this is a problem now is with the Gen 2 e-merger system when it encounters commercial software like the JDK. [30:32.200 --> 30:37.340] You actually have to intervene by hand and merge the software in yourself so that you can agree to the licensing terms. [30:38.800 --> 30:43.240] I think we're getting close to a point where computers can do some of their own programming themselves. [30:43.240 --> 30:45.960] They can assemble major software systems from components. [30:45.960 --> 30:51.600] And if all those components have contradicting licenses, it may be, you know, prohibitively difficult for them to be able to do that. [30:52.140 --> 30:56.920] And placing things in the public domain reduces liability because it's essentially a good faith effort. [30:57.040 --> 31:02.700] It's not a contract negotiation like the GPL where you're agreeing to provide something in exchange for something. [31:04.260 --> 31:07.580] And again, it communicates a lack of monetary value of software. [31:09.080 --> 31:20.940] So, how to get involved if you actually want to start writing public domain software, either working on the Linux distribution that we're going to try and do, or if you actually want to kind of help us map out the best way to go and so forth. [31:21.520 --> 31:22.760] You're really just starting out. [31:22.900 --> 31:23.740] There's not much there yet. [31:25.040 --> 31:27.960] But keep in touch and be patient and hopefully contribute some source code. [31:28.420 --> 31:31.780] There is a website with limited information, and that's my email address. [31:32.920 --> 31:33.640] Any questions? [31:36.940 --> 31:37.380] Yes? [31:37.380 --> 31:37.920] Hi. [31:38.600 --> 31:54.120] I can see why somebody who's currently writing software in the free software community wouldn't be attracted to your approach because your approach doesn't support the notion of eliminating all proprietary software. [31:54.500 --> 31:59.620] But on the other hand, your approach seems to share many of the same goals as the open source community. [31:59.620 --> 32:01.060] So, I'm curious. [32:01.360 --> 32:19.240] When you go to talk to somebody who has existing software that they license under, say, the new BSD license without the advertising clause or the new MIT license, and you say, hey, do your stuff public domain instead, you know, what is the major argument that they give you not to do that? [32:19.240 --> 32:21.380] What do they not like about your approach? [32:23.480 --> 32:37.520] I think the biggest concern is that when you place something in the public domain, you're not explicitly having people accept the fact that you have no liability, which is one of the major portions of the BSD and the MIT licenses, is, you know, by using this software, [32:37.640 --> 32:40.380] you agree that, you know, and so forth. [32:41.720 --> 32:43.620] I find that people are usually willing to do it, though. [32:43.720 --> 32:48.140] The biggest problem I have is that people, they struggle with the complexity of it. [32:48.140 --> 32:56.140] Like myself, for example, I have a product I would like to move into public domain, but I can't because one of the guys who contributed patches had unfortunately passed away. [32:56.960 --> 32:59.480] And he had contributed patches as GPL. [32:59.720 --> 33:03.340] So, you know, how do I get permission from him to re-license that source code? [33:03.500 --> 33:06.200] And, you know, the GPL prevents me from just taking it. [33:06.280 --> 33:09.180] And I could re-implement it, but his stuff is pretty efficient. [33:09.260 --> 33:14.640] And to re-implement it, it's at such a basic level that I'd have to do it in an inefficient way, and that's not pretty. [33:14.640 --> 33:21.260] So, like I said, to answer your question, I don't find much resistance, but the resistance is mainly liability-related. [33:22.740 --> 33:23.260] Yes? [33:24.200 --> 33:31.400] Well, I've been a Debian developer for many years, and that involves a lot of suffering with licenses and things like that. [33:31.400 --> 33:43.020] So, I have some perspective on that, that generally poorly written licenses and poorly selected licenses generally lead to software not being used. [33:43.240 --> 33:44.340] Basically, it dies out. [33:44.560 --> 33:47.280] And you mentioned some libertarian viewpoint. [33:47.560 --> 33:48.720] I agree with that. [33:49.400 --> 33:52.680] Why not just let the free market let crazy licenses die? [33:54.140 --> 34:06.320] Well, like I was trying to demonstrate with essentially that pyramid slide, with the public command on the bottom, the free software in the middle, and the commercial software on the top, is that I think we could do, have increased efficiency in the market, [34:06.460 --> 34:23.630] if instead of relying on, you know, people's time to sort through that, we allow them to use their time to program, and we sorted through it by making sure there was good reference implementations at the very bottom, you know, essentially preventing that software from kind of emerging in the first place by having a better solution available. [34:27.590 --> 34:28.630] Any more questions? [34:29.930 --> 34:30.790] Thanks, everyone.