[OpenWrt-Devel] [RFC] stop accepting 4/32M board patches

Sergey Ponomarev stokito at gmail.com
Thu Dec 6 14:37:56 EST 2018


Hi,

My first computer had 32 Mb of RAM and I was able to play in Half Life 1
on it :)

Yes, I had an HDD of 2 Gb but also I played in Towers of Hanoi from a
browser of QNX booted from a floppy disk 1.44 mb
http://toastytech.com/guis/qnxdemo.html

That's why I think that 32/4 is actually a lot :)

Now I have a TP-Link WR740N and there is running OpenWrt 18.06 but
without ipv6, pppoe, luci and lua but with uhttpd + tls so the router is
hosting for my homepage.

And there is about 2mb of free space of persistent memory so I even
thought to move my blog because all posts gziped are about the 2 mb.

Someone even installs OpenVPN on such routers but into /tmp folder i.e. RAM.

So what I can say is that 32 RAM/4 ROM routers are working on the last
OpenWrt pretty well thanking by your great job.

Given the mentioned stats https://downloads.openwrt.org/stats/ in top
100 downloads 16 (i.e. 16%) contains tiny word with total of 89917
downloads.

Actually I think that statistics is not complete because a lot of users
like me didn't downloaded a tiny build but built it itself from sources.

In fact most of those builds is just to disable ipv6, pppoe etc because
removing with opkg doesn't frees the space correctly.

Also as a user from Ukraine which is in top 10 of download countries I
can confirm that here old and cheapest routers are most popular.

Here is a list of routers sorted by popularity from the most popular
shop in Ukraine https://rozetka.com.ua/routers/c80193/sort=popularity/

As you can see 4 of 9 most popular routers are with 32 and even 16 mb of
RAM. And this may take years when typical device will have 64 mb.


In the same time in Ukraine the government actively introduces
censorship and already banned most popular in Ukraine websites (vk.com,
yandex, ok.ru) because they are belongs to Russian companies.

The same situation is in Russia where government also bans some
Ukrainian websites and even more like Telegram and LinkedIn.

I talking about this because both Russia and Ukraine are in top-10
countries and I guess that's because a typical usage is to setup OpenVPN
to the cheapest router of your parents.

At least for me that's the but another reason was to enable guest
network (and BTW why Luci just don't have a single button for this?).


The old routers loose support from vendors leaving users vulnerable to
exploits. It's good for users and environment if they can just install
OpenWrt instead of throwing their routers to trash.


If I understood correctly the main problems are:

0. Such routers aren't produced anymore (correct) and not widely used
(unfortunately not).

1. Core OpenWrt developers are not using such devices so they don't have
a personal interest.

2. It's hard to test, it requires resources to build, it consumes a time
of developers to review pull requests.

3. External dependencies like Linux Kernel or ulibc increases their size.

4. Resulting builds sometimes are not fit into 4 mb of persistent
memory. This was solved by introducing a "tiny" builds.


So about the last issue we can solve it by modularizing and by rewriting
software.

Let's take for example Luci as most big part of software.

First of all it turned out that there is luci-mod-admin-mini package and
it's supports only basic configuration which actually covers all my needs.

But the luci-mod-admin-mini was not ever mentioned in wiki and seems
like not used at all.

Even standard Luci can be easily and significantly reduced in twice just
by removing images and icons.

Luci uses a lot of images but they are not in some optional theme
package but in sources themselves (i.e. in
modules/luci-base/htdocs/luci-static/resources/icons).

So just by simple remodularization and moving the icons to theme we can
change tiny-theme without icons and full theme with icons.

I see that javascripts are already minimized (previously the wasn't) but
css files aren't yet.

Even more: we can gzip the files and serve them by Accept-Encoding:
deflate (or brotli) so they will be uncompressed by the browser itself.
I saw a patch for uhttpd that allows this.

With the ability to serve precompressed static content we can switch
icons from png to svg and this can save up to 10% of space.

All this allows us to decrease luci size at least twice.

We can go further and rewrite Luci itself i.e. complete the Luci2
project: get rid off Lua dependency and use JSON-RPC over ubus.

But even this may be not needed: For Tp-Link recently was released a
mobile app Tether to control a router https://www.tp-link.com/us/tether/

We can try to reverse engineer the protocol of the mobile app and
implement it. Given that users can remove Luci and use the app to
configure the router.


So what I trying to say: sometimes the lack of space may mean that
architecture can be improved. Then it's better to fix that or wait until
it will be eventually fixed.

Smaller software is usually works faster so that's a good property to
keep even for larger devices.


If you lack of resources for building images for all those devices then
we can donate some money to you. At least I would like to donate.


So I understand that if core developers don't wont to spend their time
for this then that's ok.

I just want to say that anyway it will be a lot of users who still needs
this.


Regards,

Sergey Ponomarev






_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel



More information about the openwrt-devel mailing list