-
Notifications
You must be signed in to change notification settings - Fork 15
Blue Sky Thinking
A holding area for ideas that have been explored and written up, but are not committed to being built.
Everything here has had real thought put into it β enough to understand the shape, the upside, and the catch. What lands a page in this section rather than on a roadmap is that the honest answer to "should we build this?" is currently "not yet, maybe never" β usually for one of:
- Risk management β the feature opens a security or dataβintegrity hole serious enough that it only ships if mitigated to a very high standard (and might reasonably never clear that bar).
- Complexity vs reward β the payoff is real but modest, and the cost/maintenance/edgeβcases outweigh it for now.
- Uncertain demand β a neat idea looking for enough of a need to justify it.
Being here is not a rejection. These pages exist so the thinking isn't lost: if an idea is revived later, the analysis (and the reasons for caution) are already on record rather than reβderived from scratch. Equally, an idea staying parked indefinitely is a perfectly acceptable outcome.
-
CRM and a real service catalogue β the customer side of the data model is a stub: FreeITSM records a supplier contact's switchboard number and a customer contact's theme preference, and
tenantshas six columns againstsuppliers' nineteen. There are also already three unrelated ideas of "a service" (CMDB objects, the status page's list, portal forms), so a catalogue's first job is reconciling those rather than becoming a fourth. The two genuinely valuable pieces β cost-to-serve from time already logged, and renewal warning from contracts pointed the other way β need no CRM at all. Parked because the unanswered question (is an account a tenant, or something below it?) changes the schema rather than the UI, and a half-built CRM is not a partly-useful CRM β it is a second place to look that is always slightly out of date. - Full-text search across tickets and attachments β searching inside ticket bodies, notes and attached documents rather than only their subjects and references. Raised in #53. The governing insight: extraction is the hard half and indexing is not β MySQL already does fullβtext natively, while turning a PDF into text is the genuinely difficult part, so the useful integration is a document parser, not a search engine. The page covers what phase 1 would be, the security rule that the query must carry the permission controls rather than the results being filtered afterwards (postβfiltering starves results and fails worst for portal users, who can see least), the settings path for very large installs, and β the part most worth keeping β the ideas ruled out and why: vectors as the foundation, an external search engine as the starting point, and any hard PDF dependency. Parked because the shape is settled but the scope isn't: whether history gets backfilled, and whether portal users get content search at all, both change what gets built.
-
Remote Image Archiving β download remote (
https://) email images into FreeITSM at import, for archival integrity, antiβtracking privacy and offline rendering. Genuinely useful, but the naive form is a ServerβSide Request Forgery risk (the server fetching attackerβsupplied URLs from inside the firewall). Ships only with a fully hardened safeβfetch helper β may never. -
Content Security Policy hardening β making FreeITSM run under a strict CSP (no inline script). A legitimate defenceβinβdepth goal, but the app (like most serverβrendered PHP) relies on ~1,300 inline handlers and 159 inline script blocks, so full strictβCSP is a large, phased, perβmodule refactor β not a bug fix. A working
'unsafe-inline'policy is documented for today. Raised in #43. -
Raising the PHP floor to 8.1 β dropping PHP 7.4/8.0 support to unlock enums, which are precisely the right shape for the RBAC capability system (~70 capabilities and a couple of hundred guard calls once the rollβout lands). Parked because the argument turned out to have a hole in it: class constants close the dangerous failure mode without leaving 7.4, so what's left is elegance, not safety β and that doesn't justify breaking every 7.4 user's upgrade path. We build on constants, shaped so the enum swap is later a findβandβreplace. Revisit triggers are on the page. Two companion pages:
- PHP 8: the language features we can't use β a 101 on what 8.0/8.1 actually added, with before/after drawn from real FreeITSM code, and an honest list of the ones that wouldn't help us.
-
PHP enums and the RBAC capability system β the one feature the whole argument turns on, and the reason a capability is a
Cap::constant and never a string. Worth reading even if the floor never moves.
New parked ideas get their own page and a line here. Keep each page honest about the catch, not just the upside.
FreeITSM β an open-source IT Service Management platform Β· github.com/edmozley/freeitsm Β· MIT licence
- Installation
- β° Scheduled tasks (cron jobs)
- Architecture
- AI Providers
- Internationalisation (i18n)
- Timezones & Time Handling
- Theming & Dark Mode
- β¨οΈ Command palette (βK)
- π Searching inside tickets
- π Attached documents
- MobileβFriendly
-
Security
- Layer 1 β which modules you can enter
- β³ π§© Module Access Control
- β³ π οΈ Module Access β Developer Guide
- Layer 2 β what you can administer
- β³ π Roles & Permissions
- β³ π οΈ Roles β Developer Guide
- β³ π€ Why capabilities are constants
- Layer 3 β the System module
- β³ π Admin Access Control
- Hardening
- β³ π Security review response 2026-08
- β³ π‘οΈ Security hardening 2026-08
- β³ π οΈ Security hardening 2026-08 β Developer Guide
- β³ π‘οΈ Round three β plain English
- β³ π οΈ Round three β Developer Guide
- Single Sign-On (SSO)
- ποΈ LDAP & Active Directory
- Browser Extension
- API Reference
-
π REST API β how it works
- β³ π« REST API: Tickets
- β³ π» REST API: Assets
- β³ π΄ REST API: Problems
- β³ π REST API: Changes
- β³ π REST API: Knowledge
- β³ β REST API: Tasks
- β³ ποΈ REST API: CMDB
- β³ π REST API: Contracts
- β³ ποΈ REST API: Calendar
- β³ πΏ REST API: Software
- β³ π¦ REST API: Service Status
- β³ βοΈ REST API: Morning Checks
- β³ π REST API: Forms
- β³ βοΈ REST API: Workflow
- β³ πΊοΈ REST API: Network Mapper
- β³ π§ Using the API docs page
- β³ π OpenAPI specification
- β³ β OpenAPI: kept correct
- β³ π οΈ Maintaining the catalogue
- Watchtower
-
Tickets
- β³ Mailbox Authentication
- β³ π€ Email send log
- β³ Basic IMAP mailboxes
- β³ Email rendering & images
- β³ SLA Management
- β³ WhatsApp channel
- β³ π¬ Web chat channel
- β³ π£ Slack channel
- β³ π Linking tickets
- β³ ποΈ Canned responses
- β³ βοΈ Limiting replies to particular senders
- β³ βοΈ Email signatures
- β³ π The public web address
- β³ π Raising a ticket for someone else
- β³ π Merging tickets
- β³ β Splitting tickets
- β³ β Selecting several tickets
- β³ π οΈ Snoozing tickets β Developer Guide
- β³ π₯ Collision detection
- β³ β±οΈ Time tracking
- Problem Management
- Tasks
- Assets
- Knowledge
- Change Management
- Calendar
- Morning Checks
- Reporting
- Software
- Forms
- Contracts
- Service Status
- π Notifications
- π¨ War Room
- Self-Service Portal
- LMS
- Process Mapper
- CMDB
- Network Mapper
- Workflows
- Issue trackers (Jira, Azure DevOps)
- System
-
Overview
- β³ π Progress tracker
- β³ Concepts & vocabulary
- β³ Email routing & mailboxes
- β³ Settings: global vs per-company
- β³ Users & self-service
- β³ Staff cross-company access
- β³ Worked examples
- β³ Pitfalls & gotchas
- β³ Scope: what it's for
- β³ π οΈ Developer Guide (make a module multi-company)
- β³ ποΈ Case study: CMDB (a linked graph)
- β³ π§ͺ Test harness (prove it's isolated)