Contents

Entities in Doctrine 2 are lightweight PHP Objects that contain persistable properties. A persistable property is an instance variable of the entity that is saved into and retrieved from the database by Doctrine’s data mapping capabilities via the Entity Manager - an implementation of the data mapper pattern:

$user=newUser();$user->name="john2";$user->password="doe";$entityManager->persist($user);$entityManager->flush();echo"The user with id $user->id has been saved.";

Doctrine 1.x follows the active record pattern for working with data, where a class corresponds with a database table. For instance, if a programmer wanted to create a new "User" object in a database, he/she would no longer need to write SQL queries, but instead could use the following PHP code:

$user=newUser();$user->name="john";$user->password="doe";$user->save();echo"The user with id $user->id has been saved.";

One feature of Doctrine is the low level of configuration that is needed to start a project. Doctrine can generate object classes from an existing database, and the programmer can then specify relations and add custom functionality to the generated classes. There is no need to generate or maintain complex XML database schemas, as seen in many other frameworks.

Another key feature of Doctrine is the ability to optionally write database queries in an OO (object oriented) SQL dialect called DQL (Doctrine Query Language) inspired by Hibernate'sHQL. Alternately, the QueryBuilder class (Doctrine_Query in Doctrine 1.x) allows one to construct queries through a fluent interface. These interfaces provide developers with powerful alternatives to SQL which maintain flexibility and still allow for switching of database back-ends, without requiring any code duplication.

Writing queries explicitly however is not always necessary, as Doctrine performs joins and fetches related objects automatically. Small projects can be easily constructed without writing queries.

Other notable features of Doctrine are:

support for hooks (methods which can validate or modify database input and output) and event listeners to structure business-related logic;

column aggregation inheritance (similar objects can be stored in one database table, with one type-column specifying the subtype of the particular object - the correct subclass is always returned when a query is done);

Doctrine was started by Konsta Vesterinen, also known as zYne-. The project's initial commit was made on April 13, 2006. As the project became more mature, the adoption began to pick up. Before long, the community was active and development was receiving regular contributions, among others from the Google Summer of Code project.

Doctrine has been influenced by dozens of projects and many different people. The largest influences have been the Java ORM Hibernate and ActiveRecord from Ruby on Rails. Both of these ORM solutions have implemented a fully featured solution in the Java and Ruby languages. The purpose of the Doctrine project is to build an equally powerful solution for the PHP language for high-load websites that have to maintain constant flow of visitors. Doctrine ORM can be used to improve performance of such websites.

1.
Software release life cycle
–
Usage of the alpha/beta test terminology originated at IBM. As long ago as the 1950s, IBM used similar terminology for their hardware development, a test was the verification of a new product before public announcement. B test was the verification before releasing the product to be manufactured, C test was the final test before general availability of the product. Martin Belsky, a manager on some of IBMs earlier software projects claimed to have invented the terminology, IBM dropped the alpha/beta terminology during the 1960s, but by then it had received fairly wide notice. The usage of beta test to refer to testing done by customers was not done in IBM, rather, IBM used the term field test. Pre-alpha refers to all activities performed during the project before formal testing. These activities can include requirements analysis, software design, software development, in typical open source development, there are several types of pre-alpha versions. Milestone versions include specific sets of functions and are released as soon as the functionality is complete, the alpha phase of the release life cycle is the first phase to begin software testing. In this phase, developers generally test the software using white-box techniques, additional validation is then performed using black-box or gray-box techniques, by another testing team. Moving to black-box testing inside the organization is known as alpha release, alpha software can be unstable and could cause crashes or data loss. Alpha software may not contain all of the features that are planned for the final version, in general, external availability of alpha software is uncommon in proprietary software, while open source software often has publicly available alpha versions. The alpha phase usually ends with a freeze, indicating that no more features will be added to the software. At this time, the software is said to be feature complete, Beta, named after the second letter of the Greek alphabet, is the software development phase following alpha. Software in the stage is also known as betaware. Beta phase generally begins when the software is complete but likely to contain a number of known or unknown bugs. Software in the phase will generally have many more bugs in it than completed software, as well as speed/performance issues. The focus of beta testing is reducing impacts to users, often incorporating usability testing, the process of delivering a beta version to the users is called beta release and this is typically the first time that the software is available outside of the organization that developed it. Beta version software is useful for demonstrations and previews within an organization

