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
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)
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.
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
Dozens of volunteers worked hard to create this book, but there is still lots to do. You can help by reporting errors, by helping to translate the content into other languages, or by describing the architecture of other open source projects. Please contact us at aosa@aosabook.org if you would like to get involved.
FTFA, not sure if you read that far.
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."
... that doesn't mention Postfix, but does mention sendmail isn't worth reading. I mean, really. sendmail? As an example of architecture design?
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
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.
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.
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.
They needed to add "How not to do it" part, didn't they?
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.
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.
The last time I used IntelliJ was for a 6 week gig, so I may not have given it enough attention - eg, I'm not sure how much was reconfigurable. At the time though, what I really despised was the way that it would automatically save every change I made to every file I touched. That in and of itself was a significant enough change in my preferred work habits that I never got used to it.
Eclipse is certainly no pleasure to use, though.
You're special forces then? That's great! I just love your olympics!
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.