Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
pdftalknonnamespacefileout [2022/02/23 17:48]
christian [Porting PDFtalk to non-namespace Smalltalk dialects]
pdftalknonnamespacefileout [2022/05/16 18:43]
christian [Porting PDFtalk to non-namespace Smalltalk dialects]
Line 3: Line 3:
 Make the [[start#the_library|core PDFtalk library]] available to non-namespace Smalltalk dialects like Squeak, Pharo and VAST. This does not include the UI (the [[pdftalksnooper|Snooper]]), which needs to be fully rewritten in another dialect (namespaced or not). Make the [[start#the_library|core PDFtalk library]] available to non-namespace Smalltalk dialects like Squeak, Pharo and VAST. This does not include the UI (the [[pdftalksnooper|Snooper]]), which needs to be fully rewritten in another dialect (namespaced or not).
  
-The transformation approach to porting has been successful for [[pdftalk4gemstone|Gemstone]], which has namespaces. Translating all names in namespaces and their references to prefixed global names has not been done yet.+The transformation approach to porting has been successful for [[pdftalk4gemstone|Gemstone]], which has namespaces. Translating all names in namespaces and their references to prefixed global names has not been done at the time. This is the focus of the current work - see the **[[PortingBlog|blog]]** for the current development.
  
 Some information [[aboutPortingToNonNamespacedSmalltalks|about the project]] gives more details of the organisation and structure of the project. Some information [[aboutPortingToNonNamespacedSmalltalks|about the project]] gives more details of the organisation and structure of the project.
Line 9: Line 9:
 The project will first concentrate on Squeak. The next candidate will probably be VA Smalltalk. Ports to other dialects (transformations for other dialects) can be developed in parallel.  The project will first concentrate on Squeak. The next candidate will probably be VA Smalltalk. Ports to other dialects (transformations for other dialects) can be developed in parallel. 
  
-Therefore, a separate page exists for each dialect.+Therefore, a separate page exists for each dialect
 +  * [[SqueakPort|Squeak]] 
 +  * [[VASTPort|VA Smalltalk]] 
 +  * [[GemstonePort|Gemstone]] 
 +  * [[PharoPort|Pharo]] 
 +  * (others to come)
  
-The first step is to port the ''Values'' package. This is easy, since no namespaces are involved. +===== General Approach ===== 
-===== Workflow =====+ 
 +  - [[setupvisualWorks|setup the VisualWorks 8.3]] source image with PDFtalk and the tools 
 +  - Port the ''Values'' package. This is easy, since no namespaces are involved. 
 +  - Port the PDFtalk packages in order (you can skip PostScript until later) 
 + 
 +==== Workflow ====
  
 The workflow for the dialect specific engineer is straight forward:  The workflow for the dialect specific engineer is straight forward: 
-  - generate the source for the target dialect from VisualWorks with the defined code transformations +  - **generate the source** for the target dialect from VisualWorks with the defined code transformations. Fix problems so that there are no errors or warnings. 
-  - file in the source into the target dialect +  - **file in the source** into the target dialect. Fix problems so that there are no errors or warnings. 
-  - run the tests +  - **file in the tests** into the target dialect. Fix problems so that there are no errors or warnings. 
-  - find a problem +  - **run the tests** 
-  - fix the problem+  - **fix the problems**
     - by changing code transformations      - by changing code transformations 
     - by implementing missing functionality     - by implementing missing functionality
Line 25: Line 35:
       - change the tests to make them dialect specific       - change the tests to make them dialect specific
       - change the original source in VisualWorks       - change the original source in VisualWorks
-  - Repeat until all tests are passing  +  - **Repeat** until all tests are passing 
-then the port should be finished.+
  
-==== Values porting log ====+Then the port should be finished.
  
-In a [[valuesportinglog|detailed log]] I try to describe how I am porting the Values package to Squeak. This should serve as an example for your own porting project.  
  
-==== Namespaces ==== 
  
-  * **PostScript** - PostScript Interpreter without graphics for CMaps and type1 fonts. 83 classes, 42 values, 251 tests. +===== How you can help =====
-  * **PDFtalk** - Core library. 396 classes, 116 values, 288 tests and 3 namespaces. +
-    * **PDFtalk.Fonts** - Type1 fonts. 32 classes, 5 values, 25 tests. +
-      * **PDFtalk.Fonts.OpenType** - OpenType(PS) implementation. 64 classes, 19 values, 6 tests. +
-  * **UI** - not to be ported +
-Not included yet +
-  * **RDF** - RDF implementation for meta data. 37 classes, 15 values, 371 tests. +
-    * **PDFtalk.XMP** - Extensible Metadata Platform. 17 classes, 12 values, 17 tests.+
  
-=== Namespace to prefix mapping ===+This project is an experiment in somewhat new territory. The goal is to port software from one Smalltalk dialect to another with a declarative approach. This has been done only once for PDFtalk from VW to Gemstone. Now the port is attempted for many non-namespaced Smalltalks at once. The idioms and ways on how to do things are yet to be found and invented.
  
-All classes and globals from a namespace will be renamed with a prefix+For this, we need help. 
 +==== Coding ====
  
-  * PDFtalk => PtPDFt, ...? +If you have [[setupvisualWorks|VisualWorks with version 8.3]] or lateryou can help by adding transformations for specific packages or by improving the transformation machinery
-  PostScript => PS, ...? + 
-  * PDFtalk.Fonts => PtFont, ...? +Port the **[Values Tools]** and [Values Tools Testing] packagesThese packages contain the code for generating new value classesIf you want to create your own Value classes you need this
-  PDFtalk.Fonts.OpenType =PtOT, ...? + 
-  RDF => RDF, ...? +Add other source formats (f.ex**tonel**) as backend for the transformations (besides the chunk format)
-  * PDFtalk.XMP => PtXMP, ...?+ 
 +==== Feedback ==== 
 + 
 +**Participate** here on the wiki (ask me <mail@pdftalk.defor an account if you like to contribute)
 + 
 +Test it, use it, give **feedback**, ask questions… We are very interested in feedback on the code, documentation, the porting approach, the wiki contentsWith your input the code can only improve
 + 
 +===== Discussion ===== 
 + 
 +==== Namespaces ==== 
 + 
 +[[namespaces|--Namespaces]]
  
 ==== Naming issues ==== ==== Naming issues ====
Line 76: Line 88:
   * maybe not only namespaces need to be mapped to class prefixes but also bundle/package (paths) need to be mapped to class names and/or prefixes to create those extra helper classes   * maybe not only namespaces need to be mapped to class prefixes but also bundle/package (paths) need to be mapped to class names and/or prefixes to create those extra helper classes
  
- 
-==== Steps ==== 
- 
-  - [[setupvisualWorks|setup the VisualWorks 8.3]] source image 
-  - decide on target dialect version 
-  - decide on output format (Chunk?) 
-    - How to handle meta data (version, author, copyright, structure...) 
-    - How to handle pre- and post-load actions 
-    - Add some tests 
-  - Port **Values**. No namespaces. 
-  - Port the PDFtalk packages in order (you can skip PostScript until later) 
  
  
  • pdftalknonnamespacefileout.txt
  • Last modified: 2022/05/16 18:43
  • by christian