The Architecture of Open Source Applications
jrepin writes "In new free book the authors of twenty-five open source applications explain how their software is structured, and why. What are each program's major components? How do they interact? And what did their builders learn during their development? In answering these questions, the contributors to this book provide unique insights into how they think." Note: the whole text of the book, under a Creative Commons license, is available on the site.
I don't understand why so many people put "Free Book" on the web, but put it in an HTML page with links to the various chapters. Is it too much to ask for the convenience of a single PDF, MOBI, or EPUB I can download to an eReader? They went to the trouble of publishing on Lulu, could they take the additional step of checking the "Make my book available as a free ebook" checkbox so I could download the PDF that Lulu uses to print it?
Other than that, this sounds like something I look forward to reading, after I copy and paste each chapter into a Word Document and convert it myself. : )
i ~ Celebrating Science, Cyberspace, Speculation
...that doesn't mention OpenBSD isn't worth reading. I'm sorry if I sound like an OpenBSD fanboy, but whether you love or hate de Raadt, the OpenBSD architecture and SCM process is a beautiful thing to behold.
Artificially creating jobs that aren't actually needed hurts the economy, but in a much more long-lasting way.
Your next job will then be:
1) massage therapist
2) nail technician
3) prostitute
4) photo-posting website TOS-enforcement specialist (i.e., manual kiddie-porn filter)
There's too many people on this planet. Without all those artificial jobs*, as you call them, unemployment would rise to above 80%.
* everything that has to do with IT, medias, entertainment, the list goes on.
I'm not going to mod it, but those mods would have a point. The implication that the GP is making is that commercial vendors don't slap together code like a bunch of cowboys. The problem is that some outfits will and others won't, at least with the open source option you can take a quick look and see. Granted a non-coder isn't going to know conclusively, but if the comments are there and the formatting looks good, the chances are also good that whoever it was that coded the program was taking at least some pride in their work.
I scanned the Sendmail chapter and it was pretty interesting - an important piece of Internet's software infrastructure that evolved over time along with the internet.
Eclipse chapter is pretty good if you have (or are interested in) written Eclipse plugins.
Good stuff.
Fuck systemd. Fuck Redhat. Fuck Soylent, too. Wait, scratch the last one.
The only measure of economic prosperity that matters is actual resources (goods and services with real value) produced. FOSS does this.
Measuring economic prosperity by numbers of jobs is the kind of backwards thinking that artificial scarcity encourages.
No doubt your great-grandfather was up in arms about horseless carriages putting horses out of work.
Skype is too convoluted... Now I'm reverse-engineering the Kyoto Protocol.
Perhaps when these things are released as free we won't need these jobs, other prices drop, people have more leisure time, etc...
The first chapter is on Asterisk. Don't get me wrong, Asterisk has done a lot of good for the open source community, but I shudder to think that anyone would use it as an example of good development
Facts have a liberal bias.
>Every program that is released as free steals much needed jobs from paid programmers which hurts the economy.
Yeah! Fucking computing infrastructure! And all those paved roads! They're an even bigger problem! Think of all the pulling-cars-out-of-pits-and-over-tree-trunks-jobs millions of people could have all over the country if it weren't for all those commie roads!
Some of my favourite people are from th US; Vonnegut, Chomsky, Bill Hicks.
I'll reply to you.
FOSS take a long-haul view.
It bypasses random manager's quarterly bonuses, and says "what can we do if we have better foundations to start with and learn on"? There's a theory somewhere that it takes a pyramid of enthusiastic amateurs to produce a few experts per field. When you restrict the base, you get fewer experts. The secret is that "level 7 fans" teach "level 2 fans" with the knowledge perpetuating.
So this kind of book is neat. It may not have all the answers. If some magical funding were to appear, someone could compile Volume 2 with the missing essentials. But it is important to get mid-grade fans like me into the act to build mometum.
My first Journal Entry ever, in 8 years! http://slashdot.org/journal/365947/aphelion-scifi-fantasy-horror-poetry-webzine
So everything else does not matter? There is only one true foss project?
Not only you are a fanboi, but an asshole too.
If you think OpenBSD is that important, what prevents you from publishing your own chapter/book/bible?
"What I believe is The Only True Thing - nothing else counts" - Fuckers like you are the true plague for the FOSS movement.
Can you elaborate on this at all? I was under the impression that the New Deal pulled us out of the Great Depression, and that employing the poor, even with needless jobs, gave them money which they would immediately pump back into their local economies. I was under the further impression that money in the control of relatively poor individuals has a tendency to cycle through the economy at a much higher rate (is "Money Multiplier" the correct term?), because of their propensity to spend it immediately instead of saving it in a bank. (Contrary to what one might think, while saving money is the responsible thing for an individual to do, it isn't very good for the economy.)
Do you have any evidence to back up your claims that artificial job creation harms the economy? I'm certainly not looking for a complete Economics lesson here, but it would be nice to know if your claims are backed up by any legitimate Economic theories, or if they're more your "gut feelings."
Cause it sure looks like it going off that map.
The first chapter is on Asterisk. Don't get me wrong, Asterisk has done a lot of good for the open source community, but I shudder to think that anyone would use it as an example of good development
FTFA:
As a result, they repeat one another's mistakes rather than building on one another's successes
One can learn from another's mistakes as well as from their successes.
---
"I can't complain, but sometimes still do..." Joe Walsh
The book isn't intended as a list of exemplary software projects. It is intended to "explain how their software is structured, and why." By that, those who read the book will get a bit of experience developing software without having to go with the trouble of actually repeating the mistakes other people did.
I am surprised by the absence of Fabrice Bellard.
This is an interesting and instructive collection of essays, notwithstanding complaint here from people who have made a lot fewer contributions than the authors of this book.
The first chapter is on Asterisk. Don't get me wrong, Asterisk has done a lot of good for the open source community, but I shudder to think that anyone would use it as an example of good development
What's bad about it?
Note to ACs: I usually delete AC replies without reading them. If you want to talk to me, log in.
Four of the authors of the e-book are from Kitware (check the bios), all open source development. I know first hand, there is money in OSS if you do it right. There are a good amount of companies who are interested in OSS, and are willing to pay for it.
Posting AC for obvious reasons (I'm sure my employer is reading this. Love you guys!).
Does anybody want to post a link to the book?
I don't want to RTFA.
I was recently offered a job developing Android applications. Several components of the Android platform are open-source. Ergo, my job was created by open-source software.
Exsqueeze me, but Emacs is not on that list.
The stereotypical image of an open source developer is that of an altruistic person toiling late into night fixing bugs and implementing fantastic new features to address their own personal interests. In contrast, if you look back at the early history of the Eclipse project, some of the initial code that was donated was based on VisualAge for Java, developed by IBM. The first committers who worked on this open source project were employees of an IBM subsidiary called Object Technology International (OTI). These committers were paid to work full time on the open source project, to answer questions on newsgroups, address bugs, and implement new features. A consortium of interested software vendors was formed to expand this open tooling effort. The initial members of the Eclipse consortium were Borland, IBM, Merant, QNX Software Systems, Rational Software, RedHat, SuSE, and TogetherSoft. By investing in this effort, these companies would have the expertise to ship commercial products based on Eclipse. This is similar to investments that corporations make in contributing to the Linux kernel because it is in their self-interest to have employees improving the open source software that underlies their commercial offerings.
Is the former Soviet Union a good enough example?
I thought the same thing at first too, although I haven't really worked with the code much other than to play with the SIP code. If, like me, your only view of the code is a 30K line file containing an ad-hoc parser you aren't left with too much confidence. But in fairness, the concepts that they talk about (channels, etc) are decent abstractions. I've worked in telephony long enough to know that there a *lot* of very poorly designed PBXs out there. While the implementation sometimes lacks in Asterisk, the deign and architecture elements that they describe are pretty sound.
You were wrong.
You cannot create wealth out of thin air. You can live on credit, for a time. Sooner or later you (or your children) will have to pay.
I also like a piece written by the original developer. He talks about how he had worked on various games which were unsuccessful, and what he learned subsequently and what he then did in preparation so that Battle of Wesnoth would be successful. I thought it was a pretty good short read of how he went from projects that fizzled out to a successful one with millions of downloads.
The point of all economic activity is to increase production. That's what for-profit businesses do, by definition. Making large profits (in a legal way) is proof that a business is satisfying its customers in a very efficient way (high revenue = satisfied customers, low costs = efficient use of resources). Conversely, needless jobs, by definition, are created without any respect to profit. Therefore, they are very inefficient; they represent capital that could be put to much better use.
Furthermore, the fact that needless jobs put money in the hands of consumers is irrelevant. The economy is driven by production, not spending. If we doubled everyone's bank account, what would that do? Nothing. Prices would simply double. But what if we doubled the supply of goods in the economy? Then everyone would be wealthier. That's the difference between spending and production.
The right question isn't, "How do we create more jobs?" The right question is, "Why isn't the market naturally creating more jobs?" And the answer is always that it has been distorted by the government. The government attempts to slow down the adjustment process by propping up falling industries (e.g. housing, banking, etc.), but that just drags out the depression. If we just allowed businesses to fail, liquidated everything, stopped paying unemployment insurance, etc., then the economy would be fixed very quickly. That's exactly what happened in 1921. Unemployment shot up to 12%, the government did nothing, and we recovered in less than a year.
We look forwward your more good articles.Believe you will not make us disappionted.
Beaded jewelry Cheap jewelry
It's really interesting. But why oh why does Eclipse still badly sucks compared to IntelliJ IDEA? (IntelliJ IDEA which is now somehow free -- there's a community edition -- and somehow open).
I mean, you read that chapter and you think: "omg, that looks so professional, so good, so everything"... And I really did enjoy that chapter. But then you realize Eclipse really does just sucks balls compared to IntelliJ IDEA. How comes? :(
A good PBX does not allow the dial plan to dynamically change or jump to different extensions then what's intended. In fact, it wouldn't jump or "Goto" extensions at all. Everything should be defined in a formal language with an actual grammar and stored in read-only memory.
There are already projects which have learned (the hard way) from Asterisks mistakes, such as Afelio and FreeSWITCH. I would've started with one of those, because they make the mistakes of Asterisk a lot more obvious.
I think simply having your work made public is enough to make some programmers tidy it up and at least try to organise it. When closed source software in a dev team that is under pressure to get it out the door it is easy for corner cutting and bad practice to become the normal way of doing things.
const int one = 65536; (Silvermoon, Texture.cs)
SJW, n: "Someone I don't like, and by the way I'm a fuckwit" - AC
As a current Asterisk 1.6 user, I can attest that it is a piece of junk. It's monolithic, buggy, poorly documented and unwieldy to install from source (witness the number of ISO based all in one installation solutions).
I'm in the process of reading up on FreeSwitch with a view to shifting to it.
Have a read of: http://www.freeswitch.org/node/117
AFAICT TFA more or less is the online version of the book.
If you want a link where to buy a printed version, you can go here.
The Tao of math: The numbers you can count are not the real numbers.
The architecture of software is something almost (if not totally) always neglected in all forms of docs I find on open source project.
One problem I perceive in the open-source community, which I love, is that sharing of knowledge and the education of peers is something that is often considered a mercenary's game - each is left to his own devices. The mentality seems to be: if you can't read the code and figure it out, then stfu noob. This mentality completely forgets that noobs need to learn and not everything should take interminable code reading to figure out.
I've long wished I could contribute to open source projects, but always dreaded the prospect of having to pore through reams and reams of code just to understand basic connectivity and causality in a piece of software. These are things which a few words, a few diagrams can handily take care of, which would be much more efficient than telling everybody the barrier to entry is the ability to devote weeks of code reading just to understand basics. The basics.
I've found new/fledgling projects I can contribute to because as long as a codebase is young I have a chance of catching up, but when something is a world-class projects several years old at least, it would be nice to be able to understand what is going on without having to wait until I am at the 10th level of extraplanarity in terms of coding wisdom.
I hope this example of documentary exposition on open-source software isn't the last I see.
I find it interesting that Python packaging (or distutils2) is included as a separate chapter. Packaging and distributing Python projects is embarassingly untidy currently. distutils2 is trying to clean up the mess of distutils, setuptools, easy_install and pip, but it has yet to release a final version or be adopted by the community. It's exciting stuff but it is still unproven, and I wonder why it is in this book. I guess it's important to know that open source isn't always neatly organised, and it's important to learn about FLOSS distribution in one way or another.
As a current Asterisk 1.6 user, I can attest that it is a piece of junk. It's monolithic, buggy, poorly documented and unwieldy to install from source
Hmm. According to the architecture document, it is not monolithic. Your other complaints may or may not have anything to do with architecture; they're partly about execution and partly about a lack of user focus. It can still be very interesting and useful from an architectural perspective.
Note to ACs: I usually delete AC replies without reading them. If you want to talk to me, log in.
It claims to be modular but is effectively monolithic due to myriad cross dependencies (some of which are poorly documented) and a terrible thread management system.
They mention that it's not in EPUB or other ebook formats yet because it's difficult to make a good-looking book out of LaTeX source. They also say the book is under a CC license. Anyone manage to find the LaTeX source yet? I'd like to take a stab at ebook conversion for them, and the closer I get to the original source (the LaTeX files), the more flexibility I ought to have in doing so.
Yes, we are working to create versions in e-book formats (e-pub, mobi, etc.). Turns out to be harder than it should be in 2011 to create something that looks decent. If you'd like to help, please contact us (or write a 'latex2mobi' tool that *doesn't* fall over when it runs into user-defined environments). We would also like to crowd-source translation (we have volunteers already for Spanish and Chinese, and are looking for more for those languages and others) --- again, please contact us by email (aosa@aosabook.org).
Thanks,
Greg Wilson (co-editor)
In response to a few questions (and yes, we'll be starting a FAQ on the book's web site):
* Why did we include XYZ, which is a [blasphemous adjective] [scatalogical noun]? Because our goal was to describe _actual_ architectures, not tidy fairy tales.
* Why _didn't_ we include XYZ? Because we couldn't find someone to write a chapter about it. If you would like to do so, we'd be happy to add it to the book's web site, and to include it in either a second edition or Volume 2, whichever we decide to do. (That's the politest way I can think of saying, "Put up or shut up" :-)
Thanks,
Greg Wilson (co-editor)
Architecture for open source projects?
Never heard of it.... ;)
Creating more jobs, even "needless" jobs, still produces goods and services that are forcibly injected into the economy. And the money put into the hands of the consumers has a greater effect than simply raising prices; if you gave a thousand homeless guys $5, a thousand hamburgers would be purchased that would not have otherwise been purchased, and they'd be purchased today. The result would not simply be that the price of a hamburger goes up $5. Furthermore, poorer individuals have a higher "demand per dollar earned" than richer individuals. Again, giving a thousand homeless guys $5 immediately creates demand for about $5000 in food, booze, and cigarettes. Giving a millionaire $5000 effectively has no change in the amount of goods and services that he demands. Increasing demand ramps up production, which improves the economy.