Search This Blog

Monday, June 4, 2018

Tim Berners-Lee

From Wikipedia, the free encyclopedia

Sir Tim Berners Lee arriving at the Guildhall to receive the Honorary Freedom of the City of London
Berners-Lee in 2014
Born Timothy John Berners-Lee
8 June 1955 (age 62)[1]
London, England
Other names
  • TimBL
  • TBL
Education Emanuel School
Alma mater The Queen's College, Oxford
Occupation Professor of Computer Science
Spouse(s)
  • Nancy Carlson (m. 1990; div. 2011)
  • Rosemary Leith (m. 2014)
Children 2
Parent(s)
Awards
Scientific career
Institutions
Website www.w3.org/People/Berners-Lee

Sir Timothy John Berners-Lee OM KBE FRS FREng FRSA FBCS (born 8 June 1955),[1] also known as TimBL, is an English engineer and computer scientist, best known as the inventor of the World Wide Web. He is currently a professor of Computer Science at the University of Oxford.[3] He made a proposal for an information management system in March 1989,[4] and he implemented the first successful communication between a Hypertext Transfer Protocol (HTTP) client and server via the internet in mid-November the same year.[5][6][7][8][9]

Berners-Lee is the director of the World Wide Web Consortium (W3C), which oversees the continued development of the Web. He is also the founder of the World Wide Web Foundation and is a senior researcher and holder of the 3Com founders chair at the MIT Computer Science and Artificial Intelligence Laboratory (CSAIL).[10] He is a director of the Web Science Research Initiative (WSRI),[11] and a member of the advisory board of the MIT Center for Collective Intelligence.[12][13] In 2011, he was named as a member of the board of trustees of the Ford Foundation.[14] He is a founder and president of the Open Data Institute.

In 2004, Berners-Lee was knighted by Queen Elizabeth II for his pioneering work.[15][16] In April 2009, he was elected a foreign associate of the United States National Academy of Sciences.[17][18] Named in Time magazine's list of the 100 Most Important People of the 20th century, Berners-Lee has received a number of other accolades for his invention.[19] He was honoured as the "Inventor of the World Wide Web" during the 2012 Summer Olympics opening ceremony, in which he appeared in person, working with a vintage NeXT Computer at the London Olympic Stadium.[20] He tweeted "This is for everyone",[21] which instantly was spelled out in LCD lights attached to the chairs of the 80,000 people in the audience.[20] Berners-Lee received the 2016 Turing Award "for inventing the World Wide Web, the first web browser, and the fundamental protocols and algorithms allowing the Web to scale".[22]

Early life and education

Berners-Lee was born in London, England, United Kingdom,[23] one of four children born to Mary Lee Woods and Conway Berners-Lee. His parents worked on the first commercially built computer, the Ferranti Mark 1. He attended Sheen Mount Primary School, and then went on to attend south west London's Emanuel School from 1969 to 1973, at the time a direct grant grammar school, which became an independent school in 1975.[1][15] A keen trainspotter as a child, he learnt about electronics from tinkering with a model railway.[24] He studied at The Queen's College, Oxford, from 1973 to 1976, where he received a first-class bachelor of arts degree in physics.[1][23]

Career


Berners-Lee, 2005

After graduation, Berners-Lee worked as an engineer at the telecommunications company Plessey in Poole, Dorset.[23] In 1978, he joined D. G. Nash in Ferndown, Dorset, where he helped create type-setting software for printers.[23]

Berners-Lee worked as an independent contractor at CERN from June to December 1980. While in Geneva, he proposed a project based on the concept of hypertext, to facilitate sharing and updating information among researchers.[25] To demonstrate it, he built a prototype system named ENQUIRE.[26]

After leaving CERN in late 1980, he went to work at John Poole's Image Computer Systems, Ltd, in Bournemouth, Dorset.[27] He ran the company's technical side for three years.[28] The project he worked on was a "real-time remote procedure call" which gave him experience in computer networking.[27] In 1984, he returned to CERN as a fellow.[26]

In 1989, CERN was the largest internet node in Europe, and Berners-Lee saw an opportunity to join hypertext with the internet:
I just had to take the hypertext idea and connect it to the Transmission Control Protocol and domain name system ideas and—ta-da!—the World Wide Web[29] ... Creating the web was really an act of desperation, because the situation without it was very difficult when I was working at CERN later. Most of the technology involved in the web, like the hypertext, like the internet, multifont text objects, had all been designed already. I just had to put them together. It was a step of generalising, going to a higher level of abstraction, thinking about all the documentation systems out there as being possibly part of a larger imaginary documentation system.[30]

This NeXT Computer was used by Berners-Lee at CERN and became the world's first web server

Berners-Lee wrote his proposal in March 1989 and, in 1990, redistributed it. It then was accepted by his manager, Mike Sendall.[31] He used similar ideas to those underlying the ENQUIRE system to create the World Wide Web, for which he designed and built the first Web browser. His software also functioned as an editor (called WorldWideWeb, running on the NeXTSTEP operating system), and the first Web server, CERN HTTPd (short for Hypertext Transfer Protocol daemon).
Mike Sendall buys a NeXT cube for evaluation, and gives it to Tim [Berners-Lee]. Tim's prototype implementation on NeXTStep is made in the space of a few months, thanks to the qualities of the NeXTStep software development system. This prototype offers WYSIWYG browsing/authoring! Current Web browsers used in 'surfing the internet' are mere passive windows, depriving the user of the possibility to contribute. During some sessions in the CERN cafeteria, Tim and I try to find a catching name for the system. I was determined that the name should not yet again be taken from Greek mythology..... Tim proposes 'World-Wide Web'. I like this very much, except that it is difficult to pronounce in French... by Robert Cailliau, 2 November 1995.[32]
The first web site was built at CERN. Despite this being an international organisation hosted by Switzerland, the office that Berners-Lee used was just across the border in France.[33] It was put online on 6 August 1991 for the first time:
info.cern.ch was the address of the world's first-ever web site and web server, running on a NeXT computer at CERN. The first web page address was http://info.cern.ch/hypertext/WWW/TheProject.html, which centred on information regarding the WWW project. Visitors could learn more about hypertext, technical details for creating their own webpage, and even an explanation on how to search the Web for information. There are no screenshots of this original page and, in any case, changes were made daily to the information available on the page as the WWW project developed. You may find a later copy (1992) on the World Wide Web Consortium website.[34]
It provided an explanation of what the World Wide Web was, and how one could use a browser and set up a web server.[35][36][37][38] In a list of 80 cultural moments that shaped the world, chosen by a panel of 25 eminent scientists, academics, writers, and world leaders, the invention of the World Wide Web was ranked number one, with the entry stating, "The fastest growing communications medium of all time, the internet has changed the shape of modern life forever. We can connect with each other instantly, all over the world".[39]

