Ubiquiti Announces RouterStation Challenge Winners
Riskable writes "Remember that $200,000 Contest For a Better Open-WRT Wireless Router GUI? Today Ubiquiti posted the winning entries to their support wiki. The grand prize was a tie between PyCI (written by yours truly) and NETSHe with OpenNET as the runner up. Source code and firmware images for each entry are available for download on their respective wiki pages. I'll be setting up a project page for PyCI (and l2sh) soon to make it a participatory open source product. Even if you don't have a RouterStation, or don't care about OpenWRT, there are numerous Python modules and tools inside of PyCI that could prove useful to other open source projects (e.g. iptables.py can read/interpret over 400 permutations of the iptables command). I'll also be checking the comments if anyone has any questions for me about PyCI or the contest in general. BTW: I'd like to thank all the commenters in the original article that insinuated that the technical requirements were impossible and/or that making a GUI to configure such complex things is a waste of time. I read every one and I wouldn't have made it such an obsession otherwise!"
Wow. Thanks for the story about that. I'm not a programmer, but I'm impressed with the work you and people like you do with open source projects.
That was really refreshing to read.
The diversity and expression of human opinion is essential to human survival.
"I'd like to thank all the commenters in the original article that insinuated that the technical requirements were impossible and/or that making a GUI to configure such complex things is a waste of time. I read every one and I wouldn't have made it such an obsession otherwise!""
Ummm - you're welcome?
"As God is my witness, I thought turkeys could fly." A. Carlson
Seriously, when will we realize that the best User Interface is a 3D environment individuals can navigate as easily as the world around us. Just make a quake, darkforces, or HL mod, pull in dynamic data that any web interface can provide, and have the guns change variables in a fun interactive way. Fine fine, use more recent games or engines, but you get my point?
Yo I'm really glad for you and imma let you finish, but your links have the least screenshots of all time, of all time!
Congrats! And, well done!
When there are TWO "first place" winners! HA!
I'm torn between exclaiming "Bravo!" and muttering "Typical..." :-)
Now, we can't decide between Qt, GTK-2, EXT3 or 4 or JFS or, between Beryl or Compfusion or between...
Any way, GOOD WORK LADS! Now, can you find a better way to inject this on most of the horrid little boxes? All that TFTP setup for 1.5 mb of binary, just one time? I can hardly bother!
"Speaking the Truth in times of universal deceit is a revolutionary act." -- George Orwell
You know, my winning entry has a Quake-style drop-down console window. Hit the ESC key on any page in PyCI and it will bring down the terminal just like in Quake and Half-Life (in this case, running the ash shell). I would've used the tilda key but that might actually be used in an input element somewhere.
I know your post was in jest but PyCI actually does include some elements from a first-person shooter!
-Riskable
"Those who choose proprietary software will pay for their decision!"
Looking around at the screen shots of PyCI and NETSHe, I am not terribly impressed. What about these entries makes them better than Tomato, LuCI, etc.?
I'm currently running OpenWRT+Gargoyle on my linksys wrt54g. The reason I picked OpenWRT and Gargoyle was that at the time they seemed to be pretty much the only options if you wanted a fully free-as-in-speech OS and interface on your router. However, Gargoyle is pretty feature-poor.
From a cursory look at the links, I'm still left with some questions. (1) Are these systems really usable and debugged at this point, or are they just proof-of-concept mockups, or early alphas or something? (2) I don't know what RouterStation is, or what Ubiquiti is. Are these general-purpose interfaces that could run on my linksys hardware, or are they specialized to certain hardware?
Find free books.
I won't comment on the other entries since I haven't played around with them yet but I will say this: The primary advantage PyCI has over, say, LuCI, Tomato, DD-WRT, and X-WRT is that configuration screens in PyCI are infinitely configurable. When I say, "inifinitely configurable" I mean that all forms that can be dynamic are dynamic. For example, in Tomato and LuCI if you want to configure DNS you get two fields to enter that information (primary and secondary). In PyCI you can add as many as you want. There's examples of this all over the spectrum of configurable options.
Also, PyCI supports many features that the existing interfaces do not which is sort of the whole point of the contest. As another example, PyCI doesn't just let you configure firewall rules. It lets you configure your firewall rules and then see exactly which iptables command will be executed as the result of your changes.
My personal favorite unique feature of PyCI is the quake-style terminal. Even if PyCI doesn't have a configuration interface for something you can always just hit the ESC key to pull down a full terminal just as if you SSH'd into your router. It even works with full-screen apps like vi. I wrote a standalone version of it called Escape From The Web that can be downloaded here. It uses the Tornado framework instead of CherryPy (among some other differences) but from the user's perspective it is pretty much the same.
There's a whole lot of stuff included with PyCI that isn't covered in detail in the wiki. I plan to put up a downloadable x86 Qemu image with PyCI pre-installed for people to play with soon.
-Riskable
"Those who choose proprietary software will pay for their decision!"
You can actually run PyCI on any old Linux box with Python 2.6+ installed. A lot of the configuration screens won't be useful if it isn't OpenWRT though (pretty much all the network configuration screens won't work but Users and Groups configuration will work great =). So to answer your question: Yes, it'll run on any OpenWRT host with one caveat: You need enough space for the requirements.
PyCI requires Python 2.6 (more than just python-mini) which itself requires libopenssl which is over a megabyte. I forget the exact sizes but your OpenWRT router will probably need 8MB of flash ROM at a bare minimum. You can get around this requirement by using external storage (PyCI doesn't care where it's installed) and loading Python + PyCI there.
There's ipk files for PyCI, pyOpenSSL, and l2sh in the PyCI zip file on the wiki. The rule of thumb is this: If you can "opkg install python" with ~1MB free afterwards you can install and use PyCI.
-Riskable
"Those who choose proprietary software will pay for their decision!"
Can someone recommend some good hardware to run these on?
Last time I bought a router, Linksys was doing their best to kill the WRT line it seemed by putting out new routers with less memory, and slower processors.
I bought a D-Link DIR 655 because it has a fast processor, does 802.11n, and has gigabit ports. Is there any hardware out there that is comparable (or better) that I can throw Linux on?
http://blindscribblings.com - Tasty pop-culture in conceptual fashion.
Looked over the Ubiquiti web site. They seem to specialize in long distance wifi, like up to 50 km. That seems like a niche market.
Would this software be useful for the average Joe?
Seems one of the winning entries was produced by the company running the competition. Most contest rules prohibit this sort of thing because it tends to look bad when you win your own contest.
where can i download pcl+openwrt prebuilt images i can just flash on my ddwrt compatible router ?
WRT, PyCl, ALkJ what? All these words are too confusing. Isn't there something simpler, whiter, and more expensive that could fit in an envelope and do the same job? Like iOpen -WRT?
PyCI looks very nice too, but I'll probably mostly stick with the CLI since I'm comfortable with it. Although I did provide training for the client's IT staff on how to install and configure OpenWRT for their specific requirements, the general idea is that it shouldn't need any configuration changes on a routine basis.
I wish I could buy a Open Source router that had more than two routable interfaces. If I need four, I basically have to go Cisco...why why why?
(I actually need an eight-interface router right now for a rugged field deployment...it appears that only Cisco closed-source fits the toughness bill
Well, it was mentioned on this site.
So it really isn't the the same as your example at all.
Wow, sent an e-mail as suggested when clicking on "use classic" banner, and got a fast response that addressed my msg
Tiny JPG screenshots make baby Vint Cerf cry. Makes me question the credibility of those running the contest.
I appreciate this comment (thanks) but I thought I should mention that I'm not a programmer by trade. I'm actually a Systems Administrator/Security Consultant (CISSP, former PCI QSA). I taught myself Python two years ago and only just recently (within the past year or so) started programming real applications with it. Before that I never wrote anything except for shell scripts. So when I started this contest six months ago I had no idea how to write a web-based application from scratch let alone a contest-winning one.
All in all I'd say the most significant learning challenges during the six months I worked on this contest were:
* Learning how to really program with Python. I had to learn about metaprogramming, how to write decorators, list comprehensions, and lots of OOP things I had no concept of before the contest. My most advanced Python program before this was just a command line SSH tool.
* Learning JavaScript and then learning how to use jQuery and MochiKit (I also tested Dojo when I was first starting out but it was too big/slow for embedded).
* Learning how to write a layer-2 network protocol with a server and client. It took me a week of research and a week of programming to get it running--two weeks before the final draft was due. Kind of insane! The most annoying thing was the fact that there's almost ZERO official documentation and examples regarding layer-2 stuff using Python's socket module.
* Learning about QT and how to program using PyQT4 (for the speed test client GUI).
The good thing was I started out in the contest expecting it to be a learning experience and it sure turned out that way!
-Riskable
"Those who choose proprietary software will pay for their decision!"
I thought I had this in the docs somewhere but I'm not seeing it. Anyway... PyCI requires that python 2.6+ be installed along with pyOpenSSL (an ipk for which is included in the PyCI source package). The packages and dependencies add up to the following:
python_2.6.1-2_ar71xx.ipk: 2.4M
python-openssl_2.6.1-2_ar71xx.ipk 14k
python-sqlite3_2.6.1-2_ar71xx.ipk 40k
pyOpenSSL_0.9-1_ar71xx.ipk 45k
PyCI_0.5-1_ar71xx.ipk 793k
libopenssl_0.9.8k-2_ar71xx.ipk 493k
So in total you need about 3.7MB free (unless I'm forgetting something). Different platforms may have slightly larger (or smaller) binary sizes so your mileage may vary.
For reference, a mostly-fully-loaded (minus Quagga, Coova Chilli, and a few other lesser-used-by-consumers packages) RouterStation firmware with PyCI and l2sh included amounts to about 6.5MB. That includes all the layer7 scripts, ddns-scripts, qos stuff, ntpclient, all the aetheros drivers, drivers for USB storage, most of the firewall kernel modules, and more.
In short, you should be able to use PyCI on any OpenWRT system with at least 32MB of RAM and 8MB of flash ROM.
-Riskable
"Those who choose proprietary software will pay for their decision!"
PyCI checks to make sure that no input element is currently selected before it drops down the terminal. So if you just clicked on a drop-down menu and hit ESC you'd get the expected behavior. Press ESC again and you get the terminal window.
So yeah, I already thought of that and took care of it. The only place where it actually overrides standard behavior is with jQuery-UI dialogs. By default the ESC key closes the dialog but PyCI overrides that feature. It isn't a big deal though... Just hit tab until you get to the cancel button.
-Riskable
"Those who choose proprietary software will pay for their decision!"
Oh come on, *every* advanced configuration interface includes the ability to shoot yourself in the foot! I even had a debate in the contest forum about whether or not I should add a timeout to the page that allows you to reboot your router: If the router didn't come back up after 5 minutes it would ask you if you've updated your resume recently.
Sadly due to time constraints I never got to implement that feature =)
FYI: PyCI runs in "God mode" by default but this behavior can be changed.
-Riskable
"Those who choose proprietary software will pay for their decision!"
There's no reason why it shouldn't run in Mac OS X. Just make sure you have the following installed:
Python 2.6+
pyOpenSSL (not the same as Python's built-in OpenSSL support)
python-sqlite3
You're probably just missing pyOpenSSL.
-Riskable
"Those who choose proprietary software will pay for their decision!"
Can you make it run on matarouter by Mikrotik? That would way cool...
I don't care if it was mentioned on the site. It's an article, not a conversation with my neighbor. What's the point of making this a question, when it's pointless answering it? After all, the article can't hear my answer. And what's with the total cheesiness of it all?
... and then they built the supercollider.
The RouterStation and RouterStation Pro have 3 mini-PCI slots. You can use those to hook up ethernet adapters. I'm pretty sure you can get mini-PCI cards with breakout panels supporting 6 or more ports. I couldn't give you a specific product to use though.
At the very least I know there's dual-port mini-pci cards out there (gigabit, even). So you could add 4 ports with two cards and still have a slot left for a wireless card.
-Riskable
"Those who choose proprietary software will pay for their decision!"
Thanks a lot.
What's the point of making this a question, when it's pointless answering it?
It's called a rhetorical question, you twat. Rhetorical questions don't need to be answered by the reader/listener.
And the article didn't make the question, the submitter did, in the summary, and the submitter will at least be able to see any answer you give.