Nevow (pronounced like the French ''nouveau'') is a
Python
Python may refer to:
Snakes
* Pythonidae, a family of nonvenomous snakes found in Africa, Asia, and Australia
** ''Python'' (genus), a genus of Pythonidae found in Africa and Asia
* Python (mythology), a mythical serpent
Computing
* Python (pro ...
web application framework
A web framework (WF) or web application framework (WAF) is a software framework that is designed to support the development of web applications including web services, web resources, and web APIs. Web frameworks provide a standard way to build an ...
originally developed by the company Divmod. Template substitution is achieved via a small
Tag Attribute Language, which is usually embedded in on-disk
XML
Extensible Markup Language (XML) is a markup language and file format for storing, transmitting, and reconstructing arbitrary data. It defines a set of rules for encoding documents in a format that is both human-readable and machine-readable ...
templates, though there is also a pure-Python
domain-specific language called Stan, for expressing this markup programmatically. Nevow integrates well with
Twisted, a framework for
event-driven programming
In computer programming, event-driven programming is a programming paradigm in which the flow of the program is determined by events such as user actions (mouse clicks, key presses), sensor outputs, or message passing from other programs or thr ...
.
Nevow had 960 unit tests as of June 2008, and was deployed on several high-profile
web site
A website (also written as a web site) is a collection of web pages and related content that is identified by a common domain name and published on at least one web server. Examples of notable websites are Google, Facebook, Amazon, and Wikip ...
s, most notably the official Python site.
As of mid-2010, Divmod went out of business, causing development work on Nevow to all but cease, and in 2011 its homepage was no longer accessible. There's a project on
Launchpad
A launch pad is an above-ground platform from which rocket- missiles or space launch vehicles take off vertically.
Launch pad may also refer to:
Computing
* Launchpad (macOS), an application launcher introduced in Mac OS X Lion
* Launch Pad (s ...
, hosting the source code of Divmod including the source code of the Nevow project.
Athena
Athena is a Nevow component which facilitates bi-directional,
asynchronous communication
In telecommunications, asynchronous communication is transmission of data, generally without the use of an external clock signal, where data can be transmitted intermittently rather than in a steady stream. Any timing required to recover data f ...
between the Python and
JavaScript
JavaScript (), often abbreviated as JS, is a programming language that is one of the core technologies of the World Wide Web, alongside HTML and CSS. As of 2022, 98% of websites use JavaScript on the client side for webpage behavior, of ...
portions of a web application in the form of
remote procedure call
In distributed computing, a remote procedure call (RPC) is when a computer program causes a procedure ( subroutine) to execute in a different address space (commonly on another computer on a shared network), which is coded as if it were a normal ( ...
s. This technique is typically called
Ajax
Ajax may refer to:
Greek mythology and tragedy
* Ajax the Great, a Greek mythological hero, son of King Telamon and Periboea
* Ajax the Lesser, a Greek mythological hero, son of Oileus, the king of Locris
* ''Ajax'' (play), by the ancient Gree ...
or
Comet
A comet is an icy, small Solar System body that, when passing close to the Sun, warms and begins to release gases, a process that is called outgassing. This produces a visible atmosphere or coma, and sometimes also a tail. These phenomena ...
, though Nevow's implementation predates both of these labels.
History
Nevow Athena from Scratch, or The Evolution of a Chat Application — Divmod Nevow vtrunk documentation Athena also includes an inheritance
Inheritance is the practice of receiving private property, titles, debts, entitlements, privileges, rights, and obligations upon the death of an individual. The rules of inheritance differ among societies and have changed over time. Officia ...
-based JavaScript object system
Object-oriented programming (OOP) is a programming paradigm based on the concept of " objects", which can contain data and code. The data is in the form of fields (often known as attributes or ''properties''), and the code is in the form of p ...
, which forms the basis of a client-side '' widget'' abstraction, module system
Modular programming is a software design technique that emphasizes separating the functionality of a program into independent, interchangeable modules, such that each contains everything necessary to execute only one aspect of the desired function ...
and in- browser unit test
In computer programming, unit testing is a software testing method by which individual units of source code—sets of one or more computer program modules together with associated control data, usage procedures, and operating procedures&md ...
ing kit.
References
{{Web frameworks
Scripting languages
Template engines
Free software programmed in Python
Python (programming language) web frameworks
Software using the MIT license