In 1994, Berners-Lee founded the W3C at the Massachusetts Institute of Technology. It comprised various companies that were willing to create standards and recommendations to improve the quality of the Web. Berners-Lee made his idea available freely, with no patent and no royalties due. The World Wide Web Consortium decided that its standards should be based on royalty-free technology, so that they easily could be adopted by anyone.[40]

In 2001, Berners-Lee became a patron of the East Dorset Heritage Trust, having previously lived in Colehill in Wimborne, East Dorset.[41] In December 2004, he accepted a chair in computer science at the School of Electronics and Computer Science, University of Southampton, Hampshire, to work on the Semantic Web.[42][43]

In a Times article in October 2009, Berners-Lee admitted that the initial pair of slashes ("//") in a web address were "unnecessary". He told the newspaper that he easily could have designed web addresses without the slashes. "There you go, it seemed like a good idea at the time", he said in his lighthearted apology.[44]

Recent work


Tim Berners-Lee at the Home Office, London, on 11 March 2010

In June 2009, then-British Prime Minister Gordon Brown announced Berners-Lee would work with the UK government to help make data more open and accessible on the Web, building on the work of the Power of Information Task Force.[45] Berners-Lee and Professor Nigel Shadbolt are the two key figures behind data.gov.uk, a UK government project to open up almost all data acquired for official purposes for free re-use. Commenting on the opening up of Ordnance Survey data in April 2010, Berners-Lee said that: "The changes signal a wider cultural change in government based on an assumption that information should be in the public domain unless there is a good reason not to—not the other way around." He went on to say: "Greater openness, accountability and transparency in Government will give people greater choice and make it easier for individuals to get more directly involved in issues that matter to them."[46]


Berners-Lee speaking at the launch of the World Wide Web Foundation

In November 2009, Berners-Lee launched the World Wide Web Foundation in order to "advance the Web to empower humanity by launching transformative programs that build local capacity to leverage the Web as a medium for positive change."[47]

Berners-Lee is one of the pioneer voices in favour of net neutrality,[48] and has expressed the view that ISPs should supply "connectivity with no strings attached", and should neither control nor monitor the browsing activities of customers without their expressed consent.[49][50] He advocates the idea that net neutrality is a kind of human network right: "Threats to the internet, such as companies or governments that interfere with or snoop on internet traffic, compromise basic human network rights."[51] Berners-Lee participated in an open letter to the US Federal Communications Commission (FCC). He and 20 other Internet pioneers urged the FCC to cancel a vote on 14 December 2017 to uphold net neutrality. The letter was addressed to Senator Roger Wicker, Senator Brian Schatz, Representative Marsha Blackburn and Representative Michael F. Doyle.[52]


Berners-Lee's tweet, "This is for everyone",[21] at the 2012 Summer Olympic Games in London

Berners-Lee joined the board of advisors of start-up State.com, based in London.[53] As of May 2012, Berners-Lee is president of the Open Data Institute,[54] which he co-founded with Nigel Shadbolt in 2012.

The Alliance for Affordable Internet (A4AI) was launched in October 2013 and Berners-Lee is leading the coalition of public and private organisations that includes Google, Facebook, Intel, and Microsoft. The A4AI seeks to make internet access more affordable so that access is broadened in the developing world, where only 31% of people are online. Berners-Lee will work with those aiming to decrease internet access prices so that they fall below the UN Broadband Commission's worldwide target of 5% of monthly income.[55]

Berners-Lee holds the founders chair in Computer Science at the Massachusetts Institute of Technology, where he heads the Decentralized Information Group and is leading Solid, a joint project with the Qatar Computing Research Institute that aims to radically change the way Web applications work today, resulting in true data ownership as well as improved privacy.[56] In October 2016, he joined the Department of Computer Science at Oxford University as a professorial research fellow[57] and as a fellow of Christ Church, one of the Oxford colleges.[58]

Personal life

Berners-Lee was married to Nancy Carlson in 1990; they had two children and divorced in 2011.[citation needed] In 2014, Berners-Lee married Rosemary Leith at St. James's Palace in London.[59] Leith is director of the World Wide Web Foundation and a fellow at Harvard University's Berkman Center. Previously, she was World Economic Forum Global Agenda Council Chair of the Future of Internet Security[60] and now is on the board of YouGov.[61]

Berners-Lee was raised as an Anglican, but in his youth, he turned away from religion. After he became a parent, he became a Unitarian Universalist (UU).[62] He has stated: "Like many people, I had a religious upbringing which I rejected as a teenager... Like many people, I came back to religion when we had children".[63] He and his wife wanted to teach spirituality to his children, and after hearing a Unitarian minister and visiting the UU Church, they opted for it.[64] He is an active member of that church,[65] to which he adheres because he perceives it as a tolerant and liberal belief. He has said: "I believe that much of the philosophy of life associated with many religions is much more sound than the dogma which comes along with it. So I do respect them."[63]

