Please consider funding my work on Glom so that I can implement all these features. Murray Cumming
- Table Add/Remove: Plus set a startup default, and hide secondary tables from users.
- Field Definitions: Just the basics.
- Calculated Fields: For instance, totals, concatenation. Uses python. Recalculates existing values when changing the calculation.
- Relationship Definitions
- List and Details views
- Automatic Layout: No awkward pixel-perfect positioning and no mess when translating.
- Layout Design: Not pretty, but it works.
- Related Fields: Show fields from related records, such as a contact name. Optionally create/edit related records via this.
- Related Records: Show a list of related records on the layout, such as invoice lines. Create related records automatically.
- Lookups: Store values from related records, such as a product price.
- Drop-down choices "Value Lists" in FileMaker. For instance, a list of products when entering a product code.
- Internationalized input and display: For instance, commas instead of dots for German numbers.
- Access Control: Define groups (containing users) and their create/delete/view/edit rights for each table.
- Finding: Let the user enter text in the regular layout and just click Find. No query language, no choosing fields, no explicit boolean nonsense. Do substring case-insensitive searching instead of for exact matches.
- Printing: Simple default print layout, to HTML in the browser.
- Simple "By" Reports
- Minimal formatting options: Optional thousands separator, optional currency, decimal places. With check box to specify default formatting instead, with default formatting options as part of the field definition dialog.
- Image fields: Show and save pictures in the database.
- Related field Details button: A button next to IDs, when that is part of a to-one relationship, which takes the user to the full details for that related record.
- Find ID button: A button next to lookup keys (fields used by looked-up fields) that opens a find dialog, to find an ID. Necessary when a drop-down list would be too big.
- Remember Position: When returning to a table, in the same session, show the same layout (list or details) and the same record as last time.
- Quick Find: Add an Entry to the layout in Find mode, use the input to search all fields, google-style. Time: 30 hours.
- Find-Set information: Show whether we are looking at all records or just the result of a find. Allow us to change to all records Time: 20 hours.
- Internationalization: Allow developers to enter titles (tables, fields, reports, relationships) for non-english languages. Time: 60 hours.
- Scripting: Buttons may be added to the layout. When clicked they run custom python code.
- System Properties relationship: Add "system properties" relationship to all lists of relationships, to provide access to, for instance, the organisation address. Time: 30 hours.
- Doubly Related fields: For instance, allow Character::Actor(via Character::contact_id)::Agent(via Contacts::agent_id)::name on a Character details view.
- Tabs: Add a notebook layout part. For instance, this would allow multiple related portals without making the layout huge.
- Sort Found Set: Click on list column headers to sort.
- Choose Date From Calendar: Add a calendar button next to date fields.
- Tests: Make sure it all works together.
- Automatic Server Detection: Patch postgres to use avahi for ZeroConf/Bonjour/Rendezvous service broadcast. Postgres already uses Bonjour on MacOS X.
- Deal with lots of data The custom tree model should progressively gets only the record values that are visible in the scrolled window, but I am not sure if libgda has already requested the entire result set. The new libgda API might be better.
- Custom Print Layout: For instance, a perfect-looking official invoice. Implement with CSS fixed positioning? Time: 80 hours.
- Non-Indexed Calculated Fields: Optionally don't store values - just recalc them when seen/used, and therefore don't allow their use in relationships, though that's awkwardly technical when seen in FileMaker. Time-to-complete: 60 hours.
- Internationalization via .po files: Add Export and Import buttons to Translations Window, so translators can use their usual .po file tools. Time: 10 hours.
- Locking: Don't let a second user edit the same record. (Delay unlock for 5 seconds after entry loses focus). Update the display when the second user changes the same record. Time: 50 hours.
- Drag-and-drop layout: Add a panel of available items and show visual feedback as they are moved around on the layout. But still use the automatic-layout system. Time: 60 hours.
- Relationships Overview: See a picture of all the tables, with all their relationships to each other. Use a canvas and let the user drag the tables around. Time: 70 hours.
- Related Records as Calendar: Display a portal of related records in a calendar, using a specified field as the date.
- Warn when deleting used fields and relationships: If a field or relationship is on a layout or report, or a field is in a relationship, warn before deleting.
- Scripting: Most common actions should be standard features without the awkwardness of scripting, but maybe we need some way via the custom buttons to, for instance, on Contacts details create a related Invoice and take you to the Invoice details. For this, we must just present a python API for some parts of the Glom structure in addition to the current record object.
- Multi-column relationships: Match on 2 key fields instead of just one. Time: 30 hours.
- Performance:: Keep connection alive, do less by-value copying, more caching and hashing. libgda 2.0 (when finished) should help with this.
- GUI for creating the initial user, after asking for the root password.
- Windows Port: Shouldn't be too difficult. All dependencies are portable. Time: 60 hours.
- Web UI: Possible in principle, though it couldn't be so responsive as a desktop application. All the needed information is in the .glom document. Something for a web developer, and there's no need to choose a favourite language/platform - just do it.
- Alien Tables: Allows some tables to get/set data in non-postgres sources, such as evolution-data-server, so people don't need to enter their contact information twice.