Open source companies have never made sense to me as a viable business model. The idea is that people who aren’t being paid will contribute to a project, because they are interested, and then someone else will make money with that project. It seems very counter intuitive to me. I like the idea of people working on projects for free and offering them to the community for free, but that other people will take advantage of these projects for their own benefit sounds like exactly the situation napster was in a few years ago. Napster making money off of other people’s work. However, that appears to be the way the business is going. As companies “open up” to open source, providing programs to the community and what not, open source is beginning to enter a new stage. As I talked about last week, people will often contribute to open source projects just because they are interested. Personally however, I would feel weird if the open source projects were then used by someone else to make money. I think the current model will be good for software quality but not good for community experience. As more people profit from the technology, such as when Google sells their android operating system, I think less contributors are going to want to contribute. It goes back to the idea of the homebrew computer club. When Bill Gates said that people should be able to make money from their code, people were upset, but if it wasn’t their code they couldn’t really complain. Now, however, someone else could profit from your code and all you would receive is a shout out in a README. ESR talks about how peer review is better in open source than closed source, however, with the current model I don’t feel like peer review is being benefited from the most. Because a large portion of the market is working for profit there are always other considerations when working on open source projects today. But also, this collecting rent in the close source is not to be sniffed at. A lot of great programs have come from a closed source space. Undoubtedly Maya is a better animation platform than, though from the comment about peer review ESR would suggest otherwise. I feel the current marketplace is most confusing with regards to security and privacy. According to some of the main tenets of computer security a peer reviewed security system is much better than a non peer reviewed option, therefore theoretically open source would be better for security. However, open source, especially the open core business model, requires that to make a profit privacy becomes a secondary consideration. Companies that benefit greatly from open core, especially google profit off of commoditizing a person’s privacy therefore completely undermining much of computer security. I just feel like open core is a world of contradictions that cannot survive for long. To truly support the open source community and make sure it remains truly open source there has to be some separation between open source and open core, or closed source. The magic cauldron has never made sense to me but I feel like if it isn’t already broken it will be soon.
People like to feel like they are a part of something larger than themselves. A few classes ago, when Professor Bui showed that you could add something to the calculator in windows most of the class, me included, were very excited by the idea. The thought of being able to be part of such a big project, knowing that something you did was used all around the world is exhilarating. People have always wanted to belong, we are social creatures, and open source is a society with far reaching goals. Open source provides people with the opportunity to work on projects that they are interested in, for as long or as short as their interest remains, and then move onto the next project, all while feeling like you are contributing to something that will help the larger good. Mozilla, one of the big names in open source, has the goal to create a free, open and safe internet for everyone. These kind of lofty goals inspire people to become part of the community. To in some small way add their voice and their talents to those already working on it. To leave their mark on history. The sense of belonging to something larger than ourselves is what attracts people to open source. It is a way to be ambitious in life, while still remaining relatively protected from risk. This is the theory and the principle behind Open Source, however, in practice it is not as clean as it sounds. While there is a push for welcoming in the Open Source community, there is a certain stigma associated with it. Projects are controlled by moderators, who may decide what is good and what is not. The free code sharing of the homebrew computer club exists in spirit, but there is, again, a stigma attached to forking another’s project. The idea of open source in theory is that people should freely trade code with each other and expect no recognition for the work they are done, they should be working for their own enjoyment. However, to go along with people liking to feel like they belong, they also like to be recognized for their work. Therefore it is expected that contributors are listed to a project and that a project is not simply forked by another party to add to it on their own. What I have seen happening, with what we talked about this week and with my own experiences, it the open source community moving toward where the homebrew computer club moved to. Bill Gates wanted to be recognized for his work just like people who contribute to open source. This is not necessarily a bad thing so long as it is only in moderation. It costs nothing to add a contributors name to a README, but if people continue the push for recognition they will end up moving away from open source and solely write code they are paid to write. I do not think or want this to happen, and so the open source community will have to make itself healthy. The stigma around forking should be removed, people should be able to share code freely and openly, however, they should also be recognized for their contributions in some small way. Most people who work on open source would be more than satisfied to see their name listed as a contributor to windows, even if it is only in the calculator.
A cathedral is predesigned and every brick is placed with a purpose, it has no use until it is totally complete. A bazaar is a sum of its parts. A bazaar is like the question how much is a handful of sand. If you take away every contributor but one at what point is it no longer a handful, or the other way at what point does it become a handful. In the case of code, the cathedral is generally proprietary code, something that a team will work on, usually for a company and eventually it will be released. A bazaar is a group of people working together, generally in open source, all to varying degrees and all to create some end product that none of them probably have a full grasp of. An open source project like a bazaar starts with one contributor, or one merchant, but more and more people will come to buy or to set up stands and add parts to the bazaar. Eventually there are many many people working on and with the product. I feel like both the cathedral and the bazaar have the positive points. Take for instance an open source program that handles credit card purchases. It would be very easy for one of the contributors to add code that copies all credit card information as the card is being processed. Similarly open source projects are great for applications like Firefox. Because of its open source nature it is able to be both better and more customizable for the user. So much is able to be added, tested and improved upon because so many different people are able to work on the project. I don’t really think there is an answer for which type of programming is better the cathedral or the bazaar. I feel like a mix of both is needed. Take the security industry for example. While a certain amount of secrecy is required to ensure that the customers are not at risk, common practice is to release the projects to the community as early and as often as possible so that more hands can be on the project, trying to break the security and see where any faults may lie. This requires a combination between a cathedral and a bazaar.
In my experience I have dealt with more cathedral style programming, however, I really like the idea of bazaar style programing. I love the application Maya. However, it costs $1500 for a non educational license. The idea of blender, a product that would do many of the same things as Maya, but that I could also work on to improve it is great. Not only is it free, it has a great community behind it working to always make it better. I feel like we will see a move to this blended style of development. Where companies will take advantage of the bazaar that exists to make their cathedral better. I think Microsoft is a prime example of this, put your programs that you charge people for into open source so that other people can fix the bugs for you and you can have a better product for minimal cost and improved community standing. This also allows new eyes to constantly be looking at it as people get bored with the project. Because like in a bazaar the customer is the most important, if they get a better product for cheaper they will keep visiting the cathedral even if its built on a bazaar.
Paul Graham is a lottery winner telling everyone who will listen the best way to get rich is to play the lottery. It has worked for a hundred years, why not get in on the money train. Bo Burnham in his stand up special had a bit where he talked about success. He said to not look for inspiration from people who are celebrities or extremely successful. He compares Taylor Swift to a lottery winner. For every Taylor Swift, Bo Burnham, Paul Graham, or Mark Zuckerberg there are hundreds if not thousands of people who weren’t successful. Think about Mark Zuckerberg, he is very rich and most people in the United States know his name, but the Winklevoss Twins who had a very similar idea are neither of those things. The only reason they are known is because Mark Zuckerberg stole their idea and made facebook, then someone else made a movie about their missed opportunity. As it is, most people think of them as jerks who were played by Armie Hammer, not what they did. But even the Winklevoss Twins are an exception. In most cases you don’t win the lottery. For every successful startup out there there are hundreds of startups that just don’t make it. I feel like there will always have to be people willing to take the chance to risk it all on their startup, or their musical career, or what have you, that is the only way to truly innovate. Startups and new stars change the game and advance society, but it is not for everyone. There is a film called The Man in the Gray Flannel Suit about a man trying to find his place in society after the Second World War. In the film, he meets with the founder of the company he is working at who explains that some people are willing to only be nine to fivers and live a life with their family, while others are people who will focus on their work to the exclusion of all else. This is not exactly the distinction Graham is making but parallels can be seen. People who go into startups as a get rich quick scheme are doing it at the chance of losing everything. Society will always encourage people to push the docket, to strive for the start up and risk taking in the chance of getting extremely rich, however, the majority of people do not ever achieve this and some do not even try and that is perfectly fine. People should be encouraged to push the envelope to potentially achieve incredible risks. But when Paul Graham talks about getting rich by working at a startup as a sure thing, it falls flat of what real life will be like. If every person in class started to work at different startups, maybe one of us would end up rich. I feel this is especially true now, tech used to be the wild west, no one truly understood the field and everything was always up in the air, but now it has become more like other fields and settled down to a degree. One thing Graham was right about though is that you don’t need to be rich to live well. A person today can live a very comfortable life, without being considered rich, and that is fine for some people. Some people will always be content to live life comfortable instead of stupidly rich.
That being said I am not sure any programming language is better than another, again it’s kind of like the screwdrivers I mentioned earlier. Some people want to use an electric screwdriver, let it do all the work for you, that’s like python. Don’t worry about memory don’t worry about anything just write in english basically. But other people want to use traditional screwdrivers. They require less overhead, they are reliable and sometimes they can just get down and do things an electric one just can’t. Both are still effective and useful, but for different purposes. After going through the computer science program there are definitely languages I like better than others, some seem to be screwdrivers without a handle while others are drills, but in the end it’s a personal choice that can’t always be quantized.
While Paul Graham and Steven Levy’s definitions of a hacker share some similarities, there are a few key differences. Graham focuses on the idea of making something beautiful, normally related to software. This focus is very reliant on the idea that not all people who code are hackers, but that hackers are trying to do interesting things with code. In these components Graham and Levy have very similar definitions, however, there is a key difference. Graham’s hackers are trying to make something beautiful while Levy’s tend to write code simply for the sake of making code. Graham describes computers as simply the medium with which hackers work, while Levy talks about loving and totally understanding a computer. Graham describes the hacker as more of a maker or an artist, while Levy’s almost seem like mad scientists. I personally like the way Graham describes a hacker. I am much more interested in creating something with code, then in simply writing code. To make beautiful code is to make beautiful things with code. To stretch Graham’s analogy to painters, not only do painters care very little about the paint chemistry, they aren’t trying to make brush strokes for the sake of brush strokes, they are making something in the end. Making is central to Graham’s description of a hacker, as he likens them more toward writers and painters than mathematicians. This is also much more appealing to me than simply being a hacker for hackers sake. My favorite part of programming is having something interesting and beautiful that I have made at the end. I am extremely interested in using programming to create games and graphics and sounds and more. I like the idea of being a maker much more than being a hacker as Levy describes it. Another difference is that Levy focuses on money not being a part of hacking, but Graham embraces money. While he says that people should write beautiful code in their own time he also says that they should have a day job, similar to musicians. This is a very big divergence from Levy’s hackers who would hack all day everyday to the detriment of most other things. I feel like Graham speaks to me more in my love of making things, such as animations or games, more than to my making of things like web servers or search engines. The relentlessness he describes makes me excited to work on projects in animation, to put in long hours on little things that most people wouldn’t even notice, but I would know was right. While Levy’s hackers didn’t really appeal to me, I feel like Graham’s hackers are much more approachable and admirable. He puts an emphasis on being like artists, but also having a day job. Just because you are relentless in your chosen art doesn’t mean that you have to let your life fall to ruin around you. I also love the idea of making programming cool. Like the last line says we are the people who can make things that will convince the world that hacking is cool, like Da Vinci convinced the world that painting was cool.
Even more than previous generations of hackers, the game hackers were focused on making money. As more people gained access to personal computers more and more companies began to emerge which built software for these new machines, especially games. There was some pushback from the original hackers who looked down on people who only used computers and software written and built by other people. They felt it was an attack and threat to the hacker ethic. While I understand the basis for these arguments, people who did not understand or appreciate computers in the same way as the original hackers were beginning to influence the word of computers, I disagree with their negativity. Game hackers allowed not only people to make money working with computers, they also were able to spread a love of computers and an appreciation, though a different type of appreciation, to vastly more people. The original hackers were a highly niche group that had a large amount of prestige. They were people who went to some of the greatest universities in the world and had access to computers that no average person would ever see let alone own. Game hackers not only focused on many people who were new to computers, they made it more enjoyable and exciting for the average person. Most people are not interested in starting with code and maybe getting an interesting outcome. Game hackers allowed people to begin to see what was possible with computers and also think about what may be possible. Most people would probably be happy simply playing the games, but many people who were introduced to computers through games would go on to become some of the visionaries of the future. Therefore I see the spread of computers and the degradation of the hacker ethic as a good thing.
The hacker ethic was not totally dead though. In places like Summer Camp, a lot of the same principles as the hacker ethic were being expressed while people were also making money. Though that to eventually became totally driven by money and business it never lost its innovation or its underlying culture. A lot of the same culture is seen alive in silicon valley today.
I also have a soft spot for the game hackers because they brought about some of my favorite aspects of the computer age. Because of people like the Williams or John Harris video games and computer graphics became wide spread and what they are today. The people who made the original Tron film were not following any preset plan, they were hackers and they created a whole new method of film and world inside the mainframe. These people have had more of an impact on our society then maybe anyone else in the last fifty years. I think the game hackers are the most inspirational group we have talked about yet.
As I mentioned in my last blog post, I am not a big supporter of the hacker ethic, I believe to be widely implemented it would need major overhaul. It would need to emphasize the people rather than the computers. That being said there are of course good components of the hacker ethic. The desire to strive for the best, to innovate, and to fail are all great components of the hacker ethic. Things that everyone can learn from and embrace to better themselves academically, professionally, and personally. For these reasons I feel that the hacker ethic should definitely be spread wider, but with an emphasis on improvement not on obsession. What the hardware hackers did well as they spread the hacker ethic to a wider audience was they provided an incentive. The hacker ethic was flawed in that it assumed everyone had the privilege of being able to program and hack all day every day with little consideration for the rest of their lives and for no compensation. What the hardware hackers did was show the world that you could adapt a version of the hacker ethic, a better version of the hacker ethic, and make a living doing it. While the “True Hackers” resented the hardware hackers, because they saw the hardware hackers as sellouts, this however to me is unfair. While some were disparaged for working for the department of defense or for simply making their own companies and trying to profit off of their understanding and knowledge, they were popularizing and improving computers and technology much faster than some people sitting in a room at MIT were able to do, no matter how highly they thought of themselves. With money earned by selling their computers or software or what have you, these hardware hackers and entrepreneurs were able to make money and using that money perform more better innovations than in the past. During Justin’s presentation on Thursday he talked about how there were many small boards available for cheap prices so that a person would be able to learn how to create hacks or discover things on their own. The use of these boards and their wide spread has given more people than ever access to the hardware necessary to learn and embrace parts of the hacker ethic. This was only possible because the company was able to make a profit off of these chips. They were able to research and develop cheap ways to make chips there by popularizing the ability to be “true hackers” even if it is merely a version of what it used to be.
As I said at the beginning, I have never been the biggest fan of the hacker ethic, because of its many failings in my opinion, but I still appreciate and am inspired by other parts of the ethic. It is these parts of the ethic, the hard work, innovation, and meritocracy that I think are more able to come through when hardware and software are monetized. They allow wider exposure and therefore more innovation. It also drops many of the less savory parts of the ethic. In other words, not only do I think it is worth it to compromise some of the ideals of the hacker ethic in order to spread, I think it is a good idea.
A “True Hacker” is someone who lives and breaths programming. They eat, sleep, and breath programming. At one point in the book a true hacker is described as someone who can ignore such minor conveniences as sleep. A true hacker is someone who does not have time for anything aside from programming, everything else is a distraction. To me this seems to be an extremely dangerous mindset. The idea that there should be thirty hour days, “days” (in quotations because it is more than an actual day) where a true programmer would code for the entire time and ignore everything else. To not get the proper amount of sleep has been shown to be very unhealthy both for the physical body as well as for a person’s mind. Personally I can not imagine there being anything that I would enjoy doing so much that I would ignore all other facets of my life in order to pursue. I believe in the idea of living a balanced life. This extends beyond just a good work life balance, though that is a part of it. I feel a well balanced life, while different for everyone, would include time spent socializing and time spend relaxing and time spent working. There should also be time to take care of yourself, whether that be eating or washing yourself or sleeping, we are not machines and we require rest. I believe that a person would get worn down extremely quickly if they spent no time taking care of themselves and relaxing. I also feel that to encourage this behavior through peer pressure, by calling everyone who was not a “true hacker” a loser, is also an extremely unhealthy environment.
As I said earlier I believe everyone’s balance is different. Some people need more time to themselves each day, while others are more social. In a similar way, some people can work for hours and hours while maintaining the same level of productiveness, while others are more like sprinters and have a periods of extreme productiveness with time when they are much less productive worked in. All of this depends on the individual, thus for someone to tell another, “if you aren’t spending all your waking time trying to program or make new things you’re a loser,” is both unfair and unhealthy. Everyone is different. Take Margaret Hamilton for example. She would never have been accepted by the “true hackers” for a number of reasons. She had a family that she cared for, she had a life outside of programming, etc. Yet her schedule and practice worked for her and she became the lead of the team that wrote the computer programs that put humans on the moon. No one could ever say that Margaret Hamilton was unsuccessful in her life, however, because she was not a “true hacker” the group at MIT would have looked down on her.
I realize how hypocritical it may sound that I begin this post by saying that I think the lifestyle of a “true hacker” is extremely unhealthy, then proceed to say that everyone should find their own limits and not try to tell others theirs. My point is that I believe for me and for most people the life of a “true hacker” is not only a poor goal, it is also an unhealthy lifestyle choice. The lifestyle may work for some but even then, I feel that these people may be missing important parts of life by trying to achieve some unreachable and really unnecessary pedestal of the “true hacker.”
I do not feel that coding is the new literacy, but that does not mean that computer science education is at a proper level in the United States. I feel what should be emphasized, especially in younger years, is not learning a programing language itself, as one of the articles says, they change extremely quickly and just learning how to use a programing language would not be overly helpful. What is more important is learning the computational thinking described in the Mother Jones article. Learning how to think in a computational manner will allow those who are interested in the subject a better foundation on which to build when they actually begin to learn programing languages. For the other students, computational thinking will allow them to learn to better use the tools at their disposal. Take a business major at Notre Dame, do they really need to know how to program the actual application of excel. However if they are able to learn computational thinking, they will be able to use excel to its maximum. This is the same for the future. Most people will not have to actually code the programs that they will be using, someone else will have built an interface and the user can simply maximize their use by better understanding how to ask the computer to complete a task. This idea also works for when people want to work in a team and are trying to develop an app, if they are able to frame the problem in a way that actual programers and better relate into code, the process will run much more smoothly. Therefore, even though everyone shouldn’t be forced to learn a programming language like its reading and writing, they should learn to understand how a computer thinks so that they are able to better take advantage of the tools they have. People that argue that programming should be taught to all focus on the pervasiveness of computers in business and the economy today and assume that the average person will have to interact with them. While this is true, the average person will not have to interact with computers at a code level, instead they will be able to work through a GUI that has been designed to best use the program by programmers.
If CS4ALL continues to push forward as it is right now, schools will face the problem of finding enough qualified teachers to meet the amount of programming that people are trying to have taught. Many of these teachers go into industry after they gain enough experience coding, but even if every school in the country had a qualified computer science teacher, by no means a given especially due to the lack of proper resources to train these teachers, that would still not be enough to have every child have a computer science teacher in every year. Ideally to me computer science would be a required elective taken in addition to core subject areas, and it would focus on computational thinking. Even if programming ability will not be even by the end of a class, I believe that has more to do with interest than any genetic advantage. Some people are just more interested in the types of problems that are involved in computer science. SO while everyone theoretically could earn to code not everyone should learn to code, as I described above, it will not be needed that everyone can code, instead what will be needed is that everyone understand how computers work and think.