On "the boundaries between computers"

blog entry posted by lalo (Lalo Martins) on 2005-09-23 16:39:00

Tags:

Rough sketch of how I would like to use my laptop and my (more powerful) office computer (let's call it the "station"). For the record, the station has two monitors, as of this writing.

When I say data is "in" a computer, I mean I'm able to use this data when I have this computer and no other, and I'm unable to use this data when I don't have this computer.

...it depends on what results you're trying to achieve.

blog entry posted by lalo (Lalo Martins) on 2005-09-19 13:50:00

Tags:

Tom's comparison between his own commercializing plan post versus Jono Bacon's OpenOffice article strikes me as a perfect example of the two languages that are being spoken these days.

Essentially, Tom says: "the freedom to use, study, improve, and share source code", and then goes on to "The intractability of the stack means that the hard won software freedoms which apply to its source code apply more "on paper" than in practice" , finally proposing to "advance software freedoms, take a worthwhile leadership role in determining the future of personal computing, and earn a profit".

In contrast, Jono goes on about "the responsibility for the suite to help the push to Open Source", "marketing", and "software blessed by the Open Source methodology".

Tom describes the article's plead for more developers and shorter release cycle as "rearranging the deck chairs". From the point of view of Tom's post, it surely is; on the other hand, from the point of view of Jono's article, Tom's post is trying to solve a solved problem.

Maybe I'm still under the effect of dinner with RMS, but this sounds to me like one of those Free Software vs. Open Source things.

Free Software

So, we believe in these fredoms. We are not interested in software that doesn't give us these freedoms. We have reached the "first base" in our goals; we have a complete, usable environment which can be used for our daily activities. Now we need to improve it significantly, and reintroduce innovation (there is a lot of innovation in Free Software, but 99% of the time, it's just catching up with non-free software; the innovation either "doesn't catch", or only "catches" after being copied and modified by non-free software).

On the other hand, we also need money to live.

So how can we go about doing those things, while still making a living, and that without compromising our beliefs?

Open Source Software

So, we have this really cool model for developing software, which is more cost-effective and may result in more reliable software. We have reached the "first base" in our goals, in that we made our model known and trendy; open source software is a serious contender in the server market, and many companies are open-sourcing their products to reap the benefits we claim to exist.

Now what we need to do is get it on the desktop too, so that we can get more market share. Of course, in order to do that, it's essential to be able to interoperate with closed-source software, specially run on closed-source platforms.

So basically, we need to convince everyone who is profiting from this to give some contribution.

Success of Open Source

We measure success - depending on who you ask - by either the number of people using open-source, or by the revenues of companies/projects based on it, or by how much money is saved thanks to it.

Success of Free Software