2.
PHP
–
PHP is a server-side scripting language designed primarily for web development but also used as a general-purpose programming language. Originally created by Rasmus Lerdorf in 1994, the PHP reference implementation is now produced by The PHP Development Team, PHP originally stood for Personal Home Page, but it now stands for the recursive acronym PHP, Hypertext Preprocessor. PHP code may be embedded into HTML or HTML5 code, or it can be used in combination with various web template systems, web content management systems and web frameworks. PHP code is usually processed by a PHP interpreter implemented as a module in the web server or as a Common Gateway Interface executable. The web server combines the results of the interpreted and executed PHP code, PHP code may also be executed with a command-line interface and can be used to implement standalone graphical applications. The standard PHP interpreter, powered by the Zend Engine, is free software released under the PHP License, PHP has been widely ported and can be deployed on most web servers on almost every operating system and platform, free of charge. The PHP language evolved without a formal specification or standard until 2014. Since 2014 work has gone on to create a formal PHP specification, PHP development began in 1995 when Rasmus Lerdorf wrote several Common Gateway Interface programs in C, which he used to maintain his personal homepage. He extended them to work with web forms and to communicate with databases, PHP/FI could help to build simple, dynamic web applications. This release already had the functionality that PHP has as of 2013. This included Perl-like variables, form handling, and the ability to embed HTML, the syntax resembled that of Perl but was simpler, more limited and less consistent. A development team began to form and, after months of work and beta testing, the fact that PHP lacked an original overall design but instead developed organically has led to inconsistent naming of functions and inconsistent ordering of their parameters. Zeev Suraski and Andi Gutmans rewrote the parser in 1997 and formed the base of PHP3, changing the name to the recursive acronym PHP. Afterwards, public testing of PHP3 began, and the launch came in June 1998. Suraski and Gutmans then started a new rewrite of PHPs core and they also founded Zend Technologies in Ramat Gan, Israel. On May 22,2000, PHP4, powered by the Zend Engine 1.0, was released, as of August 2008 this branch reached version 4.4.9. PHP4 is no longer under development nor will any security updates be released, on July 13,2004, PHP5 was released, powered by the new Zend Engine II. PHP5 included new features such as improved support for object-oriented programming, the PHP Data Objects extension, in 2008 PHP5 became the only stable version under development

3.
Operating system
–
An operating system is system software that manages computer hardware and software resources and provides common services for computer programs. All computer programs, excluding firmware, require a system to function. Operating systems are found on many devices that contain a computer – from cellular phones, the dominant desktop operating system is Microsoft Windows with a market share of around 83. 3%. MacOS by Apple Inc. is in place, and the varieties of Linux is in third position. Linux distributions are dominant in the server and supercomputing sectors, other specialized classes of operating systems, such as embedded and real-time systems, exist for many applications. A single-tasking system can run one program at a time. Multi-tasking may be characterized in preemptive and co-operative types, in preemptive multitasking, the operating system slices the CPU time and dedicates a slot to each of the programs. Unix-like operating systems, e. g. Solaris, Linux, cooperative multitasking is achieved by relying on each process to provide time to the other processes in a defined manner. 16-bit versions of Microsoft Windows used cooperative multi-tasking, 32-bit versions of both Windows NT and Win9x, used preemptive multi-tasking. Single-user operating systems have no facilities to distinguish users, but may allow multiple programs to run in tandem, a distributed operating system manages a group of distinct computers and makes them appear to be a single computer. The development of networked computers that could be linked and communicate with each other gave rise to distributed computing, distributed computations are carried out on more than one machine. When computers in a work in cooperation, they form a distributed system. The technique is used both in virtualization and cloud computing management, and is common in large server warehouses, embedded operating systems are designed to be used in embedded computer systems. They are designed to operate on small machines like PDAs with less autonomy and they are able to operate with a limited number of resources. They are very compact and extremely efficient by design, Windows CE and Minix 3 are some examples of embedded operating systems. A real-time operating system is a system that guarantees to process events or data by a specific moment in time. A real-time operating system may be single- or multi-tasking, but when multitasking, early computers were built to perform a series of single tasks, like a calculator. Basic operating system features were developed in the 1950s, such as resident monitor functions that could run different programs in succession to speed up processing

4.
Software license
–
A software license is a legal instrument governing the use or redistribution of software. Under United States copyright law all software is copyright protected, in code as also object code form. The only exception is software in the public domain, most distributed software can be categorized according to its license type. Two common categories for software under copyright law, and therefore with licenses which grant the licensee specific rights, are proprietary software and free, unlicensed software outside the copyright protection is either public domain software or software which is non-distributed, non-licensed and handled as internal business trade secret. Contrary to popular belief, distributed unlicensed software is copyright protected. Examples for this are unauthorized software leaks or software projects which are placed on public software repositories like GitHub without specified license. As voluntarily handing software into the domain is problematic in some international law domains, there are also licenses granting PD-like rights. Therefore, the owner of a copy of software is legally entitled to use that copy of software. Hence, if the end-user of software is the owner of the respective copy, as many proprietary licenses only enumerate the rights that the user already has under 17 U. S. C. §117, and yet proclaim to take away from the user. Proprietary software licenses often proclaim to give software publishers more control over the way their software is used by keeping ownership of each copy of software with the software publisher. The form of the relationship if it is a lease or a purchase, for example UMG v. Augusto or Vernor v. Autodesk. The ownership of goods, like software applications and video games, is challenged by licensed. The Swiss based company UsedSoft innovated the resale of business software and this feature of proprietary software licenses means that certain rights regarding the software are reserved by the software publisher. Therefore, it is typical of EULAs to include terms which define the uses of the software, the most significant effect of this form of licensing is that, if ownership of the software remains with the software publisher, then the end-user must accept the software license. In other words, without acceptance of the license, the end-user may not use the software at all, one example of such a proprietary software license is the license for Microsoft Windows. The most common licensing models are per single user or per user in the appropriate volume discount level, Licensing per concurrent/floating user also occurs, where all users in a network have access to the program, but only a specific number at the same time. Another license model is licensing per dongle which allows the owner of the dongle to use the program on any computer, Licensing per server, CPU or points, regardless the number of users, is common practice as well as site or company licenses