Distinctions

Berners-Lee has received many awards and honours. He was knighted by Queen Elizabeth II in the 2004 New Year Honours "for services to the global development of the internet", and was invested formally on 16 July 2004.[15][16]

On 13 June 2007, he was appointed to the Order of Merit (OM), an order restricted to 24 (living) members.[66] Bestowing membership of the Order of Merit is within the personal purview of the Queen, and does not require recommendation by ministers or the Prime Minister. He was elected a Fellow of the Royal Society (FRS) in 2001.[2] He has been conferred honorary degrees from a number of Universities around the world, including Manchester (his parents worked on the Manchester Mark 1 in the 1940s), Harvard and Yale.[67][68][69]

In 2012, Berners-Lee was among the British cultural icons selected by artist Sir Peter Blake to appear in a new version of his most famous artwork – the Beatles' Sgt. Pepper's Lonely Hearts Club Band album cover – to celebrate the British cultural figures of his life that he most admires to mark his 80th birthday.[70][71]

In 2013, he was awarded the inaugural Queen Elizabeth Prize for Engineering.[72] On 4 April 2017, he received the 2016 ACM Turing Award "for inventing the World Wide Web, the first web browser, and the fundamental protocols and algorithms allowing the Web to scale".[22]

Open-source software movement

From Wikipedia, the free encyclopedia

The open-source software movement is a movement that supports the use of open-source licenses for some or all software, a part of the broader notion of open collaboration.[1] The open-source movement was started to spread the concept/idea of open-source software. Programmers who support the open-source movement philosophy contribute to the open-source community by voluntarily writing and exchanging programming code for software development.[2] The term "open source" requires that no one can discriminate against a group in not sharing the edited code or hinder others from editing their already-edited work. This approach to software development allows anyone to obtain and modify open-source code. These modifications are distributed back to the developers within the open-source community of people who are working with the software. In this way, the identities of all individuals participating in code modification are disclosed and the transformation of the code is documented over time.[3] This method makes it difficult to establish ownership of a particular bit of code but is in keeping with the open-source movement philosophy. These goals promote the production of "high quality programs" as well as "working cooperatively with other similarly minded people" to improve open-source technology.[2]

Brief history

The label "open source" was created and adopted by a group of people in the free software movement at a strategy session[4] held at Palo Alto, California, in reaction to Netscape's January 1998 announcement of a source code release for Navigator. One of the reasons behind using the term was that "the [advantage] of using the term open source [is] that the business world usually tries to keep free technologies from being installed."[5] Those people who adopted the term used the opportunity before the release of Navigator's source code to free themselves of the ideological and confrontational connotations of the term "free software". Later in February 1998, Bruce Perens and Eric S. Raymond founded an organization called Open Source Initiative (OSI) "as an educational, advocacy, and stewardship organization at a cusp moment in the history of that culture."[6]

Evolution

In the beginning, a difference between hardware and software did not exist. The user and programmer of a computer were one and the same. When the first commercial electronic computer was introduced by IBM in 1952, the machine was hard to maintain and expensive. Putting the price of the machine aside, it was the software that caused the problem when owning one of these computers. Then in 1952, a collaboration of all the owners of the computer got together and created a set of tools. The collaboration of people were in a group called PACT (The Project for the Advancement of Coding techniques). After passing this hurdle, in 1956, the Eisenhower administration decided to put restrictions on the types of sales AT&T could make. This did not stop the inventors from developing new ideas of how to bring the computer to the mass population. The next step was making the computer more affordable which slowly developed through different companies. Then they had to develop software that would host multiple users. MIT computation center developed one of the first systems, CTSS (Compatible Time-Sharing System). This laid the foundation for many more systems, and what we now call the open-source software movement.[7]

The Open Source Movement is branched from the free software movement which began in the late 80s with the launching of the GNU project by Richard Stallman.[8] Stallman is regarded within the open source community as sharing a key role in the conceptualization of freely shared source code for software development.[3] The term "free software" in the free software movement is meant to imply freedom of software exchange and modification. The term does not refer to any monetary freedom.[3] Both the free software movement and the open source movement share this view of free exchange of programming code, and this is often why both of the movements are sometimes referenced in literature as part of the FOSS or "Free and Open Software" or FLOSS "Free/Libre Open Source" communities.

These movements share fundamental differences in the view on open software. The main, factionalizing difference between the groups is the relationship between open source and proprietary software. Often makers of proprietary software, such as Microsoft, may make efforts to support open source software to remain competitive.[9] Members of the open source community are willing to coexist with the makers of proprietary software[3] and feel that the issue of whether software is open source is a matter of practicality.[10]

In contrast, members of the free software community maintain the vision that all software is a part of freedom of speech[3] and that proprietary software is unethical and unjust.[3] The free software movement openly champions this belief through talks that denounce proprietary software. As a whole the community refuses to support proprietary software. Further there are external motivations for these developers. One motivation is that, when a programmer fixes a bug or makes a program it benefits others in an open source environment. Another motivation is that a programmer can work on multiple projects that they find interesting and enjoyable. Programming in the open source world can also lead to commercial job offers or entrance into the venture capital community. These are just a few reasons why open source programmers continue to create and advance software.[11]

While cognizant of the fact that both, the free software movement and the open source movement, share similarities in practical recommendations regarding open source, the free software movement fervently continues to distinguish themselves from the open source movement entirely.[12] The free software movement maintains that it has fundamentally different attitudes towards the relationship between open source and proprietary software. The free software community does not view the open source community as their target grievance, however. Their target grievance is proprietary software itself.[3]

Legal issues

The Open Source Movement has faced a number of legal challenges. Companies that manage open source products have some difficulty securing their trademarks. For example, the scope of "implied license" conjecture remains unclear and can compromise an enterprise’s ability to patent productions made with open source software. Another example is the case of companies offering add-ons for purchase; licensees who make additions to the open source code that are similar to those for purchase may have immunity from patent suits.

