(Consider this a preview of a rough draft.)
I've read Miguel's papers, even printed them out.
I fully agree: a component architecture is critically necessary. People who say "they don't see the need for one" are right: they don't see the need for one; that's a large part of the problem.
This is a hurdle. Its a major problem that people don't understand that you can't just shove some source at someone and say, "Here; Rip what you want from here", and it's a problem that people can't understand the need for software programs to communicate with one another, and document formats, and a million other things. But, I really don't think people have been given much of a chance to see these things.
It's just way too difficult to learn and use CORBA and Bonobo (as they exist right now).
Let me post my story:
I read Miguels article "Let's Make Unix Not Suck". Indeed; I'm looking at a print out of it it right now, and it's taken a central place on my desk for some time. When I teach UNIX and Python to my students, I recommend it to interested students. Needless to say, I fully and completely agree with everything there.
So, I decide, "I think I'll learn a little more about this; it shouldn't be too difficult." I follow the references embedded in the "Let's Make Unix Not Suck" document (unfortunately, there isn't a "References" section at the end of the document...), and wind up at Miguel's document on Bonobo. I thoroghly study it, critically think about it, annotate it, look things up on the web, ask questions, what now. I'm now looking at my print out of Bonobo. Wonderful! I completely absorbed it. But, that document isn't enough to go on. So, I trace deeper.
GNOME & CORBA. Mathieu Lacage and Dirk-Jan C. Binnema. Straight from the gnome.org web site.
I wish I could say that I was looking at a print-out of it right now. I really do. Unfortunately, I can't. I would, it's just that I would feel too guilty, printing a 300 page tomb at work. I DO however have 61 pages of it printed out. It's really thick. I've managed to sustain the concentration to read 20 pages of rather stiff documentation. (Let me give the authors of the docs a hint: DIAGRAMS and tables. Too many words where a simple diagram would have done the trick.)
Note that, up to this point, I still haven't seen a single sample app, except for a little program to deliver an int over a network that is 2 pages long and involving several steps (building interfaces, skeletons, stubs, and finally implementing a program). I've seen clips of incomplete interface codes here and there, but nothing real; nothing solid.
Hmm. Source code. That'd be nice. I scour the Internet. What?! Google doesn't show mountains of web pages with little programs using bonobo and corba? Ack! "I must be typing something in wrong," I think, and try a few permutations of search.
Okay, now, given the problem, I try something out: How about IRC chat rooms? Granted, I've been ridiculed for asking "simple" questions about GTK+, and I've been given several "What the fuck are you asking us for- haven't you read the mountains of documentation? You aren't 1337; get out of here!" (It turned out, there was no documentation that addressed my questions...) But, I thought I'd try IRC. "Luckily", in IRC, people don't find Bonobo and CORBA to be quite so obvious as well, so I'm spared the ridicule. When I ask about finding bonobo and CORBA components, the answer I get back is this:
There are none.
At least, there are none that are seperate from there apps. Gnumeric has a few interfaces. So do a few other programs. Do a "locate idl" and see what you come up with, and that's about all there are. I have to grep out the "/mnt/.../micros~1/vc98/*.idl"'s to find the very very few that have been implemented in GNOME: A calculator, some control panel stuff, and some Gnumeric stuff.
Pathetic. Terribly sad. I feel personally offended and hurt.
This brings me to my current model of OpenSource developement, and solution, to the problems at hand.
There are categories of OpenSource developers:
- Those without lives. These people are experts at their fields because they have no life outside of them. I suspect that these are the people who were telling me to fuck off. They are brilliant in their world, but are socially disfunctional. They cannot understand that someone doesn't understand what they do. They don't want or need the help of those outside of their field.
- Those who are part of a team that meets with each other. Miguel de Icaza and a band of geographically close members are able to talk with one another frequently. From what I can tell, MDI (Miguel de Icaza) is not a social outcast. (Indeed, I find him to be quite noble and I think we need more people like him. He is honestly comitted to the ideals of Free Software, and wants to share information. He is not an elitist.) MDI and Co. meet physically, or at least on the phone (again, this is my theory), and thus there is a RAPID flow of communication amongst themselves. They can build their software rapidly. Note that, now, MDI & Co. are working at either Red Hat full time, or at Helix Code. The problem appears when they try to communicate with the outside world. Which leads to the 3rd type of OpenSource/Free Software developer.
- The Lost. That's me. That's several others who want to help, but can't. We wish we could shunt off our life to help out for the cause, but we can't, because we know it's foolish. We'd love to meet in the Physical world, but we can't, because we're physically distant. (Actually, I've done something about this myself; I'll describe it in a bit.) It just takes way too long to read all this stuff without pointers to what can be ignored, what is essential, what is good, what is bad. I worked for 2 months on a project before learning that the principle libraries backing it were obsolete. 2 months! Disgusting. We are helpful people. We are smart people. The problem is, we're just NOT in the flow of communication. This is the principle reason why companies will continue to surpass Free Software developers: Everyone building software is together. Sure, you can admin your systems from afar, but develop software? Unless you are prepared to throw your life into it and completely lose touch with society (I know a few of these people; some of them are good friends of mine), you don't have a chance.
Now, what do we do for the 3rd group? I believe that if OpenSource is to survive, the 3rd group will need to be tapped. I think that the carrying capacity for the 1st group has been met: We won't get any more of them. They are a special breed, and I don't mean this in a good way. The 2nd group can expand as long as the market will take it, but I think that the OpenSource market is reaching equilibrium, and it'll be at carrying capacity pretty soon. Which means, we need to tap the 3rd part. And Lord, do I believe that it's untapped. I see people every day who'd love to help, but just can't, because the penetration is too difficult.
Allow me to present my ideas for a solution:
It's all about groupware. The problem is communication, the solution is groupware. We need better collaboration, pure and simple. The only thing that the companies have on us is proximity. They can shout down the hall back and forth more times in a minute than I can through email in a month.
IRC is NOT the solution, just as files are not the solution to disorganized data. Allow me to present a vision of the future of OpenSource programming:
I want to make a GUI for a little app I've made. I go into Glade 2004, and there are hoards of little icons and what not. I place some items in there, and as I do so, I can browse documentation about the icons. Oh, that's odd- the documentation for the GtkEntry widget has a typo in it. I correct the typo, and up pops a little dialog: "Would you like to submit this to the official text?" Yes, I say. "What kind of correction is this?" I read a list, and select "typo". "Thank you". I continue reading the text.
Allow me to digress for a moment: Behind the scenes, several people daily are using glade. When glade started, there was little documentation, though people quickly discovered that they could add to the documentation themselves. It wasn't like WikiWiki; people couldn't just erase everything: submissions were mailed to servers, where managers could say, "Yes, yes, good, let it pass," or, "No, I'm sorry, but we won't erase everything here and put "Bub Rul3z" up in it's place.". Originally, there weren't many docs, so people had to communicate. They did so by saying, "Chat with everyone willing, who's using glade right now." It turns out that, in the future, people are marked up, not just document entities. And one of those markups is "using glade right now and willing to talk." So someone asked the fellow OpenSource afficionados: "Anyone know how to use a GtkEntry?" Someone volunteered information. It turned out he was busy, but he could share a little information. The person who asked used the seed information they had, grew it, and then wrote the GtkEntry documentation from what they had, and submitted it through the glade app. (Of course, Glade is using component technology, so Glade doesn't have to rewrite all this component stuff, which is used in EVERY program in 2004. Those people who worried about "interdependencies" (reads: reuse) who enjoyed running make config's died out mysteriously in 2002.)
Excuse me; so that was the story of how my GtkEntry stuff got there in the first place. NOTICE how... Nobody had to enlist themselves on any mailing lists. NOTICE how... Nobody had to even open up a mailing program. Notice how people didn't have to log in to IRC, get distracted, and then FINALLY CHECK to make sure that there were actually glade people present. Now back to my story.
So I've made my GUI. Everything was documented, and I was able to talk with people. Okay, this post is getting a little long, so I'm not going to go further. Needless to say, I will be expanding these ideas in future web pages...
All of this is called GroupWare. Currently, GroupWare consists of ICQ, IRC, and e-mail. GroupWare is in the stone ages. Put a little meanly, I keep meeting people I'm not interested in. Put kindly, I can't find the people that I need to talk with. I have to wade through stuff. In the future, GroupWare will make collaboration over the Internet easier. GroupWare will enable OpenSource development to match, and then exceed, the proprietary developers of the world. (Can you imagine Microsoft allowing customers to correct typos for them, or improve their manuals? Unlikely...)
Most likely, open source people won't implement the original groupware that we need; we are too feeble right now, as evidenced by our inability to dissemenate knowledge on how to build components. But, even if we don't build groupware, companies will. We should use the groupware they provide, when it becomes available.
Now, this is very nice, but, what, as individuals, can we do right now?
Again, accepting the premise that communication is the problem right now:
- Move to a metropolitan location. I moved to Seattle. (A month ago, I moved to Kirkland, but it's practically the same thing.)
- Start a group. I'd love to be able to say "Join a group", but you probably can't. "But what about the Linux users groups?" They are great, if you happen to be a system administrator, and you happen to enjoy whining about MS a lot. But that doesn't cut it. In my case, I've decided to start a group. I started free classes in UNIX and Programming in C & Python 6 months ago. We meet twice a week; Mondays for advanced students, and Saturdays for all students. The web pages are at taoriver.net/unixclasses, but are down right now until we get DSL hooked up at the new apartment. (Google still has the classes in it's cache.) So far, I've taught 3 people to program in Python rather well, and they have a good foundation in C. In total, I'm working on a group of 7 right now. One of the people in the advanced class is helping teach the beginners class as well. We have made some libraries that I'd love to post to the net, but can't right now. (Again, the DSL.) We'll soon be using the ArsDigita community system to set up some class space at a student's home web site. So far, we are doing rather well. I hope to penetrate CORBA and Bonobo some day, make it in, and tear it up, so to speak. It's just impenetrable right now. That's the whole of it. Search the web for Bonobo components, I dare you.
People say it's the interdependencies, and people say it's bloated, but that's not really it. That's just whining. The truth is, it's just too hard to use. Our current reserves of type 1 and type 2 programmers are all full right now, and time isn't being spent on making CORBA easier to use right now. Sad, but true.
At any rate, this is probably a little longer than anyone wanted to read. If I posted this to /., I'd probably have a Score: 0 by now; I notice that my best posts at /. get Score: 2, and my worst posts get Score: 5. Hopefully someone will read this, and respond to this.
I've got it on my priority wall to write all these ideas together and post them to the web; I'm going to consider this my rough rough draft.
Please, comment on this. Please help me out. I'm working very hard on this, and I really want to see the vision of OpenSource software succeed. My model may be incorrect, and is completely open to re-evaluation. Maybe I'm just doing things wrong. (I do, fully, believe that you shouldn't have to throw away your life to contribute to OpenSource software and documents; I believe that we can harness "microwork".) Please critique it. Not personally, but here, so everyone can see it.
I sincerely thank you for reading this far, Lion Kimbro
Map Your Thoughts