5.
Massachusetts Institute of Technology
–
The Massachusetts Institute of Technology is a private research university in Cambridge, Massachusetts, often cited as one of the worlds most prestigious universities. Researchers worked on computers, radar, and inertial guidance during World War II, post-war defense research contributed to the rapid expansion of the faculty and campus under James Killian. The current 168-acre campus opened in 1916 and extends over 1 mile along the bank of the Charles River basin. The Institute is traditionally known for its research and education in the sciences and engineering, and more recently in biology, economics, linguistics. Air Force and 6 Fields Medalists have been affiliated with MIT, the school has a strong entrepreneurial culture, and the aggregated revenues of companies founded by MIT alumni would rank as the eleventh-largest economy in the world. In 1859, a proposal was submitted to the Massachusetts General Court to use newly filled lands in Back Bay, Boston for a Conservatory of Art and Science, but the proposal failed. A charter for the incorporation of the Massachusetts Institute of Technology, Rogers, a professor from the University of Virginia, wanted to establish an institution to address rapid scientific and technological advances. The Rogers Plan reflected the German research university model, emphasizing an independent faculty engaged in research, as well as instruction oriented around seminars, two days after the charter was issued, the first battle of the Civil War broke out. After a long delay through the war years, MITs first classes were held in the Mercantile Building in Boston in 1865, in 1863 under the same act, the Commonwealth of Massachusetts founded the Massachusetts Agricultural College, which developed as the University of Massachusetts Amherst. In 1866, the proceeds from sales went toward new buildings in the Back Bay. MIT was informally called Boston Tech, the institute adopted the European polytechnic university model and emphasized laboratory instruction from an early date. Despite chronic financial problems, the institute saw growth in the last two decades of the 19th century under President Francis Amasa Walker. Programs in electrical, chemical, marine, and sanitary engineering were introduced, new buildings were built, the curriculum drifted to a vocational emphasis, with less focus on theoretical science. The fledgling school still suffered from chronic financial shortages which diverted the attention of the MIT leadership, during these Boston Tech years, MIT faculty and alumni rebuffed Harvard University president Charles W. Eliots repeated attempts to merge MIT with Harvard Colleges Lawrence Scientific School. There would be at least six attempts to absorb MIT into Harvard, in its cramped Back Bay location, MIT could not afford to expand its overcrowded facilities, driving a desperate search for a new campus and funding. Eventually the MIT Corporation approved an agreement to merge with Harvard, over the vehement objections of MIT faculty, students. However, a 1917 decision by the Massachusetts Supreme Judicial Court effectively put an end to the merger scheme, the neoclassical New Technology campus was designed by William W. Bosworth and had been funded largely by anonymous donations from a mysterious Mr. Smith, starting in 1912. In January 1920, the donor was revealed to be the industrialist George Eastman of Rochester, New York, who had invented methods of production and processing

6.
Class (computer programming)
–
In object-oriented programming, a class is an extensible program-code-template for creating objects, providing initial values for state and implementations of behavior. In some languages, classes are only a feature, while in other languages classes are first-class citizens. In these languages, a class that creates classes is called a metaclass, at the same time, a class has an implementation, and can create objects of a given type, with a given implementation. In the terms of theory, a class is an implementation‍—‌a concrete data structure. Different classes can produce objects of the type, for example. Similarly, a class may have several different constructors. Types generally represent nouns, such as a person, place or thing, or something nominalized, for example, a Banana type might represent the properties and functionality of bananas in general, while the ABCBanana and XYZBanana classes would represent ways of producing bananas. The ABCBanana class could then produce particular bananas, instances of the ABCBanana class would be objects of type Banana, often only a single implementation of a type is given, in which case the class name is often identical with the type name. Classes are composed from structural and behavioral constituents, a class contains data field descriptions. These are usually field types and names that will be associated with state variables at program run time, in most languages, the structure defined by the class determines the layout of the memory used by its instances. Other implementations are possible, for example, objects in Python use associative key-value containers, some programming languages support specification of invariants as part of the definition of the class, and enforce them through the type system. Encapsulation of state is necessary for being able to enforce the invariants of the class, the behavior of class or its instances is defined using methods. Methods are subroutines with the ability to operate on objects or classes and these operations may alter the state of an object or simply provide ways of accessing it. Many kinds of methods exist, but support for them varies across languages, a language may also allow the programmer to define and call these special methods. Every class implements an interface by providing structure and behavior, structure consists of data and state, and behavior consists of code that specifies how methods are implemented. Some languages, however, provide features that separate interface and implementation, for example, an abstract class can define an interface without providing implementation. Languages that support class inheritance also allow classes to inherit interfaces from the classes that they are derived from, object-oriented programming methodology dictates that the operations of any interface of a class are to be independent of each other. It results in a design where clients of an interface use the methods declared in the interface