In the court case "Jacobsen v. Katzer", the plaintiff sued the defendant for failing to put the required attribution notices in his modified version of the software, thereby violating license. The defendant claimed Artistic License in not adhering to the conditions of the software’s use, but the wording of the attribution notice decided that this was not the case. "Jacobsen v Katzer" established open source software’s equality to proprietary software in the eyes of the law.

In a court case accusing Microsoft of being a monopoly, Linux and open source software was introduced in court to prove that Microsoft had valid competitors and was grouped in with Apple.

There are resources available for those involved open source projects in need of legal advice. The Software Freedom Law Center features a primer on open source legal issues. International Free and Open Source Software Law Review offers peer-reviewed information for lawyers on free software issues.

Formalization

The Open Source Initiative (OSI) was instrumental in the formalization of the Open Source Movement. The OSI was founded by Eric Raymond and Bruce Perens in February 1998 with the purpose of providing general education and advocacy of the open source label through the creation of the Open Source Definition that was based on the Debian Free Software Guidelines. The OSI has become one of the main supporters and advocators of the open source movement.[6]

In February 1998 the open source movement was adopted, formalized, and spearheaded by the Open Source Initiative (OSI), an organization formed to market software "as something more amenable to commercial business use"[3] The OSI owns the trademark "Open Source"[2] The main tool they adopted for this was The Open Source Definition.[13]

The "open source" label was conceived at a strategy session that was held on February 3, 1998 in Palo Alto, California and on April 8 of the same year, the attendees of Tim O’Reilly’s Free Software Summit voted to promote the use of the term "open source".[6]

Overall, the software developments that have come out of the open source movement have not been unique to the computer science field, but they have been successful in developing alternatives to propriety software. Members of the open source community improve upon code and write programs that can rival much of the propriety software that is already available.[3]

The rhetorical discourse used in open source movements is now being broadened to include a larger group of non-expert users as well as advocacy organizations. Several organized groups such as the Creative Commons and global development agencies have also adopted the open source concepts according to their own aims and for their own purposes.[14]

The factors affecting the Open Source Movement’s legal formalization are primarily based on recent political discussion over copyright, appropriation, and intellectual property.[15]

Strengths

  • The collaborative nature of the open source community creates software that can offer customizability and, as a result, promotes the adoption of its products.[16]
  • The open source community promotes the creation of software that is not proprietary, resulting in lower costs.[16]
  • Individuals who have intrinsic interest in code writing and software creation motivate the development of open source software within the community. This differs from proprietary software, the development of which is often motivated through potential monetary gains.[16]
  • An open source tool puts the system administrator in control of the level of risk assumed in deploying the tool.[17]
  • Open source provides flexibility not available in closed products. The hope is that individuals make improvements to an open tool and will offer those improvements to the original developer and community at large. The give-and-take of the gift economy benefits the entire community.[17]
  • Open source licenses and software can be combined with proprietary software. While open source was initially seen as a threat to corporations, some companies found ways to strengthen their proprietary code with open source code, re-releasing it as an improvement.[18]
  • In the event of market failure, programmers and innovators work together to make sure that the software still works[19]
  • Globalization of Market
The Open Source Movement has allowed smaller businesses to participate in the global economy. Before smaller businesses did not have access to the software needed to participate or compete in the global market. It was the larger corporations, the producers of the networks and software who had the power. "That is, individuals who have access to the software needed to create, organize, or distribute content can plug into and participate in the global community".[20] The creation of the Open Source Movement has created "a degree of global computing access that might have been unthinkable in a world where proprietary was the only option."[20] Individuals or organizations with access to an open source had the means needed to develop technical material for a variety of consumers. The Open Source Movement created equal opportunities for people all over the world to participate in the global economy.

Members of the Open Source Movement stress the importance of differentiating between "open source" software and "free software". Although the two issues are related, they are quite different. The open source movement and the free software movement are different but they work together. Both movements strive for freedom of the internet and dislike the idea of ownership over a website.[21] For both open source and free software, one can find the source code and executable component easily and for free online. The largest difference is that free software requires any changes to be submitted to the original maker for redistribution, and any derivative software must also be distributed as free software. This is mainly to keep companies from making minor changes to free software and redistributing it as their own, for a price.[22]

A major advantage to open source code is the ability for a variety of different people to edit and fix problems and errors that have occurred. Naturally because there are more people who can edit the material there are more people who can help make the information more credible and reliable. The open source mission statement promises better quality, higher reliability, more flexibility, lower cost, and an end to predatory vendor lock-in. They stress the importance of maintaining the Open Source Definition. This trademark creates a trusted group that connects all users and developers together.[23] To fully understand the Open Source Definition, one must understand certain terms: Free redistribution means that there is no restriction on any party to sell or give away the software to third parties. Source Code means that the program must efficiently publicize the means of obtaining the source code. Derived works means that the program must allow certain works to be distributed under the same terms. There must be a promise of no discriminating against any certain persons or groups. All of these factors allow for the open source movement to become available to all and easy to access, which is their overall mission. The latest updates from the Open Source Institution took place on January 19, 2011: The OSI collaborated with the Free Software Foundation and together they updated a version of the request that they have sent to the US Department of Justice.[24]

Motivations of programmers

