Latest comments
Hello From Edinburgh!
It is true, both Edinburgh and I smell. Only I smell good, and Edinburgh doesn't.
Given how foggy it was on Monday, for all we know, the pilot got lost and Radiac is actually somewhere entirely different. Where else do creekyjet fly to?
So does Radiac, so it doesn't matter too much :)
Edinburgh smells :(
New design
Very handsome indeed :)
Thanks :)
Looks good!
AOL Instant Messanger Bots
OMFG j00 u53 teh aimbots, th3y R 4 teh n00bs. j00 R c4mping f4gg0t wth teh aimbots. j00 R teh SuX0r1z0rssss!!!1!!!1!11one
Something Good And Something Bad
People keep saying that if you've nothing to hide, then the Big Brother surveillance, National ID card, 90-day detention without charge and other such charitable initiatives must be ok too.
TCMI!!!!!!!!!
Open Source Ideas
It depends. I've used code freely available on the internet which has no licence in a closed-source application. I don't particularly feel a need to credit the author of that code. If you write code, and then make it freely available without any sort of licence, you're basically making it public domain. The code isn't owned by anyone, and anyone can use it for anything they like.
On the other hand, if the code is licensed, then you have to ask what exactly it is that is licensed. The GPL says:
The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you".
I think it's important to clarify what a program is. On one level, it's a general idea. One a completely different level, it's the actual code. To me, the bit that is licensed is something in the middle - you can't licence the whole task that a program performs (e.g. Enable the editing of a text document) just as you can't licence the exact code (e.g. Response.Write("Hi There")). What is licensed is the 'way of doing something'. If I wrote a function which performed a task and released that under licence, then it's the method, or order of instructions that is licensed. This could be ported into any other language and would still be under licence, because it's still performing the task in the same way. The actual code describes what this method is, so copying all of the code is breaching the licence, but there's no reason why you can't take a line from the code.
This is where the definition needs to be. You can't licence a function that is already performed by a particular language. For example, I can't licence the function which outputs a string. If I release some code under licence, that's got to be a way of doing something which hasn't been done before in the way that I'm doing it. Anyone who then performs that task in the same way, even if they use different code, could be seen as breaching the licence. The idea is that you wrote your new code whilst looking at the old code, and therefore stealing its idea. Is this workable? I'm not sure.
All of this depends on the probability of two people writing some code which perform a function in exactly the same way being tiny. Which is tricky.
All of this reminds me about what pharmaceutical companies do. They cant copyright or patent a drug simply because thats just a chemical, and you cant copyright something that has a chance of existing naturally, because then all sorts of odd things happen. What they can (and do) copyright is the method by which they made the drug. Any company can come along and make that same drug, but they have to make it in a different way. Code is a little bit like this. You can make the same program, but youve got to do it a different way. If youre working independently, the chances are that you will do it differently.
Hummm
Using Open Source Code
Tests are for wusses who doubt their genius at coding.
:p
Over 2000! Holy fricking crap!
I need to look at that to see how he's organised them.
I seem to be repeating myself *a lot* in my unit tests. Looks like I might be writing about 150 unit tests for my current component at work. Unit tests are great. I seem to be testing the same things for quite a few methods. And it's not just something I notice, but some more senior members of my team too.
Test driven development rocks! More TDD in opensource for sure.
Back To Blue
And we're meant to assume you do, Tristan?!
Using Open Source Code
Andrew: It's a difficult. You could diff your changes against the original and try to apply it to future versions, but if they change too much then you'd have to go through and make the changes again manually. I started writing an application to look after these changes, but then realised that the changes to the original would just be too large to pick up on without intelligence. Unless the original project writer can foresee all possible modifications and offer a hooking mechanism for your changes, it seems like an impossible problem to solve.
Simon: Things like Perl and Apache have large enough communities that I feel that any bugs will be noticed and fixed, but even so, I am evaluating the quality of the project on its popularity, not its development procedures. Although for large projects with a massive following this method of QA is not a problem, perhaps it is something that should be addressed by smaller projects, and considered by the people who use them.
More importantly though, I am only using their source code as a platform to build upon, and we are separated by a well-defined API - I don't worry so much about that. My main concern about using open source code is when I'm going to be using it as part of a project; in fact the thing that made me write the entry was something you linked to, the Dojo WYSIWYG HTML editor.
A decent editor is a significant part of the new CMS framework I'm working on - in fact, it will probably be the biggest change from my current CMS that my existing tech-illiterate clients will see. As a result I've looked at what's around and haven't found anything right, so have been developing my own editor on and (mostly) off for a few months now. The Dojo editor does at least some of what I want my editor to do, but in the minute or two that I played with it, I spotted some significant bugs, which implies a lack of attention to detail in the development process.
The other reason I won't be using it is that it's part of a larger system that I don't need or want to use. I'd have to do a lot of work to get it integrated into my system, and I'd need to extend it to get all of the functionality I will require. Although they've got a good API that may well not change, I'd need to extensively rewrite their internal code, so you could say I'd be making a fork. However, with the amount of work that I'd probably have to do, I may as well just write my own editor from scratch - at least that way I'd know how it works, what to test, and where to go to fix it. Actually this leads me on to another question, but I'll ask that in another entry when I have more time.
The feedparser tests are fantastic - more of this! I've never seen anything like that on an open source project, but it's a perfect example of what I was thinking was needed. I'd feel confident using that in whatever I needed it for. I'd like to see more projects documenting their testing, even if it's just a table to say what they tested. Although for some things, any documentation would be a start :)
You're already building on top of open source though - you use Perl, PHP, Apache and Linux, all of which live outside your control.
I've always based my selection of open source components on the health of the community around the product. If there's an active mailing list with lots of other people using it successfully, it's probably a safe bet.
For code that is reused at a higher level, the key thing I look for is clearly defined APIs with a promise of backwards compatibility for future releases. That minimises the chance of future problems after updating to later releases.
These days, I tend to look for projects with a comprehensive set of unit tests that I can run myself - although I have to admit I haven't yet become disciplined enough to use them for all of my own development. The 2000 unit tests that come with Mark Pilgrim's feedparser library ( http://feedparser.org/ ) are a fantastic indication of programming quality a commitment to API stability in the future.
There is a fundamental problem project forking, and when you take on a project built on top of an open source project, you are pretty much forking that project. The main problem is that if a bug is discovered in one branch that relates to code common to all, there doesn't appear to be a good way of transmitting information about that change across all branches that have that code in. Essentailly, when you fork an open source project, you're taking on the development of the entire code below what's new, as well as what is new. As you say, you either port bug fixes and patches from the original version, or you assume that the version you forked is perfect. Obviously the second of these isn't true, so it has got to be the first.
A good compromise would have to be something like porting all the patches that relate to the particular version of the project that you forked (1.4.1 for example). If there's a major new release (1.5, or 2.0), you have to ignore it, or try to implement it underneath what you've written and hope it doesn't break anything. Sure, you'll lose out on functionality that newer versions offer, but as long as the old version is fairly stable, it shouldn't require too much changing.
I know what you mean overall. I got offered the chance to take on a project that involves coding over the top of something open source today. I turned it down, because it wouldn't have been interesting enough.
Back To Blue
Don't bring back the welcome message. Leela doesn't know what she's talking about.
I really really really liked the welcome message! I was always rather bemused when I read it-yet it feels so wrong that it is not there! Bring it back!
I don't feel as welcomed any more without that message!