7.
SQL
–
Originally based upon relational algebra and tuple relational calculus, SQL consists of a data definition language, data manipulation language, and data control language. The scope of SQL includes data insert, query, update and delete, schema creation and modification, although SQL is often described as, and to a great extent is, a declarative language, it also includes procedural elements. SQL was one of the first commercial languages for Edgar F. Codds relational model, as described in his influential 1970 paper, despite not entirely adhering to the relational model as described by Codd, it became the most widely used database language. SQL became a standard of the American National Standards Institute in 1986, since then, the standard has been revised to include a larger set of features. Despite the existence of such standards, most SQL code is not completely portable among different database systems without adjustments, SQL was initially developed at IBM by Donald D. Chamberlin and Raymond F. Boyce in the early 1970s. The acronym SEQUEL was later changed to SQL because SEQUEL was a trademark of the UK-based Hawker Siddeley aircraft company, in June 1979, Relational Software, Inc. introduced the first commercially available implementation of SQL, Oracle V2 for VAX computers. SQL deviates in several ways from its foundation, the relational model. In that model, a table is a set of tuples, while in SQL, tables and query results are lists of rows, the same row may occur multiple times, and the order of rows can be employed in queries. Critics argue that SQL should be replaced with a language that strictly returns to the foundation, for example. The SQL language is subdivided into several elements, including, Clauses. Queries, which retrieve the data based on specific criteria and this is an important element of SQL. Statements, which may have a persistent effect on schemata and data, or may control transactions, program flow, connections, sessions, SQL statements also include the semicolon statement terminator. Though not required on every platform, it is defined as a part of the SQL grammar. Insignificant whitespace is ignored in SQL statements and queries, making it easier to format SQL code for readability. Other operators have at times been suggested or implemented, such as the skyline operator, SQL has the case/when/then/else/end expression, which was introduced in SQL-92. In its most general form, which is called a case in the SQL standard, it works like else if in other programming languages. If the source does not specify an ELSE expression, SQL defaults to ELSE NULL, an abbreviated syntax—called simple case in the SQL standard—mirrors switch statements, This syntax uses implicit equality comparisons, with the usual caveats for comparing with NULL. For the Oracle-SQL dialect, the latter can be shortened to an equivalent DECODE construct, The last value is the default, if none is specified, however, unlike the standards simple case, Oracles DECODE considers two NULLs equal with each other

8.
XML
–
In computing, Extensible Markup Language is a markup language that defines a set of rules for encoding documents in a format that is both human-readable and machine-readable. The W3Cs XML1.0 Specification and several other related specifications—all of them free open standards—define XML, the design goals of XML emphasize simplicity, generality, and usability across the Internet. It is a data format with strong support via Unicode for different human languages. Although the design of XML focuses on documents, the language is used for the representation of arbitrary data structures such as those used in web services. Several schema systems exist to aid in the definition of XML-based languages, hundreds of document formats using XML syntax have been developed, including RSS, Atom, SOAP, SVG, and XHTML. XML-based formats have become the default for many office-productivity tools, including Microsoft Office, OpenOffice. org and LibreOffice, XML has also provided the base language for communication protocols such as XMPP. Applications for the Microsoft. NET Framework use XML files for configuration, apple has an implementation of a registry based on XML. XML has come into use for the interchange of data over the Internet. IETF RFC7303 gives rules for the construction of Internet Media Types for use when sending XML and it also defines the media types application/xml and text/xml, which say only that the data is in XML, and nothing about its semantics. The use of text/xml has been criticized as a source of encoding problems. RFC7303 also recommends that XML-based languages be given media types ending in +xml, further guidelines for the use of XML in a networked context appear in RFC3470, also known as IETF BCP70, a document covering many aspects of designing and deploying an XML-based language. The material in this section is based on the XML Specification and this is not an exhaustive list of all the constructs that appear in XML, it provides an introduction to the key constructs most often encountered in day-to-day use. Character An XML document is a string of characters, almost every legal Unicode character may appear in an XML document. Processor and application The processor analyzes the markup and passes structured information to an application, the specification places requirements on what an XML processor must do and not do, but the application is outside its scope. The processor is often referred to colloquially as an XML parser, Markup and content The characters making up an XML document are divided into markup and content, which may be distinguished by the application of simple syntactic rules. Generally, strings that constitute markup either begin with the character < and end with a >, or they begin with the character &, strings of characters that are not markup are content. However, in a CDATA section, the delimiters <. > are classified as markup, in addition, whitespace before and after the outermost element is classified as markup. Tag A tag is a construct that begins with <