With the growth and attention on the open source movement, the reasons and motivations of programmers for creating code for free has been under investigation. In a paper from the 15th Annual Congress of the European Economic Association on the open source movement, the incentives of programmers on an individual level as well as on a company or network level were analyzed. What is essentially the intellectual gift giving of talented programmers challenges the "self-interested-economic-agent paradigm,"[25] and has made both the public and economists search for an understanding of what the benefits are for programmers.
  • Altruism: The argument for altruism is limited as an explanation because though some exists, the programmers do not focus their kindness on more charitable causes.[citation needed] If the generosity of working for free was a viable motivation for such a prevalent movement, it is curious why such a trend has not been seen in industries such as biotechnology that would have a much bigger impact on the public good.[25]
  • Community sharing and improvement: The online community is an environment that promotes continual improvements, modifications, and contributions to each other's work. A programmer can easily benefit from open source software because by making it public, other testers and subprograms can remove bugs, tailor code to other purposes, and find problems. This kind of peer editing feature of open source software promotes better programs and a higher standard of code.[25]
  • Recognition: Though a project may not be associated with a specific individual, the contributors are often recognized and marked on a project's server or awarded social reputation. This allows for programmers to receive public recognition for their skills, promoting career opportunities and exposure. In fact, the founders of Sun Microsystems and Netscape began as open source programmers.[25]
  • Ego: "If they are somehow assigned to a trivial problem and that is their only possible task, they may spend six months coming up with a bewildering architecture...merely to show their friends and colleagues what a tough nut they are trying to crack."[26] Ego-gratification has been cited as a relevant motivation of programmers because of their competitive community.[26] An OSS (open source software) community has no clear distinction between developers and users, because all users are potential developers. There is a large community of programmers trying to essentially outshine or impress their colleagues.[27] They enjoy having other programmers admire their works and accomplishments, contributing to why OSS projects have a recruiting advantage for unknown talent than a closed-source company.[26]
  • Creative expression: Personal satisfaction also comes from the act of writing software as an equivalent to creative self-expression – it is almost equivalent to creating a work of art. The rediscovery of creativity, which has been lost through the mass production of commercial software products can be a relevant motivation.[28]

Gender diversity of programmers

The vast majority of programmers in open source communities are male. In a study for the European Union on free and open source software communities, researchers found that only 1.5% of all contributors are female.[29] Although women are generally underrepresented in computing, the percentage of women in tech professions is actually much higher, close to 25%.[30] This discrepancy suggests that female programs are overall less likely than male programmers to participate in open source projects.

Some research and interviews with members of open source projects have described a male-dominated culture within open source communities that can be unwelcoming or hostile towards females.[31] There are an initiatives such as Outreachy that aim to support more women and other underrepresented gender identities to participate in open source software. However, within the discussion forums of open source projects the topic of gender diversity can be highly controversial and even inflammatory.[31] A central vision in open source software is that because the software is built and maintained on the merit of individual code contributions, open source communities should act as a meritocracy.[32] In a meritocracy, the importance of an individual in the community depends on the quality of their individual contributions and not demographic factors such as age, race, religion, or gender. Thus proposing changes to the community based on gender, for example, to make the community more inviting towards females, go against the ideal of a meritocracy by targeting certain programmers by gender and no based on their skill alone.[31]

There is evidence that gender does impact a programmer’s perceived merit in the community. A 2016 study identified the gender of over one million programmers on GitHub, by linking the programmer’s GitHub account to their other social media accounts.[33] Between male and female programmers, the researchers found that female programmers were actually more likely to have their pull requests accepted into the project than male programmers, however only when the female had a gender-neutral profile. When females had profiles with a name or image that identified them as female, they were less likely than male programmers to have their pull requests accepted. Another study in 2015 found that of open source projects on GitHub, gender diversity was a significant positive predictor of a team's productivity, meaning that open source teams with a more even mix of different genders tended to be more highly productive.[32]

Drawbacks

  • The structure of the open source community requires that individuals have programming expertise in order to engage in open code modification and exchange. Individuals interested in supporting the open source movement may lack this skill set, but there are many other ways of contributing.[3]
  • Programmers and developers comprise a large percentage of the open source community and sought-out technical support and/or documentation may not be useful or clear to open source software lay-users.[16]
  • The structure of the open source community is one that involves contributions of multiple developers and programmers; software produced in this fashion may lack standardization and compatibility with various computer applications and capabilities.[16]
  • Production can be very limited. Programmers that create open source software often can turn their attention elsewhere very quickly. This opens the door for many bug filled programs and applications out there. Because no one is paid to create it, many projects are never completed.[34]
  • In the open source industry, the user decides the quality of the software. A user must learn the skills of software creation independently and then make the appropriate determinations for quality and capabilities.[35]
  • Librarians may not be equipped to take on this new responsibility of technologies.[36]
  • There is no guarantee that development will happen. It is unknown if an open source project will become usable, especially when a project is started without significant support from one or more organizations. Even if the project does reach a usable stage, it is possible the project can die if there is not enough funding or interest toward it.
  • It is sometimes difficult to know that a project exists, and its current status. Especially for open source projects without significant support, there is not much advertising involved in open source software.
  • The amount of support for an open source project varies highly. The available support for open source software is predominantly self-motivated discussions found on the Internet, sometimes moderated by a core group of contributors. The amount of documentation or guides for an open source project also varies highly. More popular or company-backed projects often have more detailed and maintained documentation. However, as open source projects are regularly changing, documentation can easily fall out of date.
  • There is no guarantee of updates. Although open source software is available to anyone for free, regular updates are not assured since users do not pay for its use.
  • Beyond the obvious detriments towards the theoretical success of open source software, there are several factors that contribute to the lack of long-term success in open source projects. One of the most obvious drawback is that without pay or royalty licensing, there is little financial incentive for a programmer to become involved with a project in the first place, or to continue development and support once the initial product is released. This leads to innumerable examples of well-anticipated software being forever condemned to beta versions and unsupported early model products. With donations as the only source of income for a truly open source (and GPL licensed) project, there is almost no certainty in the future of the project simply because of developer abandonment, making it a poor choice for any sort of application in which future versions, support and a long-term plan would be essential, as is the case for most business software.[37]
  • Organizations with enterprise agreements still pay licensing agreements even if they choose to run alternative open source software. Therefore, many organizations are unlikely to consider using alternative products. As a cost-saving method of using Microsoft products, many large corporations use enterprise agreements and therefore pay a single company wide IT licensing fee, at lower cost per product. "Organizations with EAs that are interested in alternative products can benefit from the gap-filler scenario, but only after they drop Microsoft Office from their EA at the next renewal and final true-up."[38]

