Lunduke
News • Science & Tech
The True History of vi (and vim)
How a broken pascal compiler, a 300 baud modem, and a 1970s terminal helped create the (in)famous text editor.
August 08, 2023
post photo preview

Earlier this week (August 3rd, 2023), Bram Moolenaar, creator and long-time maintainer of Vim passed away.  The following article -- originally published earlier this year -- has been updated to include a brief history of Vim.


Everyone who has spent any time with UNIX or Linux knows about vi — the ubiquitous text editor that seems to have existed since the dawn of time itself.

Likewise, there are better than even odds that the first time you ran vi (or vim, which is based on vi)… you got stuck and couldn’t figure out how to exit the gosh-darned program.

Don’t feel ashamed. It’s a right of passage.

Your first experience with vi / vim looked something like this. You know it’s true.

What follows is the story of that much loved — and much hated — text editor. Where it came from, who created it, how it was almost very different, and why on earth it is the way it is.

It all started with ed

As with so many stories in computer history, the tale of vi begins long before vi, itself, ever comes into existence.

Our story begins in August of 1969, at AT&T Bell Labs.

There, Ken Thompson was beginning work on what would become UNIX. At that time it was a barebones system, running on a PDP-7, consisting of only three little components: an assembler, a shell… and a simple text editor known as “ed”.

Ed, which is (obviously) short for “editor”, is a line-mode text editor — meaning you edit one line of text at a time. A process which can drive any person to the brink of madness.

Being a line editor, ed doesn’t look like much. So here’s a screenshot of the ed manpage.