9.
Hibernate (framework)
–
Hibernate ORM is an object-relational mapping tool for the Java programming language. It provides a framework for mapping an object-oriented domain model to a relational database, Hibernate solves object-relational impedance mismatch problems by replacing direct, persistent database accesses with high-level object handling functions. Hibernate is free software that is distributed under the GNU Lesser General Public License 2.1, Hibernates primary feature is mapping from Java classes to database tables, and mapping from Java data types to SQL data types. Hibernate also provides data query and retrieval facilities and it generates SQL calls and relieves the developer from the manual handling and object conversion of the result set. The mapping of Java classes to database tables is implemented by the configuration of an XML file or by using Java Annotations, when using an XML file, Hibernate can generate skeleton source code for the persistence classes. This is auxiliary when annotations are used, Hibernate can use the XML file or the Java annotations to maintain the database schema. There are provided facilities to arrange one-to-many and many-to-many relationships between classes, in addition to managing associations between objects, Hibernate can also manage reflexive associations wherein an object has a one-to-many relationship with other instances of the class type. Hibernate supports the mapping of custom value types and this makes the following scenarios possible, Overriding the default SQL type when mapping a column to a property. Mapping Java Enums to columns as though they were regular properties, mapping a single property to multiple columns. This problem is called object-relational impedance mismatch, mapping is a way of resolving the object-relational impedance mismatch problem. Mapping informs the ORM tool of what Java class object to store in which database table, Hibernate provides an SQL inspired language called Hibernate Query Language that allows SQL-like queries to be written against Hibernates data objects. Criteria Queries are provided as an alternative to HQL. Criteria Query is used to modify the objects and provide the restriction for the objects, HQL is the object-oriented version of SQL. It generates database independent queries so that there is no need to write database-specific queries, without this capability, changing the database would require individual SQL queries to be changed as well, leading to maintenance issues. Hibernate provides transparent persistence for Plain Old Java Objects, the only strict requirement for a persistent class is a no-argument constructor, not necessarily public. Proper behavior in some applications also requires attention to the equals. Collections of data objects are stored in Java collection classes such as implementations of the Set. Java generics, introduced in Java 5, are supported, Hibernate can be configured to lazy load associated collections

10.
Memcached
–
Memcached is a general-purpose distributed memory caching system. It is often used to speed up dynamic database-driven websites by caching data, Memcached is free and open-source software, licensed under the Revised BSD license. Memcached runs on Unix-like operating systems and on Microsoft Windows and it depends on the libevent library. Memcacheds APIs provide a very large hash table distributed across multiple machines, when the table is full, subsequent inserts cause older data to be purged in least recently used order. Applications using Memcached typically layer requests and additions into RAM before falling back on a backing store. The size of this table is often very large. It is limited to available memory across all the servers in the cluster of servers in a data centre, where high-volume, wide-audience Web publishing requires it, this may stretch to many gigabytes. Memcached can be valuable for situations where either the number of requests for content is high. Engine Yard and Jelastic are using Memcached as part of their platform as a service technology stack, google App Engine, AppScale, Microsoft Azure, IBM Bluemix and Amazon Web Services also offer a Memcached service through an API. Memcached was first developed by Brad Fitzpatrick for his website LiveJournal and it was originally written in Perl, then later rewritten in C by Anatoly Vorobey, then employed by LiveJournal. The system uses a client–server architecture, the servers maintain a key–value associative array, the clients populate this array and query it by key. Keys are up to 250 bytes long and values can be at most 1 megabyte in size, clients use client-side libraries to contact the servers which, by default, expose their service at port 11211. Each client knows all servers, the servers do not communicate with each other, if a client wishes to set or read the value corresponding to a certain key, the clients library first computes a hash of the key to determine which server to use. This gives a form of sharding and scalable shared-nothing architecture across the servers. The server computes a hash of the key to determine where to store or read the corresponding value. The servers keep the values in RAM, if a server out of RAM. Therefore, clients must treat Memcached as a cache, they cannot assume that data stored in Memcached is still there when they need it. Other databases, such as MemcacheDB, Couchbase Server, provide persistent storage while maintaining Memcached protocol compatibility, if all client libraries use the same hashing algorithm to determine servers, then clients can read each others cached data

11.
SQLite
–
SQLite is a relational database management system contained in a C programming library. In contrast to other database management systems, SQLite is not a client–server database engine. Rather, it is embedded into the end program, SQLite is ACID-compliant and implements most of the SQL standard, using a dynamically and weakly typed SQL syntax that does not guarantee the domain integrity. SQLite is a choice as embedded database software for local/client storage in application software such as web browsers. It is arguably the most widely deployed database engine, as it is used today by several browsers, operating systems. SQLite has bindings to many programming languages, unlike client–server database management systems, the SQLite engine has no standalone processes with which the application program communicates. Instead, the SQLite library is linked in and thus becomes an part of the application program. The library can also be called dynamically, SQLite stores the entire database as a single cross-platform file on a host machine. It implements this simple design by locking the entire database file during writing, SQLite read operations can be multitasked, though writes can only be performed sequentially. Due to the design, SQLite applications require less configuration than client-server databases. SQLite is called zero-conf because it not require service management or access control based on GRANT. Access control is handled by means of File system permissions given to the file itself. Databases in client-server systems use file system permissions which give access to the database files only to the daemon process, another implication of the serverless design is that several processes may need to be able to write to the database file. In server-based databases, several writers will all connect to the same daemon, SQLite on the other hand has to rely on file-system locks. It has less knowledge of the processes that are accessing the database at the same time. Therefore, SQLite is not the choice for write-intensive deployments. However, for simple queries with little concurrency, SQLite performance profits from avoiding the overhead of passing its data to another process, SQLite uses PostgreSQL as a reference platform. “What would PostgreSQL do” is used to sense of the SQL standard

