# Research

Glass Project exists because MacProject Pro’s file format and calculations were worked out and written down. Everything found is public. Each finding says where it came from: read from the program’s code or resources, seen in the files it saved, or checked in MacProject Pro itself, running under emulation. Anything inferred rather than confirmed is marked as a guess.

## The documents

- [**The file format**](https://msitarzewski.github.io/GlassProject/file-format.html.md): how a MacProject Pro 1.5 file is laid out, every kind of record and what its fields hold, and what a file needs before MacProject Pro will open it.
- [**Scheduling**](https://msitarzewski.github.io/GlassProject/scheduling.html.md): work calendars to the half hour, constraints, lags, actual dates, summaries and the critical path, rule by rule.
- [**Leveling**](https://msitarzewski.github.io/GlassProject/leveling.html.md): how the resource leveler finds conflicts, which solutions it offers, and how it ranks them.
- [**How it behaves**](https://msitarzewski.github.io/GlassProject/behavior.html.md): the menus and command keys, the Tools palette, what the mouse does on each chart, and the dialogs. Glass Project follows them.

## How the findings were checked

MacProject Pro 1.5 shipped with 31 project and Perspective files. They are the test: Glass Project’s tests take each one apart and compare what they compute with what MacProject Pro saved.

| What                                                     | Result                                                           |
|----------------------------------------------------------|------------------------------------------------------------------|
| Records decoded, each to its last byte                   | 5,016 of 5,016, in 31 files                                      |
| Files written back unchanged, byte for byte              | 31 of 31                                                         |
| Task dates recalculated as MacProject Pro stored them    | 618 of 619 tasks                                                 |
| Resource costs recalculated as stored                    | 902 of 902 assignments                                           |
| Dependency lines placed as stored                        | 737 of 785 (most of the rest are a point off)                    |
| Files Glass Project writes, opened in MacProject Pro 1.5 | edited samples, new projects and links between projects all open |

The one task out of 619 that differs belongs to a subproject whose calendar lives in another file. The tests are in [the source](https://github.com/msitarzewski/GlassProject/tree/main/Tests). The sample files belong to Claris, so they aren’t published with it.

## What’s still open

- Files from MacProject II and earlier use older formats that aren’t decoded.
- A few stored fields are still unnamed; the format document lists them.
- The Bar Formats options are a best guess.

If you know something that isn’t here, or have MacProject files that don’t open, see [Contributing](https://github.com/msitarzewski/GlassProject/blob/main/CONTRIBUTING.md).

---
Source: https://msitarzewski.github.io/GlassProject/research.html · How MacProject Pro 1.5 stores and calculates a project, as worked out for Glass Project: the file format, the scheduler, the leveler and the menus, and how each finding was checked.
