Even if they are bigger and they approach you, it doesn't mean you have to surrender. You have something they want: the deal will be done on your terms, or not at all. You haven't needed such a deal before and you've still successfully kept hacking on the project.
Nevertheless, if I were to get down to business like that, I would:
limit the non-competition to whatever time you work for them, allowing you to continue where you left when you stop working for them. They get the results while you're working for them.
demand enough money to compensate the loss of open source value during the project, and also enough to allow you to work more on open source afterwards for some time.
Companies that make money from support contracts are, in my opinion, doing the least favorable work. It's certainly not sexy and for every dollar you earn, you have to work an amount directly proportional to that. There's not much concept of exponential growth. In other words, your income per hour flattens out much faster than with a product-based model.
It pays to do work that nobody else wants to do.
Further, I don't think there will be "exponential growth" (or scalable sales...) in the future software industry. It was there in the 80's or 90's but not really any longer. Even larger software systems are becoming a commodity - it started with that you can no longer just write a word processor or a spreadsheet, sell the box 10^n times and earn the money as many times. Now you can't do that even with an operating system since no O/S is special enough anymore. (Apple can, for a while, since there's more glittering design and brand than software for sale in there. Microsoft has failed for years already.)
These days you sell or give away your software to support your primary business (services, expertise, solutions like IBM, or monopoly like Microsoft) or you have some highly complex niche product like a physics modelling suite, where few copies are sold but they're worth a huge money. No exponential growth in there either. Then there are few old gamers like Adobe's Photoshop and like that have built up steam to keep rolling for a little longer because they're really good for the minority of computer users that really need a full-featured image processor.
It is getting to sound like a very good idea to, instead of writing software, take the software for free, then make it better, share it back for the next round, and sell support.
It's not only IT, any professional job they hit you in the arse with the door the moment you resign. most companies have way too much sensitive or percieved sensitive information they they becom instantly paranoid about the second you announce you are becoming an "OUTSIDER".
This is flawed thinking by the companies. The formal letter of resignation changes nothing since the employee is the one who will decide when to resign. The employee has already retired in his mind days or weeks before that.
If he is evil, the timebombs are already set up on the servers, the company data is already harvested, copied and distributed out of the building and the letter of resignation comes last. If he's not and his accounts and access rights are removed, he won't -- probably contrary to his expectations -- be able to properly finish off his work, document everything for the successor and clean up any irrelevant stuff like temporary and personal files. The next employee will step into a mess, and this is all bad for the company.
FYI. This one touches slightly on the same subject: ways in which big companies fall. See The Innovator's Dilemma; describing "When New Technologies Cause Great Firms to Fail".
Interesting read, though not perhaps directly applicable to Microsoft since it's really huge, multi-faceted and monopolistic which makes it less subjected to the competition and disruptive technology.
Since happy things are generally better welcomed by the public, perhaps we should break the acronym out to "Gay Image Manipulation Program". You know, gay has referred to merriness far longer than to a particular sexual orientation. Anyone should be able to grok that, right. Right?
While I like the name Gimp myself, it's true that the names of various open source programs are far from "professional". It's ridiculous that some company might reject the adoption of Gimp or Gnome just because of the name, but it happens. Nerds like us like recursive acronyms and clever names that hide additional messages. (Personally, one of the names I've liked recently is "abcde" which stands for "A Better CD Encoder". Coincidentally, the geek-appeal of the name also refers to, at least for me, a better cd encoder in reality, thus giving it a nice resonance:-))
OTOH, I don't mean the Microsoft way of naming is good either. It has the boring but all-owning tone: Word, Paint, Office. It makes almost any substantive noun sound like it was invented at Microsoft. But that kind of thinking is what the monopolistic Microsoft likes people to assimilate to, and they're good at marketing.
I was only half kidding in the first paragraph. Good names make you smile a bit, and they make your work funnier. This probably excludes "Krusty the Klovn's ImageShop" but if you had to start an image manipulation program called "Grapes'n Apples", you might think less seriously about your work (giving room for innovation) and picture a classical setup of a bowl of fruits, making you feel you're soon going to start creating some good artwork for real.
And I've been using Gimp since pre-1.0, I don't know how many years. Maybe 8-9? I find its interface good and efficient.
Conversely, PhotoShop has always felt cumbersome and kludgy for me, with its numerous custom UI components that are too small to hit with the mouse, and the damn MDI windowing that stuffs everything inside the main window. (With Gimp, I can distribute my images and windows even on different virtual desktops -- beat that!) I've used PS enough to be familiar with the locations of different functions, yet I've always liked Gimp much more.
What can I say, then -- that there's no one correct way to make an image editor? I think it would be best to give Gimp various window layouts. GTK and Glade make that possible already, with nice XML files describing the UI layout. Professional users seem to love customizable interfaces: many graphics, 3D modelling, and audio software have traditionally been highly customizable.
Native packages are better than a custom installer that doesn't integrate with the distribution and doesn't grok dependencies using existing libraries wisely.
My suggestion would be simply to provide a neutral.tar.gz or.tar.bz2 of your application. The tarball would unpack into one directory in which all required files are, including the main executable which could be run straight from that directory. For many, even that would be enough. Gnome and KDE come with built-in archive managers that unpack a tarball somewhere with a single click, and likewise run executable or.sh scripts from Nautilus/Konqueror.
However, the ultimate key here would be to tweak your license to allow re-packing that directory verbatim for redistribution in a Linux distro: if your software is good enough, distribution makers will use their RPM/DEB packing power and merge your software for you for the benefit of themselves and the users of their distribution. I shall remind you that they've already went lengths to provideinstallationpackages for software that doesn't allow being included in their Linux distribution. Compare that to a simple tarball that could be simply repacked by anyone. If your software is good, it would be a service to the community.
According to my observations, there seems to be a correlation between smart people who are good programmers and knowing their grammar. If somebody doesn't know how to write my native language (or English) correctly, I've learned to suspect their ability to produce simple and elegant source code as well.
Maybe it's just about being good at spotting, learning and applying patterns, both in thinking and languages.
We don't know but one thing is certain: Microsoft still employs weaker key lengths than 10 fingers. No wonder it's broken so easily except for the most severely handicapped crackers.
The day when eleven simultaneous keypresses are required, also known as "next order fingerography", will mark the line between ordinary hackers and the wittiest ubercrackers. It has been rumoured that some are already preparing for those times with prototypes of a so-called "Eine Fingermaschine". Also, the piracy rings of the Mafia already have much experience with handling fingers. Nevertheless, along with 11-finger keylengths and longer, casual piracy is expected to be given a literal "thumbs down" signal from Mr. Gates.
Having dedicated personnel to handle documentation is just expensive.
The documentation doesn't need to be perfect. Anything is better than reverse-engineering. Every hardware company probably has some documentation somewhere, if not anywhere else but in their source code. Something that the programmers wrote down for themselves when writing the initial drivers. That would already help a lot since the target audience of the "documentation" is smart and experienced. It doesn't have to be "Teach yourself our XBLOO chip in 10 days. For dummies."
Or, while logging in, copypaste your password one letter at a time, e.g. from the front page of today's Slashdot. Nothing's typed. Of course, unless the box is compromized and has clipboard history tracker:-)
Actually, it's going to be Linux that's the first non-Apple OS running on those x86-Macs. They can make it a different architecture, and lock out Windows because it isn't portable. But now that you can run Linux in your watch, game console and the kitchen sink, just guess whether that means solid, Apple-quality hardware for Linux's new playground.
Probably the biggest difference is that there are no checked exceptions in
Python. Java has both checked exception and non-checked ("runtime")
exceptions, but the normal type of exception used in practice is checked.
A checked exception is compulsory for the caller to handle or to pass up.
...
I'll rip bleeding strips off flesh of one of my guys who does something
stupid with an exception -- because it's so easy to just wrap it in a
runtime exception (we have a wrapper class for this) and rethrow it.
Throwing an exception in a tester's face leads to quicker fault discovery
than papering it over.
What's that difference between Python and Java in this regard if checked exceptions are generally considered a problem in Java and worked over to behave similarly to as in Python?
Is it possible you could start handing over your own contracts? Then it'd be up to the companies' lawyers to sort out whether they're comfortable with the contract. Might not work for bigger companies, but if there's any chance it could work for some, it'd also give you a more professional look. After all, it's you who constantly deal with contractorship papers, not the companies -- you ought to know better what's required to make everybody happy.
Put in there anything that's relevant and nothing more, no excess legalese or anything. Write down that the company owns the
work they've contracted you for, and nothing else. Write down
that they can't impose limits on your other customers, unless they pay compensation to you.
Many bounds-checking and memory-leak tools have been obsoleted by Valgrind. In my opinion, it's truly great piece of software and when working on PPC, I often find it worth the effort to make sure my code compiles on x86 too just to get it running on Valgrind.
No, but only few Linux users I know maximize everything. Since you have (or you can configure for yourself) a powerful windowing environment that actually allows you to multitask also visually, you _can_ work with more than one running program at a time. That usually goes along having focus-follows-mouse, window management in a separate process than applications updating windows, selecting windows into a group and managing them as a unit and other more or less traditional X GUI idioms. With Windows I'm totally stuck that way and the "maximize and flip with alt-tab" is the only practical method to use Windows. It's worth nothing to arrange your windows to something sensible because you can't practically utilize that setup anyway. That's why people use WIndows like that.
Yes, never underestimate the Slashdot Effect. Our chief weapon is a flock of nerds.. and globally distributed bandwidth. The best two of our weapons are a flock of nerds and distributed bandwidth...and the element of dupes, they hit you twice! Our THREE main weapons are a flock of nerds, dupes, distributed bandwidth and...dupes! The.. Among the four elements of dupes, we have a flock of nerds, distributed bandwidth, dupes and the Slashdot Effect, and our weapons of mass HTTP GETs...
I see no "ripping" here. As far as I know, all DVD players on Linux use either the mounted directory or the same underlying block device to read the DVD just like a CD or a harddisk. With my drive, I can even mount'n'copy right away without having to "unlock" the DVD drive by running MPlayer to have the drive "authenticate" me first.
Now, would this damn copy protection prevent Linux from mounting, reading and playing a DVD in the first place? Or just slow it down to roughly real-time?
(For those who don't know it's perfectly legal to make personal copies of CDs and DVDs in Finland. I usually copy anything I rent, then watch them when I have time. If the movie is good, I'll keep it for a year or two should I decide to watch it again. If it's really good, I'll burn it onto a 700MB CD for archiving, which is good enough for me.)
Even if they are bigger and they approach you, it doesn't mean you have to surrender. You have something they want: the deal will be done on your terms, or not at all. You haven't needed such a deal before and you've still successfully kept hacking on the project.
Nevertheless, if I were to get down to business like that, I would:
Companies that make money from support contracts are, in my opinion, doing the least favorable work. It's certainly not sexy and for every dollar you earn, you have to work an amount directly proportional to that. There's not much concept of exponential growth. In other words, your income per hour flattens out much faster than with a product-based model.
It pays to do work that nobody else wants to do.
Further, I don't think there will be "exponential growth" (or scalable sales...) in the future software industry. It was there in the 80's or 90's but not really any longer. Even larger software systems are becoming a commodity - it started with that you can no longer just write a word processor or a spreadsheet, sell the box 10^n times and earn the money as many times. Now you can't do that even with an operating system since no O/S is special enough anymore. (Apple can, for a while, since there's more glittering design and brand than software for sale in there. Microsoft has failed for years already.)
These days you sell or give away your software to support your primary business (services, expertise, solutions like IBM, or monopoly like Microsoft) or you have some highly complex niche product like a physics modelling suite, where few copies are sold but they're worth a huge money. No exponential growth in there either. Then there are few old gamers like Adobe's Photoshop and like that have built up steam to keep rolling for a little longer because they're really good for the minority of computer users that really need a full-featured image processor.
It is getting to sound like a very good idea to, instead of writing software, take the software for free, then make it better, share it back for the next round, and sell support.
In this case, the spammers/phishers are nevertheless tapping into your time and energy, even if you're working against them.
I want to remove the notion of spam and phishing from my mind completely, so that I can spend my energy on something more useful instead.
Besides, typing in spoofed information is way beyond the interest of the average Joe Internet User.
This is flawed thinking by the companies. The formal letter of resignation changes nothing since the employee is the one who will decide when to resign. The employee has already retired in his mind days or weeks before that.
If he is evil, the timebombs are already set up on the servers, the company data is already harvested, copied and distributed out of the building and the letter of resignation comes last. If he's not and his accounts and access rights are removed, he won't -- probably contrary to his expectations -- be able to properly finish off his work, document everything for the successor and clean up any irrelevant stuff like temporary and personal files. The next employee will step into a mess, and this is all bad for the company.
I'm not sure whether you can do that on planes built without his practices either..
FYI. This one touches slightly on the same subject: ways in which big companies fall. See The Innovator's Dilemma; describing "When New Technologies Cause Great Firms to Fail".
Interesting read, though not perhaps directly applicable to Microsoft since it's really huge, multi-faceted and monopolistic which makes it less subjected to the competition and disruptive technology.
Since happy things are generally better welcomed by the public, perhaps we should break the acronym out to "Gay Image Manipulation Program". You know, gay has referred to merriness far longer than to a particular sexual orientation. Anyone should be able to grok that, right. Right?
:-))
While I like the name Gimp myself, it's true that the names of various open source programs are far from "professional". It's ridiculous that some company might reject the adoption of Gimp or Gnome just because of the name, but it happens. Nerds like us like recursive acronyms and clever names that hide additional messages. (Personally, one of the names I've liked recently is "abcde" which stands for "A Better CD Encoder". Coincidentally, the geek-appeal of the name also refers to, at least for me, a better cd encoder in reality, thus giving it a nice resonance
OTOH, I don't mean the Microsoft way of naming is good either. It has the boring but all-owning tone: Word, Paint, Office. It makes almost any substantive noun sound like it was invented at Microsoft. But that kind of thinking is what the monopolistic Microsoft likes people to assimilate to, and they're good at marketing.
I was only half kidding in the first paragraph. Good names make you smile a bit, and they make your work funnier. This probably excludes "Krusty the Klovn's ImageShop" but if you had to start an image manipulation program called "Grapes'n Apples", you might think less seriously about your work (giving room for innovation) and picture a classical setup of a bowl of fruits, making you feel you're soon going to start creating some good artwork for real.
And I've been using Gimp since pre-1.0, I don't know how many years. Maybe 8-9? I find its interface good and efficient.
Conversely, PhotoShop has always felt cumbersome and kludgy for me, with its numerous custom UI components that are too small to hit with the mouse, and the damn MDI windowing that stuffs everything inside the main window. (With Gimp, I can distribute my images and windows even on different virtual desktops -- beat that!) I've used PS enough to be familiar with the locations of different functions, yet I've always liked Gimp much more.
What can I say, then -- that there's no one correct way to make an image editor? I think it would be best to give Gimp various window layouts. GTK and Glade make that possible already, with nice XML files describing the UI layout. Professional users seem to love customizable interfaces: many graphics, 3D modelling, and audio software have traditionally been highly customizable.
Native packages are better than a custom installer that doesn't integrate with the distribution and doesn't grok dependencies using existing libraries wisely.
My suggestion would be simply to provide a neutral .tar.gz or .tar.bz2 of your application. The tarball would unpack into one directory in which all required files are, including the main executable which could be run straight from that directory. For many, even that would be enough. Gnome and KDE come with built-in archive managers that unpack a tarball somewhere with a single click, and likewise run executable or .sh scripts from Nautilus/Konqueror.
However, the ultimate key here would be to tweak your license to allow re-packing that directory verbatim for redistribution in a Linux distro: if your software is good enough, distribution makers will use their RPM/DEB packing power and merge your software for you for the benefit of themselves and the users of their distribution. I shall remind you that they've already went lengths to provide installation packages for software that doesn't allow being included in their Linux distribution. Compare that to a simple tarball that could be simply repacked by anyone. If your software is good, it would be a service to the community.
I can buy winter Olympics in Hell anytime, but if we see no cycling dupe loop between Slashcode and Slashdot about this update, I'll be amazed.
According to my observations, there seems to be a correlation between smart people who are good programmers and knowing their grammar. If somebody doesn't know how to write my native language (or English) correctly, I've learned to suspect their ability to produce simple and elegant source code as well.
Maybe it's just about being good at spotting, learning and applying patterns, both in thinking and languages.
We don't know but one thing is certain: Microsoft still employs weaker key lengths than 10 fingers. No wonder it's broken so easily except for the most severely handicapped crackers.
The day when eleven simultaneous keypresses are required, also known as "next order fingerography", will mark the line between ordinary hackers and the wittiest ubercrackers. It has been rumoured that some are already preparing for those times with prototypes of a so-called "Eine Fingermaschine". Also, the piracy rings of the Mafia already have much experience with handling fingers. Nevertheless, along with 11-finger keylengths and longer, casual piracy is expected to be given a literal "thumbs down" signal from Mr. Gates.
Having dedicated personnel to handle documentation is just expensive.
The documentation doesn't need to be perfect. Anything is better than reverse-engineering. Every hardware company probably has some documentation somewhere, if not anywhere else but in their source code. Something that the programmers wrote down for themselves when writing the initial drivers. That would already help a lot since the target audience of the "documentation" is smart and experienced. It doesn't have to be "Teach yourself our XBLOO chip in 10 days. For dummies."
Or, while logging in, copypaste your password one letter at a time, e.g. from the front page of today's Slashdot. Nothing's typed. Of course, unless the box is compromized and has clipboard history tracker :-)
Actually, it's going to be Linux that's the first non-Apple OS running on those x86-Macs. They can make it a different architecture, and lock out Windows because it isn't portable. But now that you can run Linux in your watch, game console and the kitchen sink, just guess whether that means solid, Apple-quality hardware for Linux's new playground.
And Slashdot runs out of dupes.
Did I miss something, or does "around the globe" (from their website) mean United Stated only these days?
Probably the biggest difference is that there are no checked exceptions in Python. Java has both checked exception and non-checked ("runtime") exceptions, but the normal type of exception used in practice is checked. A checked exception is compulsory for the caller to handle or to pass up.
...
I'll rip bleeding strips off flesh of one of my guys who does something stupid with an exception -- because it's so easy to just wrap it in a runtime exception (we have a wrapper class for this) and rethrow it. Throwing an exception in a tester's face leads to quicker fault discovery than papering it over.
What's that difference between Python and Java in this regard if checked exceptions are generally considered a problem in Java and worked over to behave similarly to as in Python?
Is it possible you could start handing over your own contracts? Then it'd be up to the companies' lawyers to sort out whether they're comfortable with the contract. Might not work for bigger companies, but if there's any chance it could work for some, it'd also give you a more professional look. After all, it's you who constantly deal with contractorship papers, not the companies -- you ought to know better what's required to make everybody happy.
Put in there anything that's relevant and nothing more, no excess legalese or anything. Write down that the company owns the work they've contracted you for, and nothing else. Write down that they can't impose limits on your other customers, unless they pay compensation to you.
Many bounds-checking and memory-leak tools have been obsoleted by Valgrind. In my opinion, it's truly great piece of software and when working on PPC, I often find it worth the effort to make sure my code compiles on x86 too just to get it running on Valgrind.
My favorite would be: finally a true, hardware assisted Spotlight hack for the XScreenSaver.
:)
Hardware rippling and interference hacks we do have already, try poking at your screen panel.
No, but only few Linux users I know maximize everything. Since you have (or you can configure for yourself) a powerful windowing environment that actually allows you to multitask also visually, you _can_ work with more than one running program at a time. That usually goes along having focus-follows-mouse, window management in a separate process than applications updating windows, selecting windows into a group and managing them as a unit and other more or less traditional X GUI idioms. With Windows I'm totally stuck that way and the "maximize and flip with alt-tab" is the only practical method to use Windows. It's worth nothing to arrange your windows to something sensible because you can't practically utilize that setup anyway. That's why people use WIndows like that.
Yes, never underestimate the Slashdot Effect. Our chief weapon is a flock of nerds.. and globally distributed bandwidth. The best two of our weapons are a flock of nerds and distributed bandwidth ...and the element of dupes, they hit you twice! Our THREE main weapons are a flock of nerds, dupes, distributed bandwidth and ...dupes! The.. Among the four elements of dupes, we have a flock of nerds, distributed bandwidth, dupes and the Slashdot Effect, and our weapons of mass HTTP GETs...
I don't understand "ripping" here. Perhaps Linux's IDE CD-ROM driver abstracts it away, but usually at my place it goes like:
I see no "ripping" here. As far as I know, all DVD players on Linux use either the mounted directory or the same underlying block device to read the DVD just like a CD or a harddisk. With my drive, I can even mount'n'copy right away without having to "unlock" the DVD drive by running MPlayer to have the drive "authenticate" me first.
Now, would this damn copy protection prevent Linux from mounting, reading and playing a DVD in the first place? Or just slow it down to roughly real-time?
(For those who don't know it's perfectly legal to make personal copies of CDs and DVDs in Finland. I usually copy anything I rent, then watch them when I have time. If the movie is good, I'll keep it for a year or two should I decide to watch it again. If it's really good, I'll burn it onto a 700MB CD for archiving, which is good enough for me.)
So, the only question I have left is that did the catastrophes yield ones or zeros?
:-)