12.
Google Summer of Code
–
The program is open to university students aged 18 or over. The idea for the Summer of Code came directly from Googles founders, Sergey Brin, from 2007 until 2009 Leslie Hawthorn, who has been involved in the project since 2006, was the program manager. From 2010 until 2015, Carol Smith was the program manager, in 2016, Stephanie Taylor took over management of the program. The program invites students who meet their eligibility criteria to post at most 5 applications that detail the project they wish to work on. These applications are evaluated by the corresponding mentoring organization. Every participating organization must provide mentors for each of the ideas received. The mentors then rank the applications and decide among themselves which proposals to accept, in the event of a single student being marked in more than one organization, Google mediates between all the involved organizations and decides who gets that student. The other mentoring organization then unmarks the student and marks a new proposal for acceptance, or gives their slot back to the pool, Google has published the top 15 schools of current year for the period 2005–2016. The list is as follows, In 2005, more than 8,740 project proposals were submitted for the 200 available student positions, due to the overwhelming response, Google expanded the program to 419 positions. The mentoring organizations were responsible for reviewing and selecting proposals, many projects were continued past summer, even though the SOC period was over, and some changed direction as they developed. For the first Summer of Code, Google was criticized for not giving sufficient time to open source organizations so they could plan projects for the Summer of Code. Despite these criticisms there were 41 organizations involved, including FreeBSD, Apache, KDE, Ubuntu, Blender, Mozdev, according to a blog post by Chris DiBona, Googles open source program manager, something like 30 percent of the students stuck with their groups past SoC. Mozilla developer Gervase Markham also commented that none of the 10 Google-sponsored Mozilla projects survived after the event. In 2006, around 6,000 applications were submitted, less than the year because all applicants were required to have Google Accounts. Google and most mentors are also of the opinion that the proposals were of higher quality than 2005s applications. Also, the number of participating organizations more than doubled to 102, in addition to the organizations that participated in 2005, organizations such as Debian, GNU, Gentoo, Adium, PHP, and ReactOS participated in 2006. Google had decided to sponsor around 600 projects, the student application deadline was extended until 2006-05-09, at 11,00 PDT. Although the results were to be declared by 5,00 PM PDT, Google allows one student to undertake only one project as part of the program

13.
Ruby on Rails
–
Ruby on Rails, or simply Rails, is a server-side web application framework written in Ruby under the MIT License. Rails is a framework, providing default structures for a database, a web service. It encourages and facilitates the use of web standards such as JSON or XML for data transfer, David Heinemeier Hansson extracted Ruby on Rails from his work on the project management tool Basecamp at the web application company also called Basecamp. Hansson first released Rails as open source in July 2004, in August 2006, the framework reached a milestone when Apple announced that it would ship Ruby on Rails with Mac OS X v10.5 Leopard, which was released in October 2007. Rails version 2.3 was released on March 15,2009 with major new developments in templates, engines, Rack, templates enable the developer to generate a skeleton application with custom gems and configurations. Engines give developers the ability to reuse application pieces complete with routes, view paths, the Rack web server interface and Metal allow one to write optimized pieces of code that route around Action Controller. Merb was merged with Rails as part of the Rails 3.0 release, Rails 3.2 was released on January 20,2012 with a faster development mode and routing engine, Automatic Query Explain and Tagged Logging. Rails 3.2. x is the last version that supports Ruby 1.8.7, Rails 4.1 was released on April 8,2014, introducing Spring, Variants, Enums, Mailer previews, and secrets. yml. Rails 4.2 was released on December 19,2014, introducing Active Job, asynchronous emails, Adequate Record, Web Console, Rails 5.0 was released on June 30,2016, introducing Action Cable, API mode, and Turbolinks 5. Like many web frameworks, Ruby on Rails uses the pattern to organize application programming. In a default configuration, a model in the Ruby on Rails framework maps to a table in a database and to a Ruby file. For example, a model class User will usually be defined in the file user. rb in the app/models directory, a controller is a server-side component of Rails that responds to external requests from the web server to the application, by determining which view file to render. The controller may also have to one or more models directly for information. A controller may provide one or more actions, in Ruby on Rails, an action is typically a basic unit that describes how to respond to a specific external web-browser request. Also, note that the controller/action will be accessible for external web requests only if a route is mapped to it. Rails encourages developers to use RESTful routes, which include such as create, new, edit, update, destroy, show. These mappings of incoming requests/routes to controller actions can be set up in the routes. rb configuration file. A view in the configuration of Rails is an erb file

