Krijg ik mijn bestand terug?
Uw .fet-bestand is een rooster voor een termijn, dus vraag uzelf vóór gebruik van een tool één ding af en doe de test van twee minuten die het beantwoordt.

Een .fet-bestand stelt op het eerste gezicht niet veel voor. Een paar honderd kilobytes aan XML, opgeslagen in een map naast die van vorig jaar.
Maar u weet wat erin is gaan zitten. De twee weken in augustus die u besteedde aan het uitzoeken dat het science-blok niet twee practica tegelijk kan huisvesten. Het compromis met het hoofd van de talen waar drie gesprekken voor nodig waren. De elf constraints die u één voor één hebt toegevoegd, telkens nadat er iets misging dat u nooit meer wilt zien.
Niets daarvan staat ergens anders opgeschreven. Het bestaat als constraints in dat bestand, en als het verloren gaat, verliest u niet zomaar een document — u verliest de logica erachter, en daar komt u in september achter wanneer het timetable nergens meer op slaat.
Dus wanneer een webtool aanbiedt om het te openen, is de vraag niet of de tool nuttig is. De vraag is: krijg ik mijn bestand wel terug?
Waarom het antwoord meestal "niet helemaal" is
De meeste tools die een .fet lezen, doen dat op de voor de hand liggende manier. Iemand werkt het formaat door, schrijft code voor de onderdelen die ze nodig hebben — docenten, vakken, lokalen, activiteiten, de algemene constraints — en brengt het uit.
Dat werkt, en het faalt geruisloos. FET heeft een uitgebreide woordenschat aan constraints en die groeit met elke release. Alles wat de auteur van de tool niet heeft geïmplementeerd, wordt simpelweg niet gelezen, en wanneer het bestand weer wordt opgeslagen, wordt wat nooit is gelezen ook niet weggeschreven. Het bestand opent nog steeds. Het is nog steeds geldig. Het mist alleen de drie constraints waar u het meest om gaf, en nergens werd dat vermeld.
Dat is het falen waar je tegen moet ontwerpen, omdat het onzichtbaar is op precies het moment dat u het zou willen opmerken.
Wat wij in plaats daarvan doen
FET Explorer probeert niet elke constraint te begrijpen. Het probeert dat niet nodig te hebben.
Wanneer een bestand wordt gelezen, wordt elke constraint erin opgeslagen onder zijn eigen naam, met de inhoud exact behouden — of deze applicatie nu enig idee heeft wat die constraint betekent of niet. Wanneer u downloadt, wordt elk onderdeel weer weggeschreven onder dezelfde naam, met dezelfde inhoud, in dezelfde volgorde.
Er is geen lijst met ondersteunde constraint-types, omdat er niets te ondersteunen valt. Een constraint-type dat is geïntroduceerd in een FET-release waar wij nog nooit van hebben gehoord, reist onaangeroerd door het systeem, om dezelfde reden dat een woord dat u niet kent, overleeft als u het met de hand overschrijft.
In de timetables die vandaag in ons eigen corpus staan, zijn dat 2.987 constraints verdeeld over 20 verschillende types, die heen en weer reizen zonder dat een van hen speciale gevallen zijn in de exportcode.
Gewichten komen terug als gewichten. Een constraint die op 80% staat, is nog steeds 80% — niet afgerond, niet opnieuw afgeleid, niet gepromoveerd naar "aan". Een inactieve constraint komt inactief terug. Uw opmerkingen komen terug.
Het bestand wordt gecontroleerd voordat u het krijgt
Er is één ding waarvoor we zullen onderbreken.
Een .fet die FET weigert te openen is erger dan geen bestand: u komt er pas aan het einde achter, zonder enig idee welk van de vele duizenden records de fout bevat. Dus wordt het bestand opgebouwd en geïnspecteerd voordat het wordt overhandigd.

Als er iets essentieels ontbreekt — een activiteit zonder vak, een les die verwijst naar een docent die niet in de docentenlijst staat — krijgt u dat te horen, met de werkelijke records benoemd. Zaken die veilig op een standaardwaarde kunnen worden gezet, worden dat, en worden nooit uw probleem.
Als het bestand geldig is maar er dun uitziet, krijgt u een waarschuwing en een Toch downloaden-knop. Dat is advies, geen blokkade.
En als de controle zelf niet kan worden uitgevoerd, gaat de download gewoon door. Een controle die geen oordeel kon vellen, is geen reden om tussen u en uw eigen bestand te staan.
Geloof ons niet op ons woord — neem twee minuten
Dit is het deel dat de moeite waard is om echt te doen, omdat het bijna niets kost en de vraag permanent beantwoordt.
- Upload uw
.fet-bestand. - Download het direct weer, zonder iets te veranderen.
- Vergelijk de twee bestanden.

Ze zouden alleen moeten verschillen in opmaak — inspringing, attribuut-spatiëring, de volgorde van een paar optionele velden — en verder in niets. Dezelfde activiteiten, dezelfde constraints, dezelfde gewichten, dezelfde opmerkingen.
Als de twee bestanden inhoudelijk verschillen, is dat een bug en willen we dat graag horen. Niet iets om omheen te werken, en niet iets waar u in september achter zou moeten komen.
Eén eerlijke uitzondering
Als uw timetable is opgebouwd vanuit spreadsheets in plaats van vanuit een .fet, is er een detail dat de moeite waard is om te weten. CSV-rijen bevatten geen FET-activiteits-ID's, en plaatsings-constraints hebben stabiele ID's nodig om naar individuele lessen te verwijzen.
In plaats van te weigeren, wijzen wij die ID's toe tijdens het opbouwen van het bestand — en slaan ze op, zodat ze niet veranderen. Een tweede download komt overeen met de eerste. U kunt een timetable opbouwen vanuit spreadsheets en toch een kloppend .fet-bestand aan de andere kant krijgen.
Wat dit niet is
FET Explorer genereert geen timetables. Het optimaliseert, herrekent of verbetert niet wat FET heeft geproduceerd. FET doet het zware werk; dit leest, presenteert, deelt en bewerkt het resultaat.
Dat is precies waarom de round-trip belangrijk is. Een tool die u alleen een timetable laat zien, kan het zich veroorloven om de helft van het bestand te begrijpen. Een tool waarin u bewerkingen uitvoert, moet het hele bestand weer teruggeven.