Evidence of open source adoption

Libraries are using open source software to develop information as well as library services. The purpose of open source is to provide a software that is cheaper, reliable and has better quality. The one feature that makes this software so sought after is that it is free. Libraries in particular benefit from this movement because of the resources it provides. They also promote the same ideas of learning and understanding new information through the resources of other people. Open source allows a sense of community. It is an invitation for anyone to provide information about various topics. The open source tools even allow libraries to create web-based catalogs. According to the IT source there are various library programs that benefit from this.[36]
Government agencies and infrastructure software — Government Agencies are utilizing open source infrastructure software, like the Linux operating system and the Apache Web-server into software, to manage information.[39] In 2005, a new government lobby was launched under the name National Center for Open Source Policy and Research (NCOSPR) "a non-profit organization promoting the use of open source software solutions within government IT enterprises."[40]

Open source movement in the military — Open source movement has potential to help in the military. The open source software allows anyone to make changes that will improve it. This is a form of invitation for people to put their minds together to grow a software in a cost efficient manner. The reason the military is so interested is because it is possible that this software can increase speed and flexibility. Although there are security setbacks to this idea due to the fact that anyone has access to change the software, the advantages can outweigh the disadvantages. The fact that the open source programs can be modified quickly is crucial. A support group was formed to test these theories. The Military Open Source Software Working Group was organized in 2009 and held over 120 military members. Their purpose was to bring together software developers and contractors from the military to discover new ideas for reuse and collaboration. Overall, open source software in the military is an intriguing idea that has potential drawbacks but they are not enough to offset the advantages.[41]

Open source in education — Colleges and organizations use software predominantly online to educate their students. Open source technology is being adopted by many institutions because it can save these institutions from paying companies to provide them with these administrative software systems. One of the first major colleges to adopt an open source system was Colorado State University in 2009 with many others following after that. Colorado State Universities system was produced by the Kuali Foundation who has become a major player in open source administrative systems. The Kuali Foundation defines itself as a group of organizations that aims to "build and sustain open source software for higher education, by higher education." There are many other examples of open source instruments being used in education other than the Kuali Foundation as well.[42]

"For educators, The Open Source Movement allowed access to software that could be used in teaching students how to apply the theories they were learning".[43] With open networks and software, teachers are able to share lessons, lectures, and other course materials within a community. OpenTechComm is a program that is dedicated to "open access, open use, and open edits- text book or pedagogical resource that teachers of technical and professional communication courses at every level can rely on to craft free offerings to their students."[44] As stated earlier, access to programs like this would be much more cost efficient for educational departments.

Open source in healthcare — Created in June 2009 by the nonprofit eHealthNigeria, the open source software OpenMRS is used to document health care in Nigeria. The use of this software began in Kaduna, Nigeria to serve the purpose of public health. OpenMRS manages features such as alerting health care workers when patients show warning signs for conditions and records births and deaths daily, among other features. The success of this software is caused by its ease of use for those first being introduced to the technology, compared to more complex proprietary healthcare software available in first world countries. This software is community-developed and can be used freely by anyone, characteristic of open source applications. So far, OpenMRS is being used in Rwanda, Mozambique, Haiti, India, China, and the Philippines.[45] The impact of open source in healthcare is also observed by Apelon Inc, the "leading provider of terminology and data interoperability solutions". Recently, its Distributed Terminology System (Open DTS) began supporting the open source MySQL database system. This essentially allows for open source software to be used in healthcare, lessening the dependence on expensive proprietary healthcare software. Due to open source software, the healthcare industry has available a free open source solution to implement healthcare standards. Not only does open source benefit healthcare economically, but the lesser dependence on proprietary software allows for easier integration of various systems, regardless of the developer.[46]

Companies

Microsoft — Before summer of 2008, Microsoft has generally been known as an enemy of the open source community[citation needed]. The company’s anti-open source sentiment was enforced by former CEO Steve Ballmer, who referred to Linux, a widely used open source software, as a "malignant cancer". Microsoft also threatened Linux that they would charge royalties for violating 235 of their patents. In 2004, Microsoft lost a European Union court case,[47] and lost the appeal in 2007,[48] and their further appeal in 2012:[49] being convicted of abusing its dominant position. Specifically they had withheld inter-operability information with the open source Samba (software) project, which can be run on many platforms and aims to "removing barriers to interoperability". In 2008, however, Sam Ramji, the then head of open source software strategy in Microsoft, began working closely with Bill Gates to develop a pro-open source attitude within the software industry as well as Microsoft itself. Ramji, before leaving the company in 2009, built Microsoft's familiarity and involvement with open source, which is evident in Microsoft's contributions of open source code to Windows Azure, "its new-age web service for building and hosting applications on the net", among other projects. These contributions would have been previously unimaginable by Microsoft.[50] Microsoft’s change in attitude about open source and efforts to build a stronger open source community is evidence of the growing adoption and adaption of open source.[51][52]

Sunday, June 3, 2018

Computer program

From Wikipedia, the free encyclopedia

C-language "Hello, World" source code. This first known "Hello, world" snippet from the seminal book The C Programming Language originates from Brian Kernighan and Dennis Ritchie in 1974.

A computer program is a collection of instructions[1] for performing a specific task that is designed to solve a specific class of problems. The instructions of a program are designed to be executed by a computer and it is required that a computer is able to execute programs in order for it to function.