14.
Ruby (programming language)
–
Ruby is a dynamic, reflective, object-oriented, general-purpose programming language. It was designed and developed in the mid-1990s by Yukihiro Matz Matsumoto in Japan, according to its creator, Ruby was influenced by Perl, Smalltalk, Eiffel, Ada, and Lisp. It supports multiple programming paradigms, including functional, object-oriented, and it also has a dynamic type system and automatic memory management. Ruby was conceived on February 24,1993, I knew Perl, but I didnt like it really, because it had the smell of a toy language. The object-oriented language seemed very promising, but I didnt like it, because I didnt think it was a true object-oriented language — OO features appeared to be add-on to the language. As a language maniac and OO fan for 15 years, I really wanted a genuine object-oriented, I looked for but couldnt find one. The name Ruby originated during a chat session between Matsumoto and Keiju Ishitsuka on February 24,1993, before any code had been written for the language. Initially two names were proposed, Coral and Ruby, Matsumoto chose the latter in a later e-mail to Ishitsuka. Matsumoto later noted a factor in choosing the name Ruby – it was the birthstone of one of his colleagues, the first public release of Ruby 0.95 was announced on Japanese domestic newsgroups on December 21,1995. Subsequently, three versions of Ruby were released in two days. The release coincided with the launch of the Japanese-language ruby-list mailing list, in the same year, Matsumoto was hired by netlab. jp to work on Ruby as a full-time developer. In 1998, the Ruby Application Archive was launched by Matsumoto, in 1999, the first English language mailing list ruby-talk began, which signaled a growing interest in the language outside Japan. In this same year, Matsumoto and Keiju Ishitsuka wrote the first book on Ruby, The Object-oriented Scripting Language Ruby and it would be followed in the early 2000s by around 20 books on Ruby published in Japanese. By 2000, Ruby was more popular than Python in Japan, in September 2000, the first English language book Programming Ruby was printed, which was later freely released to the public, further widening the adoption of Ruby amongst English speakers. In early 2002, the English-language ruby-talk mailing list was receiving more messages than the Japanese-language ruby-list, Ruby 1.8 was initially released in August 2003, was stable for a long time, and was retired June 2013. Although deprecated, there is still based on it. Ruby 1.8 is only compatible with Ruby 1.9. Ruby 1.8 has been the subject of industry standards

15.
Internet Relay Chat
–
Internet Relay Chat is an application layer protocol that facilitates communication in the form of text. The chat process works on a client/server networking model, IRC clients are computer programs that a user can install on their system. These clients communicate with chat servers to transfer messages to other clients, client software is available for every major operating system that supports Internet access. IRC usage has been declining steadily since 2003, losing 60% of its users, Jarkko intended to extend the BBS software he administered, to allow news in the Usenet style, real time discussions and similar BBS features. The first part he implemented was the part, which he did with borrowed parts written by his friends Jyrki Kuoppala. The first IRC network was running on a server named tolsun. oulu. fi. Oikarinen found inspiration in a system known as Bitnet Relay. This was the first irc network, Jarkko got some friends at the Helsinki University and Tampere University to start running IRC servers when his number of users increased and other universities soon followed. At this time Jarkko realized that the rest of the BBS features probably wouldnt fit in his program, Jarkko got in touch with people at the University of Denver and Oregon State University. They had their own IRC network running and wanted to connect to the Finnish network and they had gotten the program from one of Jarkkos friends, Vijay Subramaniam—the first non-Finnish person to use IRC. IRC then grew larger and got used on the entire Finnish national network—Funet—and then connected to Nordunet, in November 1988, IRC had spread across the Internet and in the middle of 1989, there were some 40 servers worldwide. In August 1990 the first major disagreement took place in the IRC world, the A-net included a server named eris. berkeley. edu. It was all open, required no passwords and had no limit on the number of connects, as Greg wumpus Lindahl explains, it had a wildcard server line, so people were hooking up servers and nick-colliding everyone. The Eris Free Network, EFnet, made the machine the first to be Q-lined from IRC. In wumpus words again, Eris refused to remove that line and it wasnt much of a fight, I got all the hubs to join, and almost everyone else got carried along. A-net was formed with the servers, EFnet was formed with the non-eris servers. History showed most servers and users went with EFnet, once ANet disbanded, the name EFnet became meaningless, and once again it was the one and only IRC network. It is around that time that IRC was used to report on the 1991 Soviet coup détat attempt throughout a media blackout and it was previously used in a similar fashion during the Gulf War