Historical Side Note: The design of ed was inspired by QED (which is short for “Quick EDitor"“) — a similar line-mode text editor created for the Berkeley Time Sharing System in the mid-1960s — and was re-written for MULTICS (the precursor to UNIX) by Ken Thompson. So it seems natural that, when Thompson needed a basic text editor for UNIX… he would base it on the design of QED, which he was already so familiar with.

Ed quickly became the defacto line-mode text editor for UNIX — remaining a part of the POSIX standard to this very day.

A wild Pascal appears

A few years later, in 1975, Ken Thompson went to Berkeley (the University of California) and built a Pascal compiler for UNIX.

There, his Pascal compiler came to the attention of a student at UC Berkeley… Bill Joy. The man who would go on to create vi.

From Bill Joy’s 1999 interview with Linux Magazine:

“What happened is that Ken Thompson came to Berkeley and brought this broken Pascal system, and we got this summer job to fix it. While we were fixing it, we got frustrated with the editor we were using which was named ed. ed is certainly frustrating.”

As with so many stories in the advancement of software… work begins when a programmer gets frustrated with existing software.

“We got this code from a guy named George Coulouris at University College in London called em - Editor for Mortals - since only immortals could use ed to do anything. By the way, before that summer, we could only type in uppercase. That summer we got lowercase ROMs for our terminals. It was really exciting to finally use lowercase.”

Anyone who has used ed for any sizable project knows how frustrating it can be to use. While ed has many strengths (and is great for usage via shell scripts) editing large portions of text is not one of them.

Now, with inspiration from the “em” text editor, things really kicked into gear.

From the August 1984 issue of UNIX Review:

“So Chuck (Haley) and I looked at that and we hacked on em for a while, and eventually we ripped the stuff out of em and put some of it into what was then called en, which was really ed with some em features. Chuck would come in at night - we really didn't work exactly the same hours although we overlapped in the afternoon. I'd break the editor and he'd fix it and then he'd break it and I'd fix it. I got really big into writing manual pages, so I wrote manual pages for all the great features we were going to do but never implemented.”

Put simply… ed + em = en. Sort of.

Also, I love the whole “I wrote manual pages for all the great features we were going to do but never implemented” part. Been there!

Modems and Terminals and vi weirdness

Back to the 1999 Linux Magazine interview:

I don't know if there was an eo or an ep but finally there was ex. [laughter] I remember en but I don't know how it got to ex. So I had a terminal at home and a 300 baud modem so the cursor could move around and I just stayed up all night for a few months and wrote vi.”

ed… em… en… [eo… ep?]… ex… then, finally, vi.

That is how we got to vi. The family tree of vi, if you will.

Worth noting here that “vi” is short for “visual mode of ex”. Running “vi” is literally a shortcut for launching the “ex” text editor directly into the full screen “visual mode” instead of the default “line mode”

In fact, if you were already running ex, you could enter the “visual mode” by entering the vi command.

And, what’s that? Vi was programmed on a 300 baud modem?

Seriously. Considering a 300 baud modem is 1/4th the speed of a 1200 baud modem (which transmits text slower than most people can read it)… this explains much of the design of vi.

“It was really hard to do because you've got to remember that I was trying to make it usable over a 300 baud modem. That's also the reason you have all these funny commands. It just barely worked to use a screen editor over a modem. It was just barely fast enough.”

Here, Bill Joy compares the reasons behind the design differences between emacs and vi:

“The people doing Emacs were sitting in labs at MIT with what were essentially fibre-channel links to the host, in contemporary terms. They were working on a PDP-10, which was a huge machine by comparison, with infinitely fast screens.

So they could have funny commands with the screen shimmering and all that, and meanwhile, I'm sitting at home in sort of World War II surplus housing at Berkeley with a modem and a terminal that can just barely get the cursor off the bottom line.

It was a world that is now extinct. People don't know that vi was written for a world that doesn't exist anymore.

Short, single character commands in vi kept things usable even of that slow connection.

As Bill Joy put it, “vi was written for a world that doesn't exist anymore.”

While the hardware limitation of the 300 baud modem had a significant influence on the design of vi… arguably the terminal (and keyboard) being used by Bill Joy had an even bigger impact.

That terminal: the ADM-3A built by Lear Siegler.

The ADM-3A is the model of terminal that Bill Joy programmed ex visual mode (aka vi) on.

For example: Why does vi use H, J, K, and L for cursor movement? Because, on the ADM-3A, those keys doubled as the arrow keys.

The keyboard layout of the ADM-3A.

You’ll also note that the Escape key is where the Tab key is on most modern keyboard. That’s why Esc is the vi mode switching key… it was, on that keyboard, easy to hit without moving your left hand off of the home row.

And, despite common keyboard layouts no longer being like this, vi stayed this way.

Vi almost changed significantly

A fun little sidenote: Bill Joy almost added multi-window support and other features… but he didn’t have backups of his code. And, as is the way, he lost that code.

“I was in the process of adding multiwindows to vi when we installed our VAX, which would have been in December of '78. We didn't have any backups and the tape drive broke. I continued to work even without being able to do backups. And then the source code got scrunched and I didn't have a complete listing. I had almost rewritten all of the display code for windows, and that was when I gave up. After that, I went back to the previous version and just documented the code, finished the manual and closed it off. If that scrunch had not happened, vi would have multiple windows, and I might have put in some programmability - but I don't know.”

Yep. We were this close to vi being quite different in those early days.

But the source code got “scrunched”.

Which is a technical term. I think.

Vi… forever

In May of 1979, Bill Joy — who was also the driving force behind BSD — released the first public version of vi (the visual mode for the ex text editor) as part of the 2nd release of the Berkeley Software Distribution (2BSD).

While, at this point, BSD was not yet a full operating system — it was an archive of a few pieces of software for UNIX — this was the launching pad for what would become one of the most famous (and infamous) text editors ever created.

While vi may have initially only been distributed to a mere 75 people (as part of the 2BSD archive)… it would go on to become a standard of POSIX, distributed on nearly every UNIX-alike system for the last 40 years.

More likely than not, people will be struggling to escape from vi another 40 years into the future.

Heck. A million years from now only three things will remain: cockroaches, Hostess Twinkies, and vi.

All because Bill Joy used an ADM-3A terminal on a 300 baud connection to build a text editor to fix a broken Pascal compiler.

Not too darned shabby for a mode of a text editor written for a world that doesn't exist anymore.

The Story of Vim

As popular -- and historically significant -- as vi is... one of vi's clones is, arguably, even more widely used: Vim.  Linux users regularly vote for Vim as their favorite text editor (or, at least, one of their favorites).

The path from vi to Vim wound through Unix, Atari ST, and Amiga systems... and back again.

  • In 1987, a man named Tim Thompson created a vi clone (from scratch, with no code copied from vi) for the Atari ST.  He called it STEVIE (which stands for ST Editor for VI Enthusiasts.)
  • In 1988, STEVIE was ported to OS/2, Amiga, and UNIX by Tony Andrews.
  • Later in 1988, Bram Moolenaar took the source code for the Amiga port of STEVIE and began modifying it to meet his own needs.  The result was Vim (or "Vi IMitation").  Because it wasn't a fork or port of Vi... but an imitation.
  • Moolenaar would continue to work on Vim for the next few years, eventually making the first public release in 1991.

Eventually (in 1993), the "Vi IMitiation" name was changed to "Vi IMproved"... and Vim was ported to an incredible number of platforms -- from UNIX to DOS to Haiku.

And it still uses those same, crazy, vi default keys... inspired by the ADM-3A.

community logo
Join the Lunduke Community
To read more articles like this, sign up and join my community today
17
What else you may like…
Videos
Podcasts
Posts
Articles
Open Source Orgs Pledge Fealty to United Nations

Linux Foundation, GNOME Foundation, others pledge to "support the needs of the United Nations", promote DEl discrimination & RISE.

The article:
https://lunduke.substack.com/p/open-source-orgs-pledge-fealty-to

00:30:10
Counter-Strike 2 Switched to Wayland (for One Day)

After a number of significant issues when running under Wayland, Valve's CS2 is now back to X11 as default. Wayland advocates blame everything but Wayland.

00:13:19
Debian Has Gone Full Woke

Discriminating against White Males, covering for registered sex offenders, virtue signaling by leaving X/Twitter, and now removing "offensive" packages and supporting anti-White racism.

00:22:09
November 22, 2023
The futility of Ad-Blockers

Ads are filling the entirety of the Web -- websites, podcasts, YouTube videos, etc. -- at an increasing rate. Prices for those ad placements are plummeting. Consumers are desperate to use ad-blockers to make the web palatable. Google (and others) are desperate to break and block ad-blockers. All of which results in... more ads and lower pay for creators.

It's a fascinatingly annoying cycle. And there's only one viable way out of it.

Looking for the Podcast RSS feed or other links? Check here:
https://lunduke.locals.com/post/4619051/lunduke-journal-link-central-tm

Give the gift of The Lunduke Journal:
https://lunduke.locals.com/post/4898317/give-the-gift-of-the-lunduke-journal

The futility of Ad-Blockers
November 21, 2023
openSUSE says "No Lunduke allowed!"

Those in power with openSUSE make it clear they will not allow me anywhere near anything related to the openSUSE project. Ever. For any reason.

Well, that settles that, then! Guess I won't be contributing to openSUSE! 🤣

Looking for the Podcast RSS feed or other links?
https://lunduke.locals.com/post/4619051/lunduke-journal-link-central-tm

Give the gift of The Lunduke Journal:
https://lunduke.locals.com/post/4898317/give-the-gift-of-the-lunduke-journal

openSUSE says "No Lunduke allowed!"
September 13, 2023
"Andreas Kling creator of Serenity OS & Ladybird Web Browser" - Lunduke’s Big Tech Show - September 13th, 2023 - Ep 044

This episode is free for all to enjoy and share.

Be sure to subscribe here at Lunduke.Locals.com to get all shows & articles (including interviews with other amazing nerds).

"Andreas Kling creator of Serenity OS & Ladybird Web Browser" - Lunduke’s Big Tech Show - September 13th, 2023 - Ep 044
2 hours ago

Chess v1.0.4:

Update patch:

  • Change black and white pieces to "allow pieces" and "deny pieces".

  • Change all the piece names to be type1 - type16 to avoid discrimination.

post photo preview

I shouldn't be surprised but DHH is coming under fire in the Framework community and in the moderation circles. They are saying that Framework shouldn't be promoting DHH's review of the Framework Desktop because he is a racists and transphobe. None of those claims are substantiated.It is the typical smearing of anyone who doesn't follow the trans ideology to the T.

I really hope that Nirav will have some backbone and will ignore this. They ignored the outcry that Bazzite was trying to solicit to little kids. They should be able to ignore these claims as well.

I really miss the days where we didn't care about someone's political beliefs. We only focused on what they were saying right then.

post photo preview
Open Source Orgs Pledge Fealty to United Nations
Linux Foundation, GNOME Foundation, others pledge to ”support the needs of the United Nations”, promote DEI discrimination & RISE.

“Who controls Open Source?” is a fascinating topic.

Some of the largest “Open Source” foundations are primarily funded by corporations which, by most estimations, have not historically been fans of “Open Source” or “Free Software”.

Case in point, The Linux Foundation — which brings in roughly a Third of a Billion dollars per year — is heavily funded by corporate sponsors such as Microsoft, Hitachi, Meta, & Tencent. All of which derive most of their revenue from proprietary systems. Likewise Mozilla (bringing in over $600 Million annually) is almost entirely funded by Google.

As the saying goes, “He who controls the purse strings, controls how the money is spent.”

And, of course, we must consider the political control (and influence) over Open Source. Many large Open Source Foundations and Organizations have deep, often financial, ties to political activism organizations — both Mozilla and Wikimedia being some of the more well known examples.

Well.

Buckle up, Buttercup. Because all of this is about to get a whole lot worse.

Enter the United Nations

Back in March, the United Nations announced that 16 organizations had signed on to the “United Nations Open Source Principles”.

The “UN Open Source Principles” is a set of 8 core principles which Open Source organizations are vowing to adhere to. 5 of those 8 principles being fairly obvious and, considering the topic, not at all surprising.

Expected things like “Make Open Source the standard approach” and “Encourage active participation in Open Source”. Oh, and “Make security a priority”.

Ok. Sure. Fine.

I can understand why an Open Source organization might choose to pledge to follow such ideals. In theory, they were possibly doing those things anyway.

But three of the “UN Open Source Principles” raise significant red flags.

 

The Red Flag UN Open Source Principles

Let’s go over those three, red flag raising items. Which every signatory has agreed to.

“4. Foster inclusive participation and community building: Enabling and facilitating diverse and inclusive contributions.”

Inclusive. Diverse.

Over the last several years these have become code words for “discriminate against people we don’t like”. We’ve seen this time and time again — with companies like Red Hat and IBM building entire corporate policies around what skin color they want in their employees.

All hidden behind words like “Inclusive” and “Diverse”.

And the United Nations wants Open Source organizations to commit to that form of systemic discrimination.

Already, this is not great. But it gets far, far worse.

“7. RISE (recognize, incentivize, support and empower): Empowering individuals and communities to actively participate.”

If you don’t know what RISE is, that sentence reads like a bunch of corporate buzz word mumbo jumbo. But it has a very real, very sinister meaning.

What is “RISE”, you ask? It is a codified framework for encouraging exactly the type of discrimination we just talked about — it has become an increasingly widely used tactic among DEI advocates.

RISE is an acronym:

  • Recognize the contributions of “underrepresented or marginalized” groups. Highlight the achievements of “diverse” employees over “non diverse” employees”.

  • Incentivize “underrepresented” groups (with internships, promotions, scholarships, bonuses, etc.) to encourage “diversity”. (read: discrimination)

  • Support “underrepresented or marginalized” groups with tailored resources to ensure “equitable” outcomes. (read: no meritocracy)

  • Empower “diverse” individuals with leadership roles in order to promote DEI.

Sometimes discussion around “RISE” specifically includes language regarding “DEI” and “Diversity”. Other times that exact language is left out — but the core goals and motives remain consistently DEI focused.

It is, in essence, a corporate-speak, checklist for encouraging discrimination.

Which brings us to the last “UN Open Source Principle”. The one which, quite possibly, raises the largest red flag of all…

“8. Sustain and scale: Supporting the development of solutions that meet the evolving needs of the UN system and beyond.”

Did you catch that?

Open Source organizations, which sign on to this compact, are pledging to “support the development of solutions that meet the needs of the United Nations”.

Or, put another way, those organizations are pledging to do the bidding of the UN. Whatever that might be.

The UN is asking these Open Source organizations to pledge fealty to them.

The Open Source Orgs Pledging Fealty

Which Open Source organizations are we talking about? Quite a few of the big names — names which will be very familiar to Lunduke Journal readers — including:

  • The Linux Foundation

  • The GNOME Foundation

  • Eclipse Foundation

  • The Document Foundation (LibreOffice)

And so many others. Heck, even Nextcloud and Matrix have signed on.

 

Many of these organizations (and others) recently met, in person, at the United Nations in New York to discuss — among other things — this formal agreement. This… compact.

The UN Global Digital Compact

In June of this year, the United Nations hosted “UN Open Source Week” — and invited a who’s who of organizations which control Open Source in one form or another (along with a number of smaller organizations which are politically aligned with the UN).

This gathering was officially named “an Open Community for the Global Digital Compact”.

 

Who did the United Nations make a point of inviting to speak to those in attendance?

Let’s go down the list.

 

The Gates Foundation and Mozilla.

Of course.

 

Amazon and, I kid you not, The World Bank.

 

GitLab and Wikimedia Foundation.

 

I found the inclusion of Mastodon a fascinating one. While Mastodon is small (in most ways — even considering the size of their social media network), they align strongly to the political goals and views of the United Nations (promote Leftist Extremism, censor political opponents).

 

And, of course, GitHub. Aka… Microsoft.

In addition, representatives from most of the signatories of the “United Nations Open Source Principles” agreement were in attendance (including the GNOME Foundation).

Some of the presentations were about things like “Ethical” software, interoperability with United Nations systems, “Public infrastructure”, digital “cooperation” of governments, and (of course) “inclusion”.

Many presentations — by many organizations — which already raise significant concerns.

But, and this is important, what did they talk about behind closed doors? What was discussed out of the public eye at the (many) meetings and events where attendees were wined and dined?

That remains unknown.

The Lunduke Journal has asked. The UN isn’t talking. Neither are the attendees.

The Three Masters of Open Source

But we now know, with a high level of certainty, that many of the significant Open Source organizations and Foundations now serve three masters:

  1. The Corporations

  2. The Political Activists

  3. The United Nations

I don’t know about you, but I sure wouldn’t want to have those three masters.

As always, The Lunduke Journal encourages representatives and leadership from any organization involved with this story to reach out — for any reason. Corrections, clarifications, or additional information. Considering the professed commitment to “openness” of every organization mentioned in this story, there should be no reason to continue refusing to speak to journalists regarding it.

Likewise, if you would like to become a whistleblower, there are multiple ways to get ahold of The Lunduke Journal.

Sunlight is the best disinfectant.

And this story needs a heck of a lot of sunlight.

Read full Article
post photo preview
IBM Taking DEI “Under the Radar”
Whistleblowers provide details on how IBM & Red Hat are simply renaming “Diversity” programs, as the company continues discriminatory hiring practices.

Back in April, The Lunduke Journal broke the story of IBM “ditching DEI policies” company wide — including at their subsidiary, Red Hat. This change was announced in the wake of multiple lawsuits against IBM (for their DEI policies) and executive orders against DEI from President Trump.

At the time, activist employees at Red Hat / IBM were not happy (to say the least). Encouraging and planning protests, “raising hell”, and even “killing fascists”.

But, now that a little time has passed, let’s take a look inside at IBM and see how their “ditching DEI” change is actually going.

DEI Staying “Under the Radar”

Thanks to whistleblowers within IBM, we know that employee groups focused on DEI still, in fact, exist. They are simply changing names in order to “stay under the radar” and avoid having “a target on their back”.

 

The “diversity-inclusion” corporate Slack channel, for example, is now named “inclusion-at-ibm”. They simply dropped the word “diversity”.

The DEI Department is Still There

Employees are using that IBM DEI Slack channel to clarify corporate changes to DEI policy. Which, again, thanks to whistleblowers… we have screenshots of.

A few key items:

  • The “DEI Department” has been renamed to “Inclusion” — and now reports to Kitty Chaney Reed (the Chief Leadership, Culture and Inclusion Officer).

  • IBM is no longer part of the Human Rights Campaign — “the HRC no longer align with IBM priorities”.

  • “People can still identify their preferred pronouns in all of IBM systems.”

  • The game-ified “Allyship Badge” system has been removed.

 

As we can see, some DEI policies and programs are gone, while others remain. And IBM is making a point of renaming their DEI Department within HR.

We gain these insights thanks to Ruth Davis — an IBM Executive and who currently identifies as a “DEI Advocate”.

 

These clarifications were published by a current member of the IBM HR team… who was originally hired as a “Diversity and Inclusion Intern”.

 

In short: DEI advocates continue to control IBM HR, and DEI departments continue to exist.

IBM / Red Hat Discriminatory Quotas

Up until recently, both IBM & Red Hat had discriminatory hiring policies — including sex and skin color quotas and even rewards for executives for hiring fewer white men.

We learned, as part of the original leaks supplied to The Lunduke Journal back in April, that “diversity goals are no longer part of the executive incentive program”.

 

Which begs the question, now that a few months have passed, is IBM still discriminating against White Men?

Getting hard numbers on the demographics of new IBM / Red Hat employees is not likely to happen for quite some time — if ever. But here is a picture, posted yesterday, of new Red Hat interns.

That might give us some indication of where things are heading.

 

Well. Huh.

Finding the “White Guys” in this photo of Red Hat interns isn’t quite as challenging as a round of “Where’s Waldo?”… but it’s close.

Now for me, personally, I truly don’t care what the demographic ratios are of employees & interns within a company. Hire the best people for the job, regardless of their sex or ethnicity. Meritocracy is a good thing.

That said, considering the multiple pending lawsuits against IBM and Red Hat — specifically regarding their discriminatory policies towards White Men (and their previously stated goals of hiring less of them) — it is more than a little interesting that their latest crop of Red Hat interns is almost entirely… people who are not White Men.

Results Are Mixed

There are a few good signs in here of IBM dropping DEI related policies — including no longer being involved in the Human Right Campaign and the removal of the (rather repulsive, anti-White) “Allyship Badges”.

Unfortunately, most of the rest of what we’re seeing is less encouraging.

  • “DEI” groups simply being renamed to “Inclusion” in order to stay on the right side of the law.

  • What appears to be continued discriminatory hiring at Red Hat (despite lawsuits and stated policy changes).

  • Executives and HR still heavily controlled by “DEI Advocates”.

  • Corporate systems still using “preferred pronouns”.

While making significant changes to corporate policies can take time — especially across large organizations like IBM — some of these internal reports indicate an unwillingness to drop DEI policies on the part of key IBM leadership.

The Lunduke Journal will continue keeping tabs on both IBM and Red Hat.

Any employees looking to become whistleblowers can find whistleblower resources at Lunduke.com.

Read full Article
post photo preview
LibreOffice Developer’s Hotmail Account Locked After LibreOffice Criticizes Microsoft
“Wow that looks bad,” says Microsoft employee.

Mike Kaginski, a LibreOffice developer (who works for Collabora), has had his Microsoft-hosted email account, which he uses for open source development, locked for “activity that violates our Microsoft Services Agreement”.

 

Kaginski discovered this when attempting to send an email to the LibreOffice development mailing list (hosted by FreeDesktop). It remains unclear if that specific email (which he sent via another address and was rather bland and technical) was the reason for the ban… or if attempting to send the email was simply the first time the ban was noticed by him.

This happened just days after LibreOffice officially accused Microsoft of engaging in a “Lock-in” strategy by creating “artificially complex”, XML-based office documents.

Are the two events related? Hard to say with any certainty.

To make matters worse, Kaginski has had no success in getting Microsoft to lift his locked email account — with the company making him jump through numerous, impossible hoops (such as requiring him to sign in to submit an appeal for his account being locked… but not allowing him to sign in… because his account is locked).

You got that? Sign in to fix the account you can’t sign in with.

Gotta love a good Catch-22.

Good job, Microsoft.

The Lunduke Journal reached out to a contact, within Microsoft, who made it clear that their group was not aware of the LibreOffice Developer’s locked account, but they were aware of the LibreOffice complaint article regarding “artificially complex” XML lock-in. Adding, “wow that looks bad”.

The Lunduke Journal’s Analysis

The odds of locking a LibreOffice developer’s email account being an official Microsoft corporate decision seems highly unlikely.

Microsoft, as a company, makes a lot of bad decisions — but this would just be too stupid for words. A massive PR blunder.

But could a single employee, feeling grumpy, have done it on an impulse? As some sort of revenge for LibreOffice’s “harsh” words about Microsoft? Sure. That seems entirely plausible?

Though, it’s also entirely plausible that some poorly designed AI-driven “naughty activity” detection bot flagged his account. Or, perhaps, the developer was reported by some random Open Source hooligan who likes to cause chaos (there’s a lot of those).

Either way, the fact that Microsoft requires people to log in — on accounts which cannot log in — in order to file an “appeal” is incredibly amusing. And is very, very typical Microsoft.

Read full Article
See More
Available on mobile and TV devices
google store google store app store app store
google store google store app tv store app tv store amazon store amazon store roku store roku store
Powered by Locals