1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

The state of modern Tomato mods (rant-y)

Discussion in 'Tomato Firmware' started by haarp, Aug 3, 2014.

  1. haarp

    haarp LI Guru Member

    Well, I realize I'm not going to make friends here, but I have to say a few things. It will be scathing, but you have to realize that it's because I care. Note that I am not crying "help me configure my router". Rather, my goal is to actually improve the situation for everyone.

    Let me prefix it all by saying that I do appreciate the efforts of everybody participating here. Also, I would be willing to throw serious money at these problems if it would mean that the Tomato firmware would finally get the love it needs.

    Personally, I'm using Shibby's mod, but I don't wish to single him out. This affects all "modern" Tomatoes.

    Let's start. Quality control sucks. I'm serious. What we have here is hacks upon hacks upon hacks that together just end up somehow working, or often, not working. Things are inconsistent, broken, buggy, ugly, hacked together, could be improved, etc. Plus, there are major usability problems. If we could improve that, we'd have a lot fewer threads here asking for help. I'm not suggesting to dumb things down, rather to improve upon what we have.

    Let me give you a few examples, in case you don't get what I mean. I'm using Shibby's mod on an RT-AC66U.

    There are issues with the wireless:
    • After a while, the firmware simply refuses to do multiple spatial streams anymore. Everybody is stuck at 150Mb/s until the Wifi is restarted on the router.
    • Wifi speeds are sometimes reported as a ridiculously high number in the device list. Seems like there's a buffer overflow somewhere.
    • On a freshly-initialized firmware, it doesn't matter what settings (channel, bandwidth, control sideband) I use, it defaults to channel 36 at 80MHz on 5GHz. And this seems to be the only way to get 80MHz, too. This is bad! This is bugged to hell and back. This is something that really must be implemented properly in the GUI.
    There are problems with the GUI, which is often inconsistent, not quite working, uninformative and outdated:
    • Advanced->Wireless is half broken. There are options there from the times of the WRT54G which won't do anything or break things on newer routers. Why are they there? Transmit power is by default set to 42mW. Is that really 42mW? Does the driver even accept the transmit power? If "0" is the default, why isn't it selected by default? What power level does 0 correspond to on my particular router? Why can I choose the transmit antenna between A and B if I have 3 antennas? I bet this option doesn't even do anything on newer routers. If I set the regulatory region and this breaks 80MHz bandwidth, why am I not informed of that? Why can I even set it to begin with? And why oh why are the countries not properly sorted alphabetically? All in all, this page needs major overhaul.
    • Most pages are extremely uninformative. What's WMM, what does it do? I have to google everything. There should be tooltips for every option when the user hovers over them.
    • Yet, some new pages, such as TOR, do have a "notes" section at the bottom. That's a good start. Other pages like VLAN have expandable notes. Why is it expandable here? That's inconsistent. And a good deal of those notes could be realized very well and user-friendly with tooltips.
    • When the GUI confirms something, it sometimes shows the funny "saving, services are being restarted" thing in the corner, and sometimes it blanks the entire page and shows a message in the middle. That's an inconsistency GUI engineers would scream at.
    • When some pages are saved (Basic->Network, Bandwidth Limiter) the WAN connection is cut. Even if NOTHING regarding WAN was changed! It should check if there was a change to WAN first. I don't want to bring down Internet for the entire building just because I switched the Wifi channel!!!
    There are general and misc problems:
    • Stealthmode is broken, it doesn't disable the 5GHz LED. The blink_5g process (which I can't find any information on) remains and keeps it blinking. It also enables the USB LED when its being switched off despite not having any USB device attached. Looking at the script I stood in awe at how terrible the code was (functions? what's that?). I'm willing to rewrite it myself, but I'd need some help understanding the mechanisms with which the LEDs are handled.
    • When WAN is restarted (because someone changed something in Basic->Network for example), it doesn't disconnect properly. It simply kills ppp. This way, I get to wait 5 minutes before I can reconnect again because my ISP has to timeout my connection first. Whyyyy??
    • etc.

    Some people might not care about these, as long as it works somewhat well. But I'd really prefer quality and an user-friendly, logical experience that feels "right", not "meh, works, good enough".

    I come from the open-source world. If there's a problem, you have a nice and awesome bugtracker to keep track of all your problems. You have code version control systems where everybody can see changes, contribute, fork, etc.

    Sure, the code is sitting somewhere on some GIT server. Shibby has a little bug tracker hidden deep on his half-polish site. Honestly? That does not further collaboration and a healthy development climate. If I wanted to improve and help with a part of the firmware, what would I do? Post it on some forum and pray that some of the modders just happen to see it an decide to have a look at it. If I have a bug and would like to file it, all I have is some bug-tracker for one individual mod that is hard to find, and quite honestly, bad. If I have a question, I need to be very persistent, because the confusing and user-unfriendly GUI causes people to flood the forums with questions that could've been avoided with better design.

    This is bad climate.

    We already have the problem that the firmware community is very fragmented. There's linksysinfo.org, openlinksys.info, tomatousb.org, smallnetbuilders, etc. There are so many firmware mods too, with developers from each split across sites, active/inactive, throwing in code from others occasionally and generally hacking around. And this is cool! We're all hacking around and improving things on our own. But we never grew out of it. And if someone is looking to find a firmware for their particular router, they get to search a lot. Can we expect someone not familiar with our terms to figure out what K24, K26, ND, AIO, MIPS/ARM, etc means?

    In my opinion, the optimal solution would be a huge Tomato framework. A modular Tomato firmware. where features are split into modules that can individually be improved on and fixed. Where I can say "that TOR module, I don't like how its GUI looks, I can improve that" and do so indepedently. And later on, everyone can pick up that improved module and easily add it to their own firmware.

    More, where everyone can add their favorite modules, put them together and have the framework bake a firmware out of it (maybe even via an online buildbot!). Add a central bug tracker, proper maintenance of the core and components and we could have the coolest firmware since sliced bread.

    Yeah, not very likely to happen. Oh well.

    Or maybe we can take some hints from other big projects that try to support many hardware models. Like Cyanogenmod.

    For now, I would really like to see some improvements. Take my examples above, there is a lot more to be done than just that. A good start would be a proper bug/featurerequest-tracker. Let's make Tomato better.

    And as I said, I'm willing to throw money at people who fix bugs and improve my favorite firmware. And I know that these improvements will ultimately benefit everyone.

    Thanks for reading.
    Last edited: Aug 3, 2014
  2. Marcel Tunks

    Marcel Tunks Networkin' Nut Member

    Against my better judgment, I am going to say a few words here.

    A handful of devs do this in their spare time, as a hobby, for fun and for personal use. Your contribution of "serious money" will not be sufficient for them to abandon their jobs. Income, job security, autonomy, variety in day-to-day activities will all be insufficient. If you have a surplus in the tens of thousands per year (which would still be insufficient), then you could consider investing in commercial-grade network hardware where you would have support teams that could provide ample tech support.

    The advanced wireless complaints relate to a couple of things. First, building for different targets by including or excluding VPN, captive portal, etc is very different from customizing the UI for each and every device. For the latter, you should use stock firmware. Second, whether prompts and tips in the advanced sections are warranted is a more personal or philosophical question. In my mind, advanced settings are for advanced users. If you need to Google it, you probably will not be able to make an informed decision based on a few tips. The WMM example you provided is the prototype for this, if you recall the problems experienced by Comcast users for the past several years.

    Regarding the bugs associated with the binary blob wireless drivers, Broadcom could be persuaded to provide source code and development tools if your idea of "serious money" is the same as mine. I fear, however, that it's probably not.

    If you think climate is a problem, try the dd-wrt forums. At least misinformation gets debunked here.

    Cyanogenmod relates to much more expensive and capable hardware with many more users and devices in service.

    The key part of your post is where you hinted that you may be able to contribute. Something like an IRC for devs and aspiring contributors could help people like you to join the development effort. Tomato is a pain in the neck to troubleshoot, and newcomers would need lots of orientation to its idiosyncrasies. In this respect I agree with you.
    Mercjoe likes this.
  3. JTD121

    JTD121 Networkin' Nut Member

    I think we need to get the EFF involved, instead of their Open Wireless Router thing. There are already plenty of open source alternative firmware; it's just getting them up to the standards the OEMs and such, that's really the problem.

    If you're really serious about this, maybe talk to the devs and get something like a Kickstarter going? I'd certainly pledge something. Perhaps audit the code yourself?
  4. thecodemonk

    thecodemonk Connected Client Member

    I'm the IT guy for a software company as well as the head of technical support. I do QA on all kinds of devices, some based on linux, some on Windows CE, and also QA on all of our software. My previous job was the senior software developer for another software company.

    Managing software projects is not easy, especially if it's just a hobby project. I don't know much about developing on Linux (Windows and ASP.Net developer), but if it's anything like any other software project, it's not an easy task to take bug reports from the general population that really doesn't know much about networking in general and then find those bugs.

    With that said, I would be willing to help manage a tomato project. QA/filtering bug reports is what I do professionally.. If any of the devs would be willing to open their project up to the community let's get it on!
  5. HKPolice

    HKPolice LI Guru Member

    I agree with OP completely. Also using Shibby on the AC66U only because of the BWlimiter feature.
  6. Siff

    Siff Serious Server Member

    Although I like some of the points in the OP, I completely agree with Marcel Tunks' post!

    I would also like to add that, if someone has the funds required to invest into developing router firmware full time, it is probably a good idea to hire developer(s) and branch out its own Tomato/dd-wrt/OpenWRT/HyperWRT/... flavour.

Share This Page