16.
Freenode
–
Freenode, formerly known as Open Projects Network, is an IRC network used to discuss peer-directed projects. Their servers are all accessible from the host names chat. freenode. net and irc. freenode. net, staffers or staff have the same access across all servers. A list of staff can be viewed using the /stats p command. Some operations that would only apply to one server are propagated across the whole network. Servers are donated to the network, rather than linked, the network focuses on supporting peer-directed and open source projects. Channels not related to these things are considered off-topic and encouraged to find a home elsewhere, to support this distinction, channels are divided into namespaces. Primary on-topic channels begin with a single #, and groups wanting to use such a channel must officially register with freenode, about channels begin with two ##, and are available on a first-come, first-served basis without needing a group registration. Freenode currently runs Atheme IRC Services and ircd-seven, a set of patches on the Charybdis ircd. In 1999 freenode ran an ircd called dancer then switched to hyperion in 2005, by 2010 hyperion was replaced with ircd-seven which occurred on 30 January 2010. Freenode began as a 4-person Linux support channel called #LinPeople on EFnet, by 1995 after moving to Undernet and then DALnet it moved from being just a channel to its own network, irc. linpeople. org. In early 1998 it changed to Open Projects Net with about 200 users, the OPN soon grew to become the largest network for the free software community, and 20th largest in the world. In 2002 the name changed to freenode and the Peer-Directed Projects Center was founded, PDPC was a registered IRS501 charity from 2002 until approximately 2010, during which it received support from such organizations as the Linux Fund in 2007. On 24 June 2006, a user with the nickname ratbert gained the network privileges of freenode administrator Rob Levin and it is likely that approximately 25 user passwords were stolen as a result. This user proceeded to K-line many freenode staff members, and most freenode servers subsequently went down for several hours, around 30 January 2010, a new attack was discovered on freenode that had never been seen before in the wild. This exploit used an ability of Firefox to submit web forms to an other than 80. Whilst Firefox developers had blocked most ports some time ago, port 6667, on 2 February 2014 Freenode suffered a DDoS attack which caused a partial outage. On 22 February 2014 Freenode suffered another DDoS attack which caused partial outage followed by several botnets which attempted to attack #freenode but were redirected to #freenode-unreg. After the attacks several servers remained nullrouted by their providers and for a time period only a single server in rotation was accepting connections

17.
Symfony
–
Symfony is a PHP web application framework and a set of reusable PHP components/libraries. Symfony was published as free software on October 18,2005, Symfony aims to speed up the creation and maintenance of web applications and to replace repetitive coding tasks. Symfony has a low performance overhead used with a bytecode cache, to match enterprise development guidelines, Symfony is bundled with additional tools to help developers test, debug and document projects. Symfony was heavily inspired by web application frameworks such as Ruby on Rails, Django. The first name was Sensio Framework, and all classes were prefixed with sf, later on when it was decided to launch it as open source framework, the brainstorming resulted in the name symfony, the name which depicts the theme and class name prefixes. Symfony is used by the open-source Q&A service Askeet and many more applications, at one time it was used for 20 million users of Yahoo. As of February 2009, Dailymotion. com has ported part of its code to use Symfony, drupal 8, phpBB and a number of other large applications have incorporated components of Symfony. Symfony2 is also used by Meetic, one of the largest online dating platforms in the world, Symfony components are also used in other web application frameworks including Laravel, which is another full-stack framework, and Silex, which is a microframework. As of February 12,2013 the massive wiki-database video game website GiantBomb. com converted from Django to Symfony following an acquisition. This release process has been adopted as of Symfony 2.2, the standard version of Symfony is maintained for eight months, whereas long-term support versions are supported for three years. A new LTS release is published biennially, comparison of web frameworks Lime Zend Framework Potencier, Fabien and Zaninotto, François. Doctrine edition, ISBN 978-2-918390-06-0, Propel edition, 978-2918390077, Fabien Potencier, Hugo Hamon, Symfony, Mieux développer en PHP avec symfony 1.2 et Doctrine, Eyrolles 2009, ISBN 978-2-212-12494-1, French Tim Bowler, Wojciech Bancer. Symfony 1.3 Web Application Development, Packt

18.
CodeIgniter
–
CodeIgniter is an open-source software rapid development web framework, for use in building dynamic web sites with PHP. CodeIgniter is loosely based on the popular model–view–controller development pattern, while controller classes are a necessary part of development under CodeIgniter, models and views are optional. Codeigniter can be modified to use Hierarchical Model View Controller which allows developers to maintain modular grouping of Controller, Models. CodeIgniter is most often noted for its speed compared to other PHP frameworks. CodeIgniters source code is maintained at GitHub, and as of the preview version 3. 0rc, is certified open source software licensed with the MIT License, versions of CodeIgniter prior to 3.0.0 are licensed under a proprietary Apache/BSD-style open source license. The first public version of CodeIgniter was released by EllisLab on February 28,2006, on July 9,2013, EllisLab announced that it was seeking a new owner for CodeIgniter, citing a lack of resources to give the framework the attention they felt it deserved. On October 6,2014, EllisLab announced that CodeIgniter would continue development under the stewardship of the British Columbia Institute of Technology, comparison of web frameworks Official website CodeIgniter on GitHub

Plaque in Building 6 honoring George Eastman, founder of Eastman Kodak, who was revealed as the anonymous "Mr. Smith" who helped maintain MIT's independence

The MIT Media Lab houses researchers developing novel uses of computer technology and shown here is the 1982 building, designed by I.M. Pei, with an extension (right of photo) designed by Fumihiko Maki opened in March 2010