Joe Monti

Friday, October 29, 2004

Brainstorming an Open Source Project

I'm trying to find an open source project worth spending my time and I'm stuck. I have so many ideas for projects but none that will really achieve my goals. I guess my goals have changed since I started developing open source software. Before it was to get my feet wet and become a better programmer. Now its to contribute something that will make a meaningful improvement to computing.

I have many ideas on how computing can be improved, but the challenge is in adequately defining them in a project that can be accomplished in todays world as many of my ideas are limited by the technology or the people using the technology. Many of them could be considered research projects, and that is something I'd like to do. Who needs a stinking University to do research (for reasons other than money).

I've been reading a lot lately about consciousness of machines, basically being able to mimic the human capability to think, and there is a lot of interesting stuff going on. I have ideas based around adaptable software (what I call seed theory) and also making hardware capable of carrying out the complex operations (parallel computing).

I also want to improve the way we interact with computers. This is through current project ideas like OSUG and Code Connector. And I also have a bunch of other ideas focusing around improving the user experience. This is mostly just thinking outside the realm of the current computer-user interactions and trying to simplify things. When you think about it there are a number of conventions used on the computer desktop of today, and all of them are controlled by Microsoft.

I probably have too many ideas. I definitely have more open source projects going than I can handle and one would argue that I shouldn't be taking on another. But I actually want to hand off GrubConf and LlamaChat. I like to create, I don't like to maintain.

Friday, October 22, 2004

Simplicity in Software

Why is so much effort put into making software more complex? So much software just keeps getting packed to the brim with features, especially those created by companies who want a catchy feature list. Computers keep getting faster and software keeps getting more complex. No matter how fast your computer is, the software will always be pushing it to its limit. And are we really accomplishing more? I don't think so.

Most people need only 90% of their computers capability; both in hardware and software. Yet people keep wasting money upgrading both. This is because the software vendors keep packing in features and making the old versions incompatible or unsupported. And rather than making the old software better, by fixing bugs or making any number of improvements, they just pile on some more features.

For instance, most people only need 3 basic features in their word processor; record their text, change fonts and text styles, and spell checking. But they keep paying for the 100s of features they will never use. Yeah, the software vendors rationalize this because they get requests from people who ask for the features but it leaves the rest of the people having to pay for it.

Your first reaction may be to create different versions. This would satisfy both the basic majority and advanced minority. And if you made the software modular enough it may be practical. However the advanced version may not be profitable enough for the vendor to spend the extra time and effort once the majority stops paying for the extra features. This also has a lot to do with a specific software company who throws their weight around to get their way (make their money), but I digress.

I feel that software is going the wrong way. I think we need to back up a bit and really focus on making a solid and polished desktop working environment. Not to say that software shouldn't be complex, but it shouldn't be complex on the users side. We need to really start using our computers and not wasting time fumbling around the features upon features. Most people want to use their computers, and not the other way around.