Skip to content

Commit 220791c

Browse files
committed
Point to externally provided MiddleKit
1 parent 17f9a91 commit 220791c

File tree

3 files changed

+6
-3
lines changed

3 files changed

+6
-3
lines changed

docs/changes.rst

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ This is the full list of changes in Webware for Python 3 (first version 3.0.0) c
1818
* Instead of the "AutoReloadingAppServer", you can use the "reload" option of the WaitressServer script which uses hupper to monitor the application files and reload the waitress server if necessary. The "ImportSpy" has been removed.
1919
* The classes of the core "WebKit" component are now available at the root level of Webware for Python 3, and the WebKit component ceased to exist as a separate plug-in.
2020
* Some built-in plug-ins are not supported any more: "CGIWrapper", "ComKit" and "KidKit".
21-
* "MiddleKit" is not a built-in plug-in any more, but will hopefully be continued as an external project.
21+
* "MiddleKit" is not a built-in plug-in any more, but is provided as an external project on GitHub now (PeaceWorksTechnologySolutions/w4py3-middlekit).
2222
* Webware now uses entry points for discovering plug-ins instead of the old plug-in system, and the plug-in API has slightly changed. Existing plug-ins must be adapted to Python 3 and the new plug-in API.
2323
* The documentation has been moved to a separate directory and is built using Sphinx, instead providing a "Docs" context for Webware and every plug-in, and using custom documentation builders in the install script. The existing content has been reformatted for Sphinx, adapted and supplemented.
2424
* The various examples have been slightly improved and updated. Demo servlets showing the use of Dominate abd Yattag for creating HTML in a Pythonic way have been added.

docs/migrate.rst

+3-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,9 @@ Regarding the API, we tried to stay compatible with Webware for Python 2 as much
1010
Check which Webware plug-ins you were using
1111
-------------------------------------------
1212

13-
The first the you should check is if there your application is using a Webware plug-in that is not available in Webware for Python 3 any more. Among the built-in plug-ins, these are COMKit, CGIWrapper, KidKit, and, most prominently, MiddleKit. If your application is based on MiddleKit, you will need to migrate MiddleKit to Python 3 and the slightly changed plug-in system in Webware for Python 3, or wait for someone to publish a MiddleKit for Webware for Python 3 as an external plug-in. The same is true if you are using any other external plug-in. If your are using only PSP or one of the other built-in plug-ins, you will have no problem at this point, since they are still included in Webware for Python 3. See the section on :ref:`plug-ins` for details on how to write plug-ins for Webware for Python 3.
13+
First you should check whether the plug-ins your application is using are still available as built-ins plugin of Webware for Python 3 (`w4py3 <https://github.com/cito/w4py3>`_) or as externally provided plug-ins. PSP is still provided as a built-in plug-in. MiddleKit is now provided as an external plug-in on GitHub (`w4py3-middlekit <https://github.com/PeaceWorksTechnologySolutions/w4py3-middlekit>`_). The "COMKit", "CGIWrapper" and "KidKit" built-in plug-ins have been discontinued. Other external plug-ins that have been developed for Webware for Python 2 must first be ported to Webware for Python 3 before you can use them. See the section on :ref:`plug-ins` for details on how to write plug-ins for Webware for Python 3.
14+
15+
.. _MiddleKit: https://github.com/PeaceWorksTechnologySolutions/w4py3-middlekit
1416

1517
Migrate your application to Python 3
1618
------------------------------------

docs/overview.rst

+2-1
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ The plug-in architecture has also been kept in Webware for Python 3, but now imp
3535

3636
The most incisive change in Webware for Python 3 is the discontinuation of the threaded application server that was part of the built-in "WebKit" plug-in and actually one of the strong-points of Webware for Python. However, a threaded application based architecture may not be the best option any more for Python in the age of multi-core processors due to the global interpreter lock (`GIL`_), and maintaining the application server based architecture would have also meant to maintain the various adapters such as ``mod_webkit`` and the start scripts for the application server for various operating systems. This did not appear to be feasible. At the same time, Python nowadays already provides a standardized way for web frameworks to deploy web applications with the Python Web Server Gateway Interface (`WSGI`_). By making the already existing Application class of Webware for Python usable as a WSGI application object, Webware applications can now be deployed in a standardized way using any WSGI compliant web server, and the necessity for operating as an application server itself has been removed. Webware for Python 3 applications deployed using ``mod_wsgi`` are even performing better and can be scaled in more ways than applications for the original Webware for Python that have been deployed using ``mod_webkit`` which used to be the deployment option with the best performance. During development, the waitress_ WSGI server is used to serve the application, replacing the old built-in HTTP server. As a structural simplification that goes along with the removal of the WebKit application server, the contents of the WebKit plug-in are now available at the top level of Webware for Python 3, and WebKit ceased to exist as a separate plug-in.
3737

38-
The second incisive change in Webware for Python 3 is the removal of the "MiddleKit" as a built-in plug-in. This plug-in served as a middle tier between the data storage and the web interface, something that nowadays is usually done with an object relational mapper (ORM_) such as SQLAlchemy_. MiddleKit was a powerful component that many users liked and used in production, but was also pretty complex, with adapters to various databases, and therefore hard to maintain. It made sense to swap it out and provide it as a separate, external plug-in if anybody is willing to take it over as a project and maintain it. Also removed were the "CGIWrapper", "COMKit" and "KidKit" plug-ins, because they have become obsolete or outdated. The other built-in plug-ins were less complex than MiddleKit and were kept as built-in plug-ins of Webware for Python 3. Particularly, "PSP, "UserKit" and "TaskKit" are still available in Webware for Python 3.
38+
The second incisive change in Webware for Python 3 is the removal of the "MiddleKit" as a built-in plug-in. This plug-in served as a middle tier between the data storage and the web interface, something that nowadays is usually done with an object relational mapper (ORM_) such as SQLAlchemy_. MiddleKit was a powerful component that many users liked and used in production, but was also pretty complex, with adapters to various databases, and therefore hard to maintain. It made sense to swap it out and provide `MiddleKit for Webware for Python 3`_ as a separate, external plug-in on GitHub. Also removed were the "CGIWrapper", "COMKit" and "KidKit" built-in plug-ins, because they have become obsolete or outdated. The other built-in plug-ins were less complex than MiddleKit and were kept as built-in plug-ins of Webware for Python 3. Particularly, "PSP, "UserKit" and "TaskKit" are still available in Webware for Python 3.
3939

4040
To facilitate web development with Webware for Python 3, a ``webware`` console script has been added that can be used to create working directories for new application and start the development server. This script replaces the old ``MakeAppWorkDir`` and ``AppServer`` scripts. When creating a new working directory, a WSGI script will also be created that can be used to attach the application to a web server.
4141

@@ -74,6 +74,7 @@ You can keep up on new releases through the very low traffic `announcement maili
7474
.. _wsgi: https://www.fullstackpython.com/wsgi-servers.html
7575
.. _ORM: https://en.wikipedia.org/wiki/Object-relational_mapping
7676
.. _SQLAlchemy: https://www.sqlalchemy.org/
77+
.. _MiddleKit for Webware for Python 3: https://github.com/PeaceWorksTechnologySolutions/w4py3-middlekit
7778
.. _WebTest: https://docs.pylonsproject.org/projects/webtest/en/latest/
7879
.. _Python 2 to Python 3: https://docs.python.org/3/howto/pyporting.html
7980
.. _discussion mailing list: https://sourceforge.net/projects/webware/lists/webware-discuss

0 commit comments

Comments
 (0)