1 00:00:00,18 --> 00:00:13,56 Hello, um, well you probably know what OpenWrt is and nbd is one of the main developers.
Hello, 嗯, 好的, 你可能知道OpenWrt是什么并且nbd是其中主要开发者之一.
2 00:00:13,93 --> 00:00:32,41 Um, Felix (nbd: yes) Fiekau, and you'll hear about the last ten years of OpenWrt. (nbd: Yes, Thank you.)
嗯, Felix, (nbd: 是的) Fiekau, 你将会听到关于OpenWrt的最新十年发展. (nbd: 是的, 谢谢.)
3 00:00:32,41 --> 00:00:41,27 So the OpenWrt project was started a bit over ten years ago and I'd like to take this opportunity to reflack back
所以, OpenWrt项目在大约十年前开始, 并且我很愿意借此机会来回顾
4 00:00:41,27 --> 00:00:48,82 on where the whole project came from and how much it has changed and evolved over time based on
关于整个项目从哪开始, 并且他改变了多少, 和我们做的进展随着时间的演变.
5 00:00:48,82 --> 00:00:56,17 the progress that we've made so. First, I'd like to tell you a bit about what happened in the early days.
首先, 我想要告诉你一些关于早期发生的事情.
6 00:00:56,17 --> 00:01:02,94 As many of you know, and as the name OpenWrt still implies it started out pretty much as
很多人都知道, 由于OpenWrt的名字仍然暗示他很大一部分开始于旧的WRT54G的固件.
7 00:01:02,94 --> 00:01:11,19 the firmware for the old WRT54G. Um the effort to create this firmware started when basically it was
嗯, 创建这个固件的努力开始于当发现这个设备大量使用Linux作为他的基础操作系统.
8 00:01:11,19 --> 00:01:19,36 discovered that this device with a broad content was using Linux as its base operating system,
9 00:01:19,36 --> 00:01:26,06 and initially it was a pretty huge GPL violation because Linksys didn't bother to release any source code
并且他是一个巨大的GPL侵权, 因为Linksys没有公布任何这个设备的源码,
10 00:01:26,06 --> 00:01:33,53 for the device, but that of course didn't stop interested people from trying to hack it from
但是当然这没有停止感兴趣的人通过固件的运行来尝试hack他,
11 00:01:33,53 --> 00:01:39,1 looking into the workings of the firmware, and discovering the limitations of it, and then starting to create
并且发现他的许多限制, 然后开始创建这个固件的替代品.
12 00:01:39,1 --> 00:01:46,74 replacement for that firmware. And this was done in the earlier days based on the ucLibc buildroot
并且这个在早期完成基于uclibc的buildroot,
13 00:01:46,74 --> 00:01:54,86 which was a pretty small and flexible environment to quickly bring up the code for for new target.
这是个非常小和灵活的环境, 来快速适配设备到一个新的target.
14 00:01:54,86 --> 00:02:01,23 And uclibc has the advantage of being much smaller than glibc, which I think the initial device
并且uclibc相比原先设备使用的glibc有很多优势, 更加小
15 00:02:01,23 --> 00:02:09,21 used, so that it started out by basically taking the Linksys GPL tar ball. once it was released which only
因此他通过获取一经发布的Linksys GPL代码作为基础开始.
16 00:02:09,21 --> 00:02:16,73 happened because many people and many of which included one member of the Linux kernel community
这只可能发生, 因为许多人和包括一个内核社区的开发者
17 00:02:16,73 --> 00:02:23,56 actively fought for the source code being released and there was a lot of GPL plan's engineering involved
活跃地域发布的源码进行斗争, 并且有许多GNU计划的工程师加入.
18 00:02:23,56 --> 00:02:29,22 in that effort as well, and some pretty prominent kernel people also take part in that.
并且许多杰出的内核开发者也加入进来.
19 00:02:29,22 --> 00:02:37,52 Back then, I think embedded Linux was still in what wasn't really all that widespread on all areas yet.
回想那个时候, 我认为嵌入式linux还没有广泛使用.
20 00:02:37,52 --> 00:02:43,83 Back then there was still known that the VxWorks
那时有一个著名的VxWorks竞争者,
21 00:02:43,83 --> 00:02:49,26 alternative, which had no GPL requirements and was much smaller than Linux, but also much
他没有GPL需要, 并且比linux更加小, 同时也更加不灵活.
22 00:02:49,26 --> 00:02:58,94 less flexible. So he opened on the RT started out with the Linksys tarballs. It was it still resembles that
因此他
23 00:02:58,56 --> 00:03:03,14 lot of the structure of office buildings. The system when running on the system, even though it
24 00:03:03,14 --> 00:03:09,37 much more minimalistic and the original firmware because it always had the intention of creating
25 00:03:09,37 --> 00:03:16,1 new from scratch. So the first step of course is one. Once there, the code was running based on
26 00:03:16,1 --> 00:03:21,49 build food in the Linksys GPL tolerable was reworking it to get rid of this horrible dependency
27 00:03:21,49 --> 00:03:28,6 which weighed in at a few hundred megabytes I think or maybe one hundred and fifty. So the first
28 00:03:28,6 --> 00:03:33,32 was tutor to get rid of fat and basically only pulling the required parts which were much, much
29 00:03:33,32 --> 00:03:42,89 than the entire carpal and then the focus on the initial effort was also to update the latest two
30 00:03:42,89 --> 00:03:48,02 Four kernel. This was in two thousand three and two thousand four, long before we had a working two
31 00:03:48,02 --> 00:03:57,73 Six kernel, so when when I got involved in the project. I basically started with the first of
32 00:03:57,73 --> 00:04:05,69 several build system rewrites. I put a integrating something we could package software for the system
33 00:04:05,69 --> 00:04:14,86 minimal effort on this and also led to our first actual release that we can. We came up with the idea
34 00:04:14,86 --> 00:04:21,29 naming our releases. After all cafés, cocktails are offensively as was called White Russian and
35 00:04:21,29 --> 00:04:28,65 version number is also interesting because back then, we still believe in at some point, eventually
36 00:04:28,65 --> 00:04:35,57 up with a one. Oh release and we felt that we will look getting pretty close to it. So we called
37 00:04:35,57 --> 00:04:44,88 zero. Nine and with that really stung. We again have time to to come up with more interesting developments
38 00:04:44,88 --> 00:04:51,63 work on that and actually after the white Russian release we've made lots of big changes we shifted
39 00:04:51,63 --> 00:04:57,89 from the bottom platform which the laces to my device was based on and in the white Russian release
40 00:04:57,89 --> 00:05:03,63 We had actually supported many devices running on the same platform, but he was still very much based
41 00:05:03,63 --> 00:05:10,01 the code of the welcome SDK, so we decided it's going to be multiplatform and we rebuilt the build
42 00:05:10,01 --> 00:05:19,05 again and I was again part of that effort we make major changes to ensure that it's not platform specific
43 00:05:19,05 --> 00:05:26,95 It's not device specific and were able to to create more features and more different platforms to
44 00:05:26,95 --> 00:05:33,34 support, and we actually also came up with our own configuration system because the old system
45 00:05:33,34 --> 00:05:40,35 still still very much inherited parts of Libya to pay structure which the rate includes being
46 00:05:40,35 --> 00:05:47,94 famous end of the run support, which is basically just a keyvalue storage dump into one partition
47 00:05:47,94 --> 00:05:55,74 which has some device specific works is unlimited in configuration and we didn't feel like bringing
48 00:05:55,74 --> 00:06:03,77 legacy baggage to other platforms as well. So we created our own country him, we decided from Prima
49 00:06:03,77 --> 00:06:08,33 the beginning that we want to have all configuration condo through a single system. At least everything
50 00:06:08,33 --> 00:06:15,2 relevant on the system and instead of going the traditional limits way of just having everything
51 00:06:15,2 --> 00:06:21,41 configured in its own config file format and try to come up with various clever hacks of auditing
52 00:06:21,41 --> 00:06:27,2 modifications to those we use our own central configuration storage, which was designed to
53 00:06:27,2 --> 00:06:34,43 basically ninety percent of the requirements of public system but I've got to not make it too complex
54 00:06:34,43 --> 00:06:41,65 complicated so you have excited really put the cover everything with a single code because this
55 00:06:41,65 --> 00:06:47,59 would have added too much complexity for the whole system actually complexity is one of our main enemies
56 00:06:47,59 --> 00:06:53,02 The states. I think this trade-off was a good choice. And with the transition, all from from the
57 00:06:53,02 --> 00:06:59,22 microphone CodeBase and away from the traditional NPM configuration interface. We also have
58 00:06:59,22 --> 00:07:07,53 basically rewrite our web interface from scratch so it was it was lucky that some people from the
59 00:07:07,53 --> 00:07:13,63 project, who also needed a new web interface for this new code base decided to create something that
60 00:07:13,63 --> 00:07:20,05 only fit their needs, but decided to do, where would it make it a part of the open of your key system
61 00:07:20,05 --> 00:07:28,68 well. So, given that the scope of these changes, and how much we did, and in the short time we decided
62 00:07:28,68 --> 00:07:34,65 was actually decided before many of the changes were made in such a cold assistant County constant
63 00:07:34,65 --> 00:07:40,34 I think, is a fitting name, given how radically the project changed during that time and again. Here
64 00:07:40,34 --> 00:07:47,45 see that it has a nice recipe and it easy to mix and you can have fun with the cocktail as well as
65 00:07:47,45 --> 00:07:58,85 system then after County Counsel was released and actually we did several releases with that
66 00:07:58,85 --> 00:08:06,59 because at that point in time him time to come up with with a more fitting name for the individual
67 00:08:06,59 --> 00:08:11,29 because we were so busy hacking on incremental famous. We decided that it's time to focus on more
68 00:08:11,29 --> 00:08:17,96 stabilization. Of course, at the same time we also have the usual churn of adding more targets
69 00:08:17,96 --> 00:08:25,27 packages and updated our compiler, but better than radical aspect of the changes that we made it is
70 00:08:25,27 --> 00:08:35,12 some ways actually backfired on us, so we all thought again had a very fitting release codename
71 00:08:35,12 --> 00:08:44,16 then after we did the backfire release of it was again time to to change its sutler revisit some
72 00:08:44,16 --> 00:08:50,07 the other design decisions that we made. For instance, it limits two. Four support that we still
73 00:08:50,07 --> 00:08:56,39 because we needed a block on my list drivers that it was getting stale and was getting really annoying
74 00:08:56,39 --> 00:09:04,89 maintaining a system when they we had at that time we had many targets running Linux two. Six and
75 00:09:04,89 --> 00:09:11,5 had one single target brought on target still running Linux two. Four and in the meantime, actually
76 00:09:10,2 --> 00:09:17,14 lot of development have happened on replacing the binary driver with the open source before E3 driver
77 00:09:17,14 --> 00:09:24,56 it's still not at the point were to replace the binary drivers about in the meantime, we also managed
78 00:09:24,56 --> 00:09:30,36 get a binary driver as a replacement up and running on the Linux two. Six target of the last ones
79 00:09:30,36 --> 00:09:39,26 updated as frequently, so we decided soon, since we're going to do some more changes. Again we this
80 00:09:39,26 --> 00:09:46,47 focused mostly on the use of space. We work because we still had a system that was running a lot
81 00:09:46,47 --> 00:09:54,89 telcos and much, much of it was getting very slow and hard to maintain because it's easy to to create
82 00:09:54,89 --> 00:10:02,53 simple scripts with shelf, but once you start making a bigger system with lots of configuration of
83 00:10:02,53 --> 00:10:07,79 under some especially if you have all the side effects of things that need to be restarted if
84 00:10:07,79 --> 00:10:14,58 configuration changes or the networks set up. It especially was getting very complex because
85 00:10:14,58 --> 00:10:22,07 started supporting many different configuration types with complex apologies of bridges. Routing setups
86 00:10:22,07 --> 00:10:29,92 We have complex firewall things, and it was just too cumbersome to keep all that as shell scripts
87 00:10:29,92 --> 00:10:37,51 we also than started working on IPv6. Because it's the protocol of the future and may well be for
88 00:10:37,51 --> 00:10:48,93 time and this is again reflected nicely in the release name because a lot of our attitudes of how
89 00:10:48,93 --> 00:10:55,31 do things previously changed with the release and much of the use of space. We work we had the
90 00:10:55,31 --> 00:11:02,58 versions of that in the attitude adjustment release, but we're only now praying it to full potential
91 00:11:02,58 --> 00:11:08,36 With the development that's going on right now. I like to go to take a short some short time
92 00:11:08,36 --> 00:11:14,35 interview some of the components that we refilled for the embedded system, which deviate a lot from
93 00:11:14,35 --> 00:11:22,11 you find on a traditional limits distribution. We have our system RPC services called you bus with
94 00:11:22,11 --> 00:11:30,31 name based on on the bus. But unlike the bus. It's small way, I think that would keep us the library
95 00:11:30,31 --> 00:11:36,77 weighs in way over a hundred and fifty kilobytes of something like that and you need lots of other
96 00:11:36,77 --> 00:11:42,9 to get it running as well. Everyone in his half something that's pretty much equally high level
97 00:11:42,9 --> 00:11:48,57 more flexible for our requirements for the embedded systems, and we now have something where Saint
98 00:11:48,57 --> 00:11:53,9 think the system service itself is about twenty kilobytes is a compiled binary and the libraries
99 00:11:53,9 --> 00:12:00,01 maybe thirteen or fifteen kilobytes and it still very high level and in some ways even more high-level
100 00:12:00,01 --> 00:12:10,59 him and I while ago I discovered in the D+ manual way describes the C API of the system at if. If
101 00:12:10,59 --> 00:12:16,85 need to use this your signing up for some pain, and that's what the official documentation set so
102 00:12:16,85 --> 00:12:24,38 wasn't really what we won't all interested in, so we wrote the second component to replace being
103 00:12:24,38 --> 00:12:31,86 old network scripts that we have. We now have a system daemon that sets up the whole thing that
104 00:12:31,86 --> 00:12:38,72 supported with the earlier scripts with the bridges and belongs on the interface with multiple addresses
105 00:12:38,72 --> 00:12:44,89 all that stuff. But now we have one that see daemon that handles all that and I like the shell scripts
106 00:12:44,89 --> 00:12:49,26 It can handle things. We just make it change the configuration and tell it to reload and it will
107 00:12:49,26 --> 00:12:55,77 the minimum amount of work necessary to bring up the new configuration without making it too hard
108 00:12:55,77 --> 00:13:01,07 the implementor choose to handle that with every single particle that we support. Because believe me
109 00:13:01,07 --> 00:13:08,02 it sometimes also have some complex configuration with with tunnels for IPv6 and we have to be p.m.
110 00:13:08,02 --> 00:13:14,11 interfaces that come and go, and all that, and this needs to be handled in a way rate you just change
111 00:13:14,11 --> 00:13:21,89 configuration and have the back and handle all these changes… that the piece of software that does
112 00:13:21,89 --> 00:13:29,26 that and then another thing that we reimplement it was that we have our own kind of system to you
113 00:13:29,26 --> 00:13:36,68 but again, much, much smaller and much more tailored to do the embedded use case, and it's called
114 00:13:36,68 --> 00:13:42,45 and it basically aside from being a kid one and handling the tasks related to that. The only thing
115 00:13:42,45 --> 00:13:50,79 it really does is it keeps track of the processes that was started by unit scripts and make sure
116 00:13:50,79 --> 00:13:56,79 they are restarted when they need to be. And if the configuration change the negative script is
117 00:13:56,79 --> 00:14:03,11 again, and this causes monitoring daemon can decide whether to to actually restart the daemon, or
118 00:14:03,11 --> 00:14:09,05 maybe nothing changed on the system and you can just leave the existing instance running on this
119 00:14:09,05 --> 00:14:15,99 into a pattern that we now keep repeating and and many of the things that we do, which is that
120 00:14:15,99 --> 00:14:22,5 merge the code path for loading the configuration and for reloading at is a big problem with many
121 00:14:22,5 --> 00:14:27,3 this, the existing pieces of software that we found is if they have support for reloading
122 00:14:27,3 --> 00:14:34,13 configuration is usually only added as an afterthought, and if it means that this code path is use
123 00:14:34,13 --> 00:14:41,17 the Gimli, not as well tested as other code paths and if somebody adds new features of it so easy
124 00:14:41,17 --> 00:14:46,31 forget that happened to the reload time after adding it to the load path. This is something that
125 00:14:46,31 --> 00:14:52,96 basically avoiding by deciding to him to make sure that if people at something and we do have
126 00:14:52,96 --> 00:14:57,48 people in the community that no scripting fairly well and they can tweak existing source code,
127 00:14:57,48 --> 00:15:03,72 don't always have a good overview of how the entire system is built. We want to make sure that if
128 00:15:03,72 --> 00:15:09,26 people to come and add features they should do it in a way that if they tested and it works the
129 00:15:09,26 --> 00:15:15,37 things are complex things like my configuration reload are handled well, but are handled properly
130 00:15:15,37 --> 00:15:24,85 well so they don't have to worry about too many side effects of the changes that make and read we
131 00:15:24,85 --> 00:15:30,13 also working on configuration validation in his back and because women with a traditional firmware
132 00:15:30,13 --> 00:15:37,39 we had we had one web interface that supported automated cognitive updates to configuration and
133 00:15:37,39 --> 00:15:42,17 usually did all the work of keeping track of what needs to be restarted on what needs to be done
134 00:15:42,17 --> 00:15:50,74 apply the configuration itself, which is way too complex. If we if you want to have managed networks
135 00:15:50,74 --> 00:15:55,77 When you have a central piece of software that has a database of the configuration of all the
136 00:15:55,77 --> 00:16:03,69 anyone to support something like that to RX you have things like GRC I would just use my ISPs
137 00:16:03,69 --> 00:16:09,68 automatically configure the routers when they should piece of software like this don't really have
138 00:16:09,68 --> 00:16:15,67 worry about the intricacies of what needs to be done after the configuration changed to be doing
139 00:16:15,67 --> 00:16:22,62 all in a single place and that just makes it easier for everybody to deal with and actually the
140 00:16:22,62 --> 00:16:29,77 interface itself. Also, it is also seen some great big changes right now because within the human
141 00:16:29,77 --> 00:16:36,39 service. You can you can basically add an a new API to any piece of software in ten minutes with it
142 00:16:36,39 --> 00:16:43,83 if it if it's implemented in C with very little effort, and you can use that that API from anything
143 00:16:43,83 --> 00:16:50,8 on the system so it makes sense to decide you, you may want to have things running in the browser
144 00:16:50,8 --> 00:16:55,37 talk to components on the system and it's always annoying if whenever you want to do something like
145 00:16:55,37 --> 00:17:02,86 . You have to create a new API that you have to create France's a CGI script to review to do the
146 00:17:02,86 --> 00:17:10,73 talking with assistant service, so we decided we can give the browser direct access to things behind
147 00:17:10,73 --> 00:17:15,36 bus running on the system. Of course their security concerns for that as well, but we decided we
148 00:17:15,36 --> 00:17:22,45 howl all that simply by white listing of the web browser can connect can get a token and motorcycling
149 00:17:22,45 --> 00:17:29,7 set up in this browser may talk to the Cindy's in these things running on the system and nothing else
150 00:17:29,7 --> 00:17:34,42 And this just cuts down than the number of unnecessary abstraction layers that you need in order
151 00:17:34,42 --> 00:17:41,3 get code running so that just makes the code smaller, more high-level end-user to use as well, which
152 00:17:41,3 --> 00:17:52,68 think is pretty good trade-off. So we also focused a lot on our IPv6 integration efforts. We initially
153 00:17:52,68 --> 00:17:59,84 things like Re: DVD running on the system which is used by normal limits. Distributions and we had
154 00:17:59,84 --> 00:18:06,58 other components from red what does well when we noticed that not only are these things very big
155 00:18:06,58 --> 00:18:12,75 They are often not very standard compliant as well, at least in the corner cases and they really hard
156 00:18:12,75 --> 00:18:17,19 integrate with the rest of the system because all these components are typically designed to have
157 00:18:17,19 --> 00:18:24,91 own case kind of API if their own config files. There is not. Not much thought put into making
158 00:18:24,91 --> 00:18:31,83 things integrate well with another system that may have a slightly different design, design, so
159 00:18:31,83 --> 00:18:38,2 basically brought, implementation from scratch. We are have our own DHCP six and brought advertisement
160 00:18:38,2 --> 00:18:45,61 , we decided to to handle all that in user space considerably letting the kernel code listing just
161 00:18:45,61 --> 00:18:50,99 make sure that we can track all the prefixes that we get that we can we can make sure that the kernel
162 00:18:50,99 --> 00:18:56,59 not do weird things that mess up the routing tables which we also managed and are in the central piece
163 00:18:56,59 --> 00:19:01,57 software we want to make sure that if you if you connect the router and you want to run it as
164 00:19:01,57 --> 00:19:08,25 regular IPv6 daughter and you get a prefix, then the prefix is automatically redistributed to other
165 00:19:08,25 --> 00:19:13,42 of the network. If you want to them. If you specify that in the configuration so you don't have
166 00:19:13,42 --> 00:19:20,52 know enough bonds to much about what the Senate is going to be intercepted if I'm getting a prefix
167 00:19:20,52 --> 00:19:26,12 just redistributed to lab or you have multiple networks on different interfaces and you just want
168 00:19:26,12 --> 00:19:31,49 set up some routing between them. These are things that they were the typical in its distribution.
169 00:19:31,49 --> 00:19:37,66 since I was a bit of a hassle, you first have to figure out what config files to use than one.
170 00:19:37,66 --> 00:19:44,86 services to run and we want to make sure that most of these things are really handled well by default
171 00:19:44,86 --> 00:19:52,39 and we also handle to hold DHCP V6 aspect of that as a server. We didn't find any good to the DHCP
172 00:19:52,39 --> 00:19:58,97 service that fit into the space constraints of a typical router because we still run on devices
173 00:19:58,97 --> 00:20:05,73 have four megabytes of flash thirty two megabytes of RAM, and if we have to wait for something like
174 00:20:05,73 --> 00:20:10,45 hundred five hundred kilobytes, just for a simple DHCP V6 server that may be just because it needs
175 00:20:10,45 --> 00:20:16,48 particular SLI rate and it's really a waste of precious space on the more code you have the harder
176 00:20:16,48 --> 00:20:23,7 gets to review all of this. So with the security implications of these pieces of software. It's good
177 00:20:23,7 --> 00:20:32,7 have less code to make sure that people can actually validate at some point, and as I mentioned earlier
178 00:20:32,7 --> 00:20:40,53 we would. We also working on a new kind of web interface where when we previously thought over and
179 00:20:40,53 --> 00:20:45,27 interface written in the left we have some very complex templating setups of the relativist side
180 00:20:45,27 --> 00:20:53,33 actually generating SQL code on the fly with normal forms and things like that so three months web one
181 00:20:53,33 --> 00:21:02,06 Zero stuff so we decided we wanted might make this incrementally with access to two much of the
182 00:21:02,06 --> 00:21:09,92 through the Cuba API through Jason RPC about that we can actually put a lot of the complex logic
183 00:21:09,92 --> 00:21:17,6 typically comprises a user interface completely on the client side and get a nice additional benefit
184 00:21:17,6 --> 00:21:24,03 allowing people with no experience with embedded devices to come up with their own UIs simply by
185 00:21:24,03 --> 00:21:31,84 eventually creating a documented limited set of APIs that you can use to do pre- much everything
186 00:21:31,84 --> 00:21:37,64 with the router and then you have some removal what developers that can just look at this API can
187 00:21:37,64 --> 00:21:45,96 mostly familiar with it because Jason RPC is fairly common in some areas of her development, and
188 00:21:45,96 --> 00:21:51 can create all this by themselves is if you look at the landscape of the available developers.
189 00:21:51 --> 00:21:58,89 aren't that many that no embedded systems well and no back development while still want to do
190 00:21:58,89 --> 00:22:12,87 development him. So the way that we set up the system did. It makes things actually much faster
191 00:22:12,87 --> 00:22:19,99 there is a lot of work involved in and templating HTML and is even the mobile devices are getting
192 00:22:19,99 --> 00:22:25,73 faster with the JavaScript engines, so we might as will just use all that processing power to
193 00:22:25,73 --> 00:22:32,04 better looking and better working UIs and more modularity to all of this and just free up resources
194 00:22:32,04 --> 00:22:42,12 the rudder side where because the space constraints are still pretty tough in some places. I'm again
195 00:22:42,12 --> 00:22:50,8 came up with a fitting name. I think for the next release that women were working on because I think
196 00:22:50,8 --> 00:22:58,47 in many areas where breaking new ground and in terms of what what a typical router design looks like
197 00:22:58,47 --> 00:23:06,58 will breaking a lot of the areas of existing limitations of what the routers do, and freeing ourselves
198 00:23:06,58 --> 00:23:12,43 much of the structure of the legacy devices where we already. I think in a pretty good job of getting
199 00:23:12,43 --> 00:23:18,39 of existing structures and existing design patterns, but it's time cute you come up with our
200 00:23:18,39 --> 00:23:26,32 coherent set of software, so I think there through the release name reflects that nicely and of course
201 00:23:26,32 --> 00:23:32,36 with all these names. There were legitimate cocktails and he can enjoy them as well. Once you're
202 00:23:32,36 --> 00:23:43,26 with your overworked. So, in the third part of the talk I'd like to talk a bit more about that
203 00:23:43,26 --> 00:23:48,76 affects the opening of your key project have on the rest of the industry or how the rest of
204 00:23:48,76 --> 00:23:57,31 industry that influenced the way that we work as well when the WRT54G was still somewhat popular,
205 00:23:57,31 --> 00:24:03,11 it was already losing in popularity compared the devices, especially with the focus shifted away
206 00:24:03,11 --> 00:24:11,68 the bottom platforms back to have some some talks with the link is the representatives of leases.
207 00:24:11,68 --> 00:24:18,53 think they decided to send us some marketing people and they basically asked us a question like why
208 00:24:18,53 --> 00:24:24,75 our product (s) they noticed that there was a lot of popularity attached to the WC fifty four G
209 00:24:24,75 --> 00:24:30,93 they did not understand where it came from and they desperately wanted to build on that success
210 00:24:30,93 --> 00:24:37,86 create another product just like it that have had the same success. But the talks broke down
211 00:24:37,86 --> 00:24:43,68 quickly because they'd they didn't understand that's actually the section of the book diverse set
212 00:24:43,68 --> 00:24:50,17 communities that do different things with these devices that the whole open source aspect is
213 00:24:50,17 --> 00:24:59,21 important as well. And then they the eventually came up with a device that they called the successor
214 00:24:59,21 --> 00:25:06,75 the WRT54G will not officially, but they told us that this is the product that they came up with based
215 00:25:06,75 --> 00:25:13,27 the input that they got and we were pretty it went down pretty much let down by it. Because when
216 00:25:13,27 --> 00:25:19,03 initially released, said it was full of proprietary code for which we have no replacement of that
217 00:25:19,03 --> 00:25:29,16 in time they didn't do much and in terms of efforts for opening up theft, so it took quite a while
218 00:25:29,16 --> 00:25:35,24 for further community to slightly adopt this device, but progress was too slow for it to you to
219 00:25:35,24 --> 00:25:43,14 much popularity and in addition to that they used to some chips that were rather quirky and that
220 00:25:43,14 --> 00:25:51,54 help adoption either. So, since those rocket talks with me also seen some some strange adoption
221 00:25:51,54 --> 00:25:57,89 open earlier tea by a few OEMs. They basically took the system and really figure this out by looking
222 00:25:57,89 --> 00:26:05,79 GPL tarballs of Ulf routers him looking out where they came from. My company is mentioned is in
223 00:26:05,79 --> 00:26:11,94 actual source code. The other author manufactures typically don't develop the pieces of hardware themselves
224 00:26:11,94 --> 00:26:17,53 It is tell the requirements that they have two OEMs, I give them some ideas of what what the branding
225 00:26:17,53 --> 00:26:24,68 going to look like I give them some some nice graphics send some nice design rules about that. Don't
226 00:26:24,68 --> 00:26:31,98 the actual development themselves adopted the OEMs to to create the working products, and as we can
227 00:26:31,98 --> 00:26:38,73 in an GPL source releases. They really don't have a lot of experience with that. And so we see in
228 00:26:38,73 --> 00:26:45,58 OEMs adopt open of your teeth, but instead of reusing the components that we made. They actually
229 00:26:45,58 --> 00:26:54,8 most of the day of properly working unstable parts I decided for some reason to replace those parts
230 00:26:54,8 --> 00:26:59,62 some of the other parts that they kept were actually the ones that we consider to be more fragile,
231 00:26:59,62 --> 00:27:05,47 in the end they tried to re-create their own system, but use open of your key only if the build system
232 00:27:05,47 --> 00:27:12,85 the product regard. The resulting product looked really horrible in terms of code structure and
233 00:27:12,85 --> 00:27:17,3 really shine through, that they did not understand what they were working with, but they also have
234 00:27:17,3 --> 00:27:23,56 intention of contacting us are building a working relationship with us is when we could've told
235 00:27:23,56 --> 00:27:29,03 many things that would've save them a lot of trouble in the implementing the code that day they decided
236 00:27:29,03 --> 00:27:36,64 talking is better because they always it was want to build their own competitive advantages and we
237 00:27:36,64 --> 00:27:43,43 be usually in the end and nothing disadvantages, so we decided at some point we need to go higher
238 00:27:43,43 --> 00:27:50,53 the food chain because OEMs they don't understand the technology well and in many cases they have
239 00:27:50,53 --> 00:27:55,89 rely on the software that they get from the chip manufacturers. If otherwise, they're going to have
240 00:27:55,55 --> 00:28:01,37 lot of trouble getting support for the things that they don't. And if the children you this thoughtfully
241 00:28:01,37 --> 00:28:08,95 some much fewer than the OEM. So if we can get our software infected there that easily trickles down
242 00:28:08,95 --> 00:28:16,71 the rest of the market. So we actually had or have some working relationships with a few of them
243 00:28:16,71 --> 00:28:23,1 have other earth that the other kinds of difficulties depending on which, whenever talking about the
244 00:28:23,1 --> 00:28:30,32 talked some some work done that in collaboration with Pokémon Pharos Atlantic, also decided that
245 00:28:30,32 --> 00:28:37,86 they want to have fun in their own SDK and use of another key instead and we also know starting to
246 00:28:37,86 --> 00:28:45,49 a bit more context media, tech, involving someone to talk a bit about what the issues are
247 00:28:45,49 --> 00:28:51,27 collaboration with no stiffeners. I think one of the most obvious one. One is a complete difference
248 00:28:51,27 --> 00:28:58,86 motivation and given that we've been doing this for a few years and we decided we want to continue
249 00:28:58,86 --> 00:29:05,71 for a while longer. One of our main focus is this code quality and long-term health of the project.
250 00:29:05,71 --> 00:29:12,67 think this is a large part of what made the project itself successful, but there's something that
251 00:29:12,67 --> 00:29:19,23 see isn't going on very much inside the companies of one thing I see over and over again is there's
252 00:29:19,23 --> 00:29:26,07 a very, very strong focus on getting the next product out as fast as possible and making it as cheap
253 00:29:26,07 --> 00:29:33,07 possible, the cost reduction and time-to-market are the primary concern and it's very hard to actually
254 00:29:33,07 --> 00:29:38,32 to company and tell them the way how this thing and we would focus on code quality, and this is going
255 00:29:38,32 --> 00:29:44,48 meet your long-term business very successful if all their focus on right now is just barely getting
256 00:29:44,48 --> 00:29:51,91 next product out the door and then to try to figure out another plan for the future of the main
257 00:29:51,91 --> 00:29:56,35 with our coaches if if they get the product out the door and they immediately after get the pressure
258 00:29:56,35 --> 00:30:02,77 get the next product out the door, so there's never any time left to really focus on the long-term
259 00:30:02,77 --> 00:30:09,36 health and another another very big issue with these companies and stairs with a lot of red tape
260 00:30:09,36 --> 00:30:17,79 bureaucracy going on. The bigger the company, and the more often we get, and it's always very hard
261 00:30:17,79 --> 00:30:23,43 convince them to do things in a particular way when they have lots of the reasons to not do what
262 00:30:23,43 --> 00:30:33,98 saying, which they call company policy so that this pretty much fits in with and another big aspect
263 00:30:33,98 --> 00:30:41,53 There which is the licensing and intellectual property issues in many cases they be want to have
264 00:30:41,53 --> 00:30:47,77 competitive advantages and they realize that hardware is and isn't the only thing that
265 00:30:47,77 --> 00:30:56,1 differentiate themselves themselves on the market. Dave is they cannot always rely on price to
266 00:30:56,1 --> 00:31:03,61 ongoing competing on price to get their products sold because then they reduce their profit a lot
267 00:31:03,61 --> 00:31:08,7 smoke. So they decided if if we going to do this hardware, then we might as well just create some
268 00:31:08,7 --> 00:31:14,9 advantages that will make sure that they only buy our product and not our competitors is only
269 00:31:14,9 --> 00:31:21,01 problem without they aren't particularly good at creating software for their partner and say this
270 00:31:21,01 --> 00:31:28,13 also a big reason why they eventually decided to to talk to us because they need. They realized
271 00:31:28,13 --> 00:31:36,36 actually Odie ends where it by passing their SDKs and we holding something based on" keep even with
272 00:31:36,36 --> 00:31:42,2 limitations attached that they have more trouble getting support so that if their customers a day
273 00:31:42,2 --> 00:31:49,77 things like that that they must be a pretty good reason for them to do it and they I think they
274 00:31:49,77 --> 00:31:55,4 they often still don't understand the full scope of what's going on there under large part of this
275 00:31:55,4 --> 00:32:02,87 a at least with some of the vendors that I talk to their engineering, Reese for some context
276 00:32:02,87 --> 00:32:15,74 controlled by marketing and they have the least understanding of the going on on the technology side
277 00:32:15,74 --> 00:32:23,15 and leaving aside from that, there's also development poses issues inside the company 's new marketing
278 00:32:23,15 --> 00:32:30,71 that that allocates resources for various short-term project, but then they can't even get
279 00:32:30,71 --> 00:32:38,73 comparatively simple things right, like Bronson and in one of the companies that I would did some
280 00:32:38,73 --> 00:32:44,15 consulting work with. I noticed that they were doing all of the development in either unreleased lunches
281 00:32:44,15 --> 00:32:51,81 a customer brunches and then sometimes when they had a bit of time. They occasionally merged chunks
282 00:32:51,81 --> 00:32:58,54 it to the main problems, but it meant that the main bronze was never actually usable for anybody
283 00:32:58,54 --> 00:33:04,34 the merge conflicts getting bigger and bigger so often they did merges between individual release
284 00:33:04,34 --> 00:33:12,68 and merges between individual customer bronzes and there was nobody actually keeping track of
285 00:33:12,68 --> 00:33:18,52 mainline development, bronze, and to make sure that the features that are added once in an and
286 00:33:18,52 --> 00:33:26,82 bronze actually kept in multiple prompts us a means people usually had to do the same work twice
287 00:33:26,82 --> 00:33:33,45 our even more times and nobody was really paying attention anywhere where this code goes, and in
288 00:33:33,45 --> 00:33:40,43 cases we've even seen them and that they make multiple mainline branches based on different business
289 00:33:40,43 --> 00:33:46,25 where I think ninety percent of the code was the same, but first some business units. They decided
290 00:33:46,25 --> 00:33:54,51 they want to have a different directory layout city moved house around and change the filenames
291 00:33:54,51 --> 00:34:01,53 whenever they had to do merges. They always had to manually mangle the changes to it between the
292 00:34:01,53 --> 00:34:09,89 should make sure that the layout somehow fits and I don't I don't know why they did all this effort
293 00:34:09,07 --> 00:34:16,57 pretty much no gain at all on this was one of the company is not only have dysfunctional mainline
294 00:34:16,57 --> 00:34:21,15 sold all the development was going on inside the customer bronzes, but they still needed the
295 00:34:21,15 --> 00:34:33,65 mainline conscious that never really worked, but even aside from the chipset manufacturers. There
296 00:34:33,65 --> 00:34:40,07 also other interesting related to the project activity going on one of the most important ones
297 00:34:40,07 --> 00:34:47,13 obviously upstream integration of our patches. We have several people working for working on theirs
298 00:34:47,13 --> 00:34:52,31 Their target support in open of your key for a particular system on chip, but most of the targets
299 00:34:52,31 --> 00:34:59,75 working on are actually not when it's upstream integrated gas. It makes sense for the same people
300 00:34:59,75 --> 00:35:06,74 do development in inside the open of your key project to also add mainline support to these targets
301 00:35:06,74 --> 00:35:13,52 we we also tend to do the same with at least that the packages that have accumulated many of
302 00:35:13,52 --> 00:35:20,56 patches. For instance, I maintain VFAT driver inside of open earlier teeth and I typically do
303 00:35:20,56 --> 00:35:25,26 development simultaneously for open of the RTI for upstream, so they want to make sure that
304 00:35:25,26 --> 00:35:31,22 upstream, we we get are in open of your heat. We get the changes that we make as fast as possible
305 00:35:31,22 --> 00:35:37,62 the tree because we have a lot of active users that regularly check out our development releases
306 00:35:37,62 --> 00:35:43,7 who want to make sure that the big changes that we make. Don't go stale in all repositories, so we
307 00:35:43,7 --> 00:35:51,72 working on and on many things simultaneously in the upstream project the slot with other interesting
308 00:35:51,72 --> 00:35:57,35 projects. One of the biggest ones that are house for at least the ones one that has been with us
309 00:35:57,35 --> 00:36:05,64 the longest period of time is the far what was then an early adopter from the from the old Delhi.
310 00:36:05,64 --> 00:36:12,61 fifty four G time of their building community mesh network contacts and of course they're using
311 00:36:12,61 --> 00:36:17,39 system a lot because they're there for a minute the building at this opening the European plus a
312 00:36:17,39 --> 00:36:23,81 extra things always. We've always had a very good relationship with that particular name, we get
313 00:36:22,49 --> 00:36:30,26 lot of feedback from them because they do test many things that are the more simply use cases usually
314 00:36:30,26 --> 00:36:39,42 get to test which brings the two another interesting project. I'm sure many of you have heard of
315 00:36:39,42 --> 00:36:48,97 buffer bloat problem where pockets that accumulate delay over and over multiple hops in the Internet
316 00:36:48,97 --> 00:36:54,15 it's always cheaper to add more memory than to actually fix the curing things are at work conflict
317 00:36:54,15 --> 00:37:03,41 So that the buffer pool project maintainers that it it's a bit of a fork of" keep up with it would
318 00:37:03,41 --> 00:37:11,45 collaboration where they want to build a reference to Doctor Stack that fixes the buffer bloat issues
319 00:37:11,45 --> 00:37:19,65 is built upon open W RTM actually is used to prototype many things badly drawn naked into the open
320 00:37:19,65 --> 00:37:28,57 a few project is also doing a lot of research on IPv6 routing and how to put it in into an environment
321 00:37:28,57 --> 00:37:36,78 you have multiple browsers and you don't have this one big layer to domain for everything, and when
322 00:37:36,78 --> 00:37:45,83 mention IPv6. It is also worthwhile to mention that there there there to I think competing IETF
323 00:37:45,83 --> 00:37:51,31 that deal with IPv6 melting at home, which is hidden that at home that and it's nice to see that both
324 00:37:51,31 --> 00:38:02,99 them are based on open of energy on the emphasis pretty much what I have for him. I hope you brought
325 00:38:02,99 --> 00:38:25,98 good questions for him and him and who will give you a you is the Mexico new moon movie, the one who
326 00:38:25,98 --> 00:38:34,68 the just and the addition to the companies who want to have benefits in the software. From the mixer
327 00:38:34,68 --> 00:38:41,44 so that the cosmos by the higher applies because I just applied fees augment many companies don't have
328 00:38:41,44 --> 00:38:48,32 chance, especially in your overall one of the what what much of the wood to make the benefits of
329 00:38:48,32 --> 00:38:59,43 software. Some images as your overall solvent which is the question in all I wanted is just anything
330 00:38:59,43 --> 00:39:07,6 I keep making is to make sure that you just let the development into parts so that you have one
331 00:39:07,6 --> 00:39:13,54 that takes care of the individual concept products that need to be finished quickly, but the also have
332 00:39:13,54 --> 00:39:19,9 separate team, which can be made of a smaller number of people with more technical expertise to
333 00:39:19,9 --> 00:39:25,66 care of the long-term health of the project, so that whenever you create a new product you actually
334 00:39:25,66 --> 00:39:31,94 from under the latest state of long-term health product and then you everything you need to do to
335 00:39:31,94 --> 00:39:38,15 the product out and finished quickly and then you can you can have long-term health product or
336 00:39:38,15 --> 00:39:45,13 project look at the changes that the individual customer projects made and just make sure that it's
337 00:39:45,13 --> 00:39:54,51 cleaned up a re- architected and fits into the overall long-term code health perspective on
338 00:39:54,51 --> 00:40:00,37 question how you send them to your bookmarking final digital rivals for the mainline criminal infidels
339 00:40:00,37 --> 00:40:07,88 . She one of the changes you are getting the diver that the multimillion jesting criminals. These
340 00:40:07,88 --> 00:40:15,96 typically either things that are too specialized for the mainline kernel that don't really are things
341 00:40:15,96 --> 00:40:23,3 are simply not finished yet. This typically always is always really intensify their other mainline
342 00:40:23,3 --> 00:40:29,92 will not like this because sometimes it's a hack. Sometimes it's something that basically only,
343 00:40:29,92 --> 00:40:36,56 need, and other people don't and sometimes just because something is not finished, but it happens
344 00:40:36,56 --> 00:40:47,5 work well far for us and unquestioned mall to the expiration that you have seen some minutes
345 00:40:47,5 --> 00:40:55,13 devices that have some sort of expiration on a floating engine for IP routing on high awarding
346 00:40:55,13 --> 00:41:02,28 impossible to support this amendment segued in( not yours. It plans on the impossible if you find
347 00:41:02,28 --> 00:41:09,8 something that I plan on researching extensively next year. I want to see if it's possible to
348 00:41:09,8 --> 00:41:16,19 integrate this properly with that filter in a way that could possibly be applied upstream, but I
349 00:41:16,19 --> 00:41:23,21 still have to research more about the side effects of that because such changes will be pretty intrusive
350 00:41:23,21 --> 00:41:36,8 to make sure that they don't hurt other normally use cases inside me. The next is open WRT signed
351 00:41:36,8 --> 00:41:43,45 and is wondering what plans there might be for that. I know we don't sign binaries yet we exit music
352 00:41:43,17 --> 00:41:50,78 to do a lot of work on our release build infrastructure, which will happen next year, but I think
353 00:41:50,78 --> 00:41:56,2 of the reasons why this is not that important is because we couldn't I at least I consider the"
354 00:41:56,2 --> 00:42:03,27 binaries mostly something week you contested, but going to use it a lot. You want to build your
355 00:42:03,27 --> 00:42:11,63 anyway because of an earlier TV is mostly targeted at other developers, and that the whole end-user
356 00:42:11,63 --> 00:42:16,3 case is mostly an afterthought because I think that the developer aspect is the one that's more missing
357 00:42:16,3 --> 00:42:25,46 the market, not a related question. I is the source# were using get, then you can use the get hashes
358 00:42:25,46 --> 00:42:32,67 thanks had at least one that is what I think we using it when not using it of the main repository storage
359 00:42:32,67 --> 00:42:37,32 To or we usually point people that want to download it. I think it repositories. Please happen to
360 00:42:37,32 --> 00:42:48,53 as the end internally, but it's automatically sent by teasing open WGR nonroster utilizes I
361 00:42:48,53 --> 00:42:54,89 previous iPhone, even not followed closely the boric effort is a necessity. The ongoing original
362 00:42:54,89 --> 00:43:01,83 from having a general-purpose ill system for devices which may need initial network connection may
363 00:43:01,83 --> 00:43:07,41 offer display like also NAS devices and stuff like not would you prefer I thought they developed
364 00:43:07,41 --> 00:43:14,73 the form of self-help, another energy and keep open the Ricky based mostly on for a targeting
365 00:43:14,73 --> 00:43:24,31 devices. All is the excellent going on on expanding the target device types. It depends on what kind
366 00:43:24,31 --> 00:43:31,95 development for her things if you have lots of packages that you need for for your particular use
367 00:43:31,95 --> 00:43:37,57 then we want to have this as a sort of package feed instead of being developed and inside the open
368 00:43:37,57 --> 00:43:42,37 your key repositories because we're actually trying to offload much of the package maintenance to
369 00:43:42,37 --> 00:43:47,26 other feeds and other communities because, with a limited number of people that we have it just
370 00:43:47,26 --> 00:43:53,27 much to do all the work ourselves, but we make sure that the package. The list is actually maintained
371 00:43:53,27 --> 00:44:01,59 our repository, so it you don't have to go around digging for URLs to get all the packages of this
372 00:44:01,59 --> 00:44:07,54 something we won this part of the work offloaded something where you need to make changes to the court
373 00:44:07,54 --> 00:44:12,94 make things work well and we of course prefer that to be done in the open of your C code base. So
374 00:44:12,94 --> 00:44:19,66 went aware of that the different kinds of use cases that people using with our copious and we want
375 00:44:19,66 --> 00:44:26,34 make sure that we don't have unnecessary force of the main code base hi there I to questions. My
376 00:44:26,34 --> 00:44:33,56 question is, I know that I went over with energy. Energy projects. Sometimes the developers and
377 00:44:33,56 --> 00:44:39,51 have been at odds with things like project purity has there been any efforts to try and collaborate
378 00:44:39,51 --> 00:44:46,08 this project with the other project I'm actually also working with the DWT guys and I'm working
379 00:44:46,08 --> 00:44:58,52 making sure that they will not have to maintain their hackers code base for much longer him
380 00:44:58,56 --> 00:45:03,15 monetize it also has to do it. I would relate and other projects is. I know that seems like opened
381 00:45:03,15 --> 00:45:08,44 your key. For example, there's been like in SDIO driver for wireless target exists to leave New York
382 00:45:08,44 --> 00:45:16,57 of your key kernel patches for very long time. I either many efforts to upstream patches like that
383 00:45:16,57 --> 00:45:22,59 typically in those efforts are made by the people that handed the package in the first place. If
384 00:45:22,59 --> 00:45:27,11 package had somebody you send a patch for a long time ago in the somebody that is really active in
385 00:45:27,11 --> 00:45:33,09 open of your key community. We typically don't go around looking for these kinds of things to mainline
386 00:45:33,09 --> 00:45:38,7 because that would just be too much work for us at this point, but it's something. What we
387 00:45:38,7 --> 00:45:49,59 something new. We try to trade it in the way we can easily upstream it was being developed will have
388 00:45:49,59 --> 00:45:55,85 try to base your build system around that something like scratch box something like a user could use
389 00:45:55,85 --> 00:46:03,65 regulation we haven't really decided because we don't think you really need that we may also support
390 00:46:03,65 --> 00:46:09,41 architectures where there is no decent cueing with support and we have many devices that don't really
391 00:46:09,41 --> 00:46:16,62 well with cueing was so we want to make sure that we don't add value. Additional restrictions or
392 00:46:16,62 --> 00:46:22,92 sure that they used to get a different user experience of using a target that is incurable, supported
393 00:46:22,92 --> 00:46:29,39 and in some in some ways the build system already pretty much does what we need for further these
394 00:46:29,39 --> 00:46:38,59 and I've I've I've design most parts to be as easy as possible will to to change in various ways and
395 00:46:38,59 --> 00:46:43,01 don't feel like abandoning article system in favor of another one because we don't see the advantages
396 00:46:43,01 --> 00:46:54,91 this point. Thanks- other plans to rename the project. Note how this is going on is what the W I T
397 00:46:54,91 --> 00:47:00,4 M also, it's maybe time to read the while, bit.ly, or he could stand for other things like wireless
398 00:47:00,4 --> 00:47:13,37 technologies or whatever. So we got we don't elect him or him and I are just wanted to say him. These
399 00:47:13,37 --> 00:47:18,99 doing so much work on this project. This is actually how I got a new limits its unwelcome. They
400 00:47:18,99 --> 00:47:44,01 much him and you, which so thinks he links that your listing on him and