The instructions of a computer program are often specified by a computer programmer. A computer programmer does this by means of the application of a programming language. From the program in its human-readable form of source code, a compiler can derive machine code, which are computer program instructions that—as a result of being specified in a language that a computer can understand—are able to be directly executed by the computer they have been provided to. Alternatively, a computer program may be executed with the aid of an interpreter.

The method applied by a computer to execute the instructions of a computer program is called an algorithm. A collection of computer programs, libraries, and related data are referred to as software. Computer programs may be categorized along functional lines, such as application software and system software.

History

Early programmable machines

The earliest programmable machines preceded the invention of the digital computer. In 1801, Joseph-Marie Jacquard devised a loom that would weave a pattern by following a series of perforated cards. Patterns could be woven and repeated by arranging the cards.[2]

Analytical Engine

Lovelace's diagram from Note G, the first published computer algorithm

In 1837, Charles Babbage was inspired by Jacquard's loom to attempt to build the Analytical Engine.[2] The names of the components of the calculating device were borrowed from the textile industry. In the textile industry, yarn was brought from the store to be milled. The device would have had a "store"—memory to hold 1,000 numbers of 40 decimal digits each. Numbers from the "store" would then have then been transferred to the "mill" (analogous to the CPU of a modern machine), for processing. It was programmed using two sets of perforated cards—one to direct the operation and the other for the input variables.[2] [3] However, after more than 17,000 pounds of the British government's money, the thousands of cogged wheels and gears never fully worked together.[4]

During a nine-month period in 1842–43, Ada Lovelace translated the memoir of Italian mathematician Luigi Menabrea. The memoir covered the Analytical Engine. The translation contained Note G which completely detailed a method for calculating Bernoulli numbers using the Analytical Engine. This note is recognized by some historians as the world's first written computer program.[5]

Universal Turing machine

In 1936, Alan Turing introduced the Universal Turing machine—a theoretical device that can model every computation that can be performed on a Turing complete computing machine.[6] It is a finite-state machine that has an infinitely long read/write tape. The machine can move the tape back and forth, changing its contents as it performs an algorithm. The machine starts in the initial state, goes through a sequence of steps, and halts when it encounters the halt state.[7] This machine is considered by some to be the origin of the stored-program computer—used by John von Neumann (1946) for the "Electronic Computing Instrument" that now bears the von Neumann architecture name.[8]

Early programmable computers

The Z3 computer, invented by Konrad Zuse (1941) in Germany, was a digital and programmable computer.[9] A digital computer uses electricity as the calculating component. The Z3 contained 2,400 relays to create the circuits. The circuits provided a binary, floating-point, nine-instruction computer. Programming the Z3 was through a specially designed keyboard and punched tape.

The Electronic Numerical Integrator And Computer (Fall 1945) was a Turing complete, general-purpose computer that used 17,468 vacuum tubes to create the circuits. At its core, it was a series of Pascalines wired together.[10] Its 40 units weighed 30 tons, occupied 1,800 square feet (167 m2), and consumed $650 per hour (in 1940s currency) in electricity when idle.[10] It had 20 base-10 accumulators. Programming the ENIAC took up to two months.[10] Three function tables were on wheels and needed to be rolled to fixed function panels. Function tables were connected to function panels using heavy black cables. Each function table had 728 rotating knobs. Programming the ENIAC also involved setting some of the 3,000 switches. Debugging a program took a week.[10] The ENIAC featured parallel operations. Different sets of accumulators could simultaneously work on different algorithms. It used punched card machines for input and output, and it was controlled with a clock signal. It ran for eight years, calculating hydrogen bomb parameters, predicting weather patterns, and producing firing tables to aim artillery guns.

The Manchester Small-Scale Experimental Machine (June 1948) was a stored-program computer.[11] Programming transitioned away from moving cables and setting dials; instead, a computer program was stored in memory as numbers. Only three bits of memory were available to store each instruction, so it was limited to eight instructions. 32 switches were available for programming.

Later computers

Switches for manual input on a Data General Nova 3, manufactured in the mid-1970s

Computers manufactured until the 1970s had front-panel switches for programming. The computer program was written on paper for reference. An instruction was represented by a configuration of on/off settings. After setting the configuration, an execute button was pressed. This process was then repeated. Computer programs also were manually input via paper tape or punched cards. After the medium was loaded, the starting address was set via switches and the execute button pressed.[12]

In 1961, the Burroughs B5000 was built specifically to be programmed in the ALGOL 60 language. The hardware featured circuits to ease the compile phase.[13]

In 1964, the IBM System/360 was a line of six computers each having the same instruction set architecture. The Model 30 was the smallest and least expensive. Customers could upgrade and retain the same application software.[14] Each System/360 model featured multiprogramming. With operating system support, multiple programs could be in memory at once. When one was waiting for input/output, another could compute. Each model also could emulate other computers. Customers could upgrade to the System/360 and retain their IBM 7094 or IBM 1401 application software.[14]

Computer programming

Computer programming is the process of writing or editing source code. Editing source code involves testing, analyzing, refining, and sometimes coordinating with other programmers on a jointly developed program. A person who practices this skill is referred to as a computer programmer, software developer, and sometimes coder.
The sometimes lengthy process of computer programming is usually referred to as software development. The term software engineering is becoming popular as the process is seen as an engineering discipline.

Programming languages

A computer program written in the imperative programming style

Computer programs can be categorized by the programming language paradigm used to produce them. Two of the main paradigms are imperative and declarative.

Imperative languages

Imperative programming languages specify a sequential algorithm using declarations, expressions, and statements:[15]
  • A declaration couples a variable name to a datatype – for example: var x: integer;
  • An expression yields a value – for example: 2 + 2 yields 4
  • A statement might assign an expression to a variable or use the value of a variable to alter the program's control flow – for example: x := 2 + 2; if x = 4 then do_something();
One criticism of imperative languages is the side effect of an assignment statement on a class of variables called non-local variables.[16]