We measure success in different ways. The success of a tool is measured by its quality (doesn't matter if it has three users in the whole world). The success of the toolchain is measured by our ability to get on with our lives without requiring non-free software. The success of the "movement" is measured by the awareness of people about the software freedoms.

But they are the same software!

The problem here is, while the goals are to some extent incompatible, the software is the same. (Well, not completely, but the overlap is very close to 100%.) Many people writing Free Software or open source don't really care which one they're doing. Many people advocating them don't make a clear distinction.

People or companies who develop open source are usually helping Free Software (often against their will), but can sometimes also be harmful. People or companies who develop Free Software are usually helping open source (often against their will), but can sometimes also be harmful.

Myself, I do Free Software for personal choice, but I'll accept an open-source job if it doesn't require me to do things harmful to Free Software (I am in fact in one such job right now).

What? You want to know if I have a point? Yes, I see, this has already run quite long-winded, I'm sorry. I guess my point is that, well, open-source people should acknowledge the existence of Free Software and pay it a bit more respect; and Free Software people should keep an eye open for the fact that not everyone who is developing the same stuff as you, is doing it with the same goals.

Where I'm Coming From, part II

blog entry posted by lalo (Lalo Martins) on 2005-09-15 08:07:00

Tags:

...and now that you have the history behind it, let me try to put in words my basic point of view on computers.

Let me begin by saying that, as of today (and this has been true for many years), all systems I know about, suck beyond tolerance. And yes, I have used OSX. It sucks too. (By "system", an intentionally vague term, I mean OSes, and GUI environments, the general UI/API paradigms, and so on.) And they are "improving" in the wrong direction - which means, in 5 years, they will probably suck more, but be more shiny about it.

The premise I'll work with is: there is very little limit to what a computer can do. It is essentially, as I realized when I was about 9, a programmable device; the whole point of its existence is to be customized, to do what you want the way you want.

Modern software is more in the business of telling you what you want.

It might be a "monopoly of magic" problem. Programming is potentially easy, at least for small tasks. But if everyone could program, how would "true" programmers make a living? So the big companies, who very much prefer to stay in business, want you to believe that it's a very arcane art, a burden they are taking away from you - and you should pay them for that. That is, IMO, one of the main reasons they are so afraid of Free Software and open source; we take the stance that, instead, programming is accessible to anyone, and that it's best done in groups (community), and worse, that it's fun. That even the small tasks you can learn to do with a few days of study, can be an useful contribution.

Or it might just be laziness.

To me, a computer which is not programmable, or not conveniently programmable, is at least 50% useless. That's why I eventually abandoned my PalmPilot to buy a VR3 on which I could run Python. Incidentally, that's also how, years earlier, I learned about Free Software, GNU, and Linux... after I was forced to abandon OS/2, I went on the net (which was a new thing for me) in search of a good C++ compiler for Windows, and stumbled on djgcc - which had a great page explaining what is Free Software, and a link to GNU. I was hooked.

But most people are content with what is dumped on them by the vendors; most don't even change the windows color schemes.

I guess what I mean is: I want more developers and less end-users. I want to turn all end-users into small-time developers. My dream system is an infinitely customized thing, where "upgrade" implies some revision-control-like operation of figuring out how the new features fit in with your customizations. Where sharing these customizations is routine, and the system itself gives you tools to do that.

(Yes, I know about Squeak. It's an awesome prototype of these concepts. It also suffers from many other problems that make it unusable as an actual system, most of which are off-topic for this article, but most important of all, being locked into a single programming language.)

The only desktop development that made me really excited recently was the OSX Dashboard (or gDesklets). Not that it's incredibly more accessible than writing an app with applescript or pygtk or even pyobjc; just that it encourages more people to try. But seriously, anyone in the audience whose mother masters enough html and javascript to write an actually useful dashboard thingie (or enough python for a gDesklet one) please raise their hands.

Even in the world of Free Software, we're still bound in "their" thinking, the "ball and chain" way, which makes our systems suck as much as "theirs" (in some aspects, less, in others, more, average 0).

We design our apps to be end-user friendly because, well, we want new users. But few, usually young, projects care about newbie developers (bzr comes to mind). We should do both; aim for a clear model that you can actually explain to someone who is doing high school, for well-tested code (so that people who are learning to program can see exactly what breaks the app), for code that an unexperienced programmer (or someone trying to became one) can actually read and understand, for a programmable interface (be it plugin system, client library, scripting system, whatever) that end-users don't need to be afraid of and that will encourage them to actually learn basic programming. For encouraging communities, where newbies know where to post patches and extensions, where those submissions are actually reviewed, often resulting in hints that help the new programmer improve. (Sometimes even, heh, in actually accepting the patch. The quality of submissions should generally improve with the amount of help available and the clarity of the system, until at some point, total newcomers can actually write usable stuff.)

Eventually, when enough people engage in this "meta-refactoring" principle of clear models and understandable systems, when enough users no longer perceive the tools they use as black boxes, I believe we will naturally suffer a few paradigm shifts in the systems as a whole (now I go back to using "system" in the sense I used on the top of the post), which can gradually help them get rid of the suckiness. My pet peeve is getting rid of the concepts of "application" and "process", which are rooted in Multics/Unix ideas from 30 years ago; but another good point, raised by Tom a few days ago, is that we need to outgrow the boundaries between "computers", and the notion that there are a few minimal components a "computer" must have. (The latter is pretty much dead already. You can run Linux (yes, mr. Stallman, I'm referring to the kernel here) on anything that has a cpu and memory.)

It may turn out that we need new languages, too...

Where I'm Coming From, part I

blog entry posted by lalo (Lalo Martins) on 2005-09-14 08:18:00

Tags:

so I figured the best way to start this blog was to introduce myself.

Not in the sense of "hello, I'm Lalo, I live in China and I come from Brazil, and this here is what I do." I mean, if you don't already know who I am, then you're probably not very interested either :-)

What I mean is - and I don't think I ever discussed this thoroughly with anyone - what do I believe in, from the point of view of software, why am I so adamant about Free Software, what is my vision for the future, what I would like to do to help, and hopefully, why.

In the process, I hope this "braindumping" can also make a few interesting points along the way :-)

But before I start, in the more traditional "blog" style: yesterday at the Beijing LUG we had a great presentation about "Linux adoption in China". The situation seems to be more or less the same we had in Brazil about two years ago. I think it's very promising. And next Thursday we have an exceptional BLUG meeting, to welcome RMS and hear about the history and philosophy of GNU, et al. Yeah, I know how obnoxious he can be, but I'm a big fan, so I'm going :-)

Then, hmm, let's get to it.

The Geek Kid

So I got my first "computer" when I was about eight. On those times, there were basically two categories of computer hobbyists in Brazil; the (very small) Commodore camp, and the Z80 camp, which basically ran Sinclair clones that you would attach to your TV. (The very successful MSX and Apple camps would still take an year or two to form; although there were already a few Apple users by that time, I only heard of them more than 15 years later.)

By that time, my dad decided to switch careers, and become a programmer. He believed computers were the future, and he claimed that in 15 years, personal computers would be everywhere. (What a whacky idea.) So he gave me a Brazilian Sinclair clone, called "TK-85" (and another, identical one to my older cousin). (Or maybe it was an earlier model? Maybe the TK-80?) So while many kids our age were playing with Atari games, me and my cousin were playing with this awesome little box.

And the first user interface I was introduced to, was BASIC. Like all other kids, what I was primarily interested in was playing games; but the TK came with a very good user's manual, and I always liked to read these. And then, the main form in which games were available for this platform, was as source code printed in hobbyist magazines. (Ah, the golden times.) My dad quickly supplied me with a few, but not before I tried to write my own first game (a poor-man's Space Invaders clone with letters shooting dots at other letters).

To compound the "problem", the storage device for the TK was an interface where you could plug a standard tape recorder, and my usual luck with hardware decided to kick in early: I never could get the damn thing to work. Which meant, every time I wanted to play something, I had to type it out first. (I'd typically leave the TK on for three or four days until I got tired of each game, which probably is the origin of my obsession with keeping computers always on.)

So, by the time I met my "second" computer, more than an year later (and an year is a lot of time when you're 9), I had a firmly planted definition of what is a computer: to me, it was - and still is, to this day - a device that you can program to do things. (Yes, during that time I experimented with other uses for my TK, including helping me with the math homework.)

My TK was later stolen, and replaced by a "Ringo", another Brazilian Sinclair clone. By then, I had already seen a PC (at the company for which my dad was programming - it's probably worth mentioned that he lived in another town, about 4 hours away), and another cousin of mine got an MSX. So the "Ringo" was quickly forgotten.

The MSX (even though it wasn't mine) was when I met my first computing community. There were no stores where you could buy MSX software and games; the only "legal" software most people had, was what came with the box itself. But there was a thriving network of people exchanging floppies, and... uh... whatever was the medium we used before someone hacked a floppy drive into the MSX. (Yes, we used floppies before the MSX2 officially introduced them.)

So by the time we all started using PCs (yes, there was a Mac and an Amiga communities by then, but we didn't know about them), I had a firmly planted definition of software: it's something that someone writes (you or someone else), and then you share. I had also an incipient "GNU irk"; the software I started with (on the TK) came as source, and I would often modify it. The MSX software came compiled (and there was no compiler available in our little pirate network), so it was "less cool". On my cousin's MSX, I started writing my own game (which didn't go anywhere due to the lack of a compiler).

The early PC era wasn't much different; we had a copy of DOS, supplied with the computer, and it was already possible to walk into a store and buy legal software, but few people actually did it. We would have boxes or drawers full of "shared" floppies, with all sorts of stuff.

Here I met Turbo Basic and finally learned what a compiler was. After a few weeks of frustration, my dad interfered again, giving me a copy of Turbo Pascal instead; and this was when I figured I could be a programmer.

By this time, I also learned that my father operated in a business model that was somewhat incompatible with my points of view (he built "custom-made" software, which wasn't redistributable and didn't go with sources. But that, in hindsight, wasn't really an important component; he did that because that's what everyone else did, but in practice, what his clients paid for was really the support.) So for the first time, I was prompted to actually think about my points of view, and question them; and my conclusion was that yes, sharing was better. The reason I made this decision... will have to wait for the next post ;-)

So, hmm, ok, I have to go to work now :-) this is my background; tonight I'll get to some more ethereal matters of vision and philosophy.

newer posts