Declarative languages

Declarative programming languages describe what computation should be performed and not how to compute it. Declarative programs omit the control flow and are considered sets of instructions. Two broad categories of declarative languages are functional languages and logical languages. The principle behind functional languages (like Haskell) is to not allow side effects, which makes it easier to reason about programs like mathematical functions.[16] The principle behind logical languages (like Prolog) is to define the problem to be solved – the goal – and leave the detailed solution to the Prolog system itself.[17] The goal is defined by providing a list of subgoals. Then each subgoal is defined by further providing a list of its subgoals, etc. If a path of subgoals fails to find a solution, then that subgoal is backtracked and another path is systematically attempted.

Compilation and interpretation

A computer program in the form of a human-readable, computer programming language is called source code. Source code may be converted into an executable image by a compiler or executed immediately with the aid of an interpreter.

Compilers are used to translate source code from a programming language into either object code or machine code.[18] Object code needs further processing to become machine code, and machine code consists of the central processing unit's native instructions, ready for execution. Compiled computer programs are commonly referred to as executables, binary images, or simply as binaries – a reference to the binary file format used to store the executable code.

Interpreters are used to execute source code from a programming language line-by-line. The interpreter decodes each statement and performs its behavior. One advantage of interpreters is that they can easily be extended to an interactive session. The programmer is presented with a prompt, and individual lines of code are typed in and performed immediately.

The main disadvantage of interpreters is computer programs run slower than when compiled. Interpreting code is slower because the interpreter must decode each statement and then perform it. However, software development may be faster using an interpreter because testing is immediate when the compiling step is omitted. Another disadvantage of interpreters is an interpreter must be present on the executing computer. By contrast, compiled computer programs need no compiler present during execution.

Just in time compilers pre-compile computer programs just before execution. For example, the Java virtual machine Hotspot contains a Just In Time Compiler which selectively compiles Java bytecode into machine code - but only code which Hotspot predicts is likely to be used many times.

Either compiled or interpreted programs might be executed in a batch process without human interaction.

Scripting languages are often used to create batch processes. One common scripting language is Unix shell, and its executing environment is called the command-line interface.

No properties of a programming language require it to be exclusively compiled or exclusively interpreted. The categorization usually reflects the most popular method of language execution. For example, Java is thought of as an interpreted language and C a compiled language, despite the existence of Java compilers and C interpreters.

Storage and execution

In the 1950s, computer programs were stored on perforated paper tape

Typically, computer programs are stored in non-volatile memory until requested either directly or indirectly to be executed by the computer user. Upon such a request, the program is loaded into random-access memory, by a computer program called an operating system, where it can be accessed directly by the central processor. The central processor then executes ("runs") the program, instruction by instruction, until termination. A program in execution is called a process.[19] Termination is either by normal self-termination or by error – software or hardware error.

Simultaneous execution

Many operating systems support multitasking which enables many computer programs to appear to run simultaneously on one computer. Operating systems may run multiple programs through process scheduling – a software mechanism to switch the CPU among processes often so users can interact with each program while it runs.[20] Within hardware, modern day multiprocessor computers or computers with multicore processors may run multiple programs.[21]
Multiple lines of the same computer program may be simultaneously executed using threads. Multithreading processors are optimized to execute multiple threads efficiently.

Self-modifying programs

A computer program in execution is normally treated as being different from the data the program operates on. However, in some cases, this distinction is blurred when a computer program modifies itself. The modified computer program is subsequently executed as part of the same program. Self-modifying code is possible for programs written in machine code, assembly language, Lisp, C, COBOL, PL/1, and Prolog.

Functional categories

Computer programs may be categorized along functional lines. The main functional categories are application software and system software. System software includes the operating system which couples computer hardware with application software.[22] The purpose of the operating system is to provide an environment in which application software executes in a convenient and efficient manner.[22] In addition to the operating system, system software includes embedded programs, boot programs, and micro programs. Application software designed for end users have a user interface. Application software not designed for the end user includes middleware, which couples one application with another. Application software also includes utility programs. The distinction between system software and application software is under debate.

Application software

Example of an app: GCalctool, a software calculator

There are many types of application software:

Utility programs

Utility programs are application programs designed to aid system administrators and computer programmers.

Operating system

An operating system is a computer program that acts as an intermediary between a user of a computer and the computer hardware. [22]
In the 1950s, the programmer, who was also the operator, would write a program and run it.[12] After the program finished executing, the output may have been printed, or it may have been punched onto paper tape or cards for later processing.[12] More often than not the program did not work. [23] The programmer then looked at the console lights and fiddled with the console switches. If less fortunate, a memory printout was made for further study.[23] In the 1960s, programmers reduced the amount of wasted time by automating the operator's job.[23] A program called an operating system was kept in the computer at all times.[23]

Originally, operating systems were programmed in assembly; however, modern operating systems are typically written in C.

Boot program

A stored-program computer requires an initial computer program stored in its read-only memory to boot. The boot process is to identify and initialize all aspects of the system, from processor registers to device controllers to memory contents.[24] Following the initialization process, this initial computer program loads the operating system and sets the program counter to begin normal operations.

Embedded programs

The microcontroller on the right of this USB flash drive is controlled with embedded firmware.

Independent of the host computer, a hardware device might have embedded firmware to control its operation. Firmware is used when the computer program is rarely or never expected to change, or when the program must not be lost when the power is off.[23]

Microcode programs

Microcode programs control some central processing units and some other hardware. This code moves data between the registers, buses, arithmetic logic units, and other functional units in the CPU. Unlike conventional programs, microcode is not usually written by, or even visible to, the end users of systems, and is usually provided by the manufacturer, and is considered internal to the device.

Inequality (mathematics)

From Wikipedia, the free encyclopedia https://en.wikipedia.org/wiki/Inequality...