FET (c) 2002-2008 Liviu Lalescu


Program description:

	FET is free timetabling software.
	This program aims to automatically generate the timetable of a school, high-school
	or possibly university,	by a heuristic algorithm. 
	FET can mean "Free Educational Timetabling".


Requirements:

	FET is created in the following environment: openSUSE 11.1-beta5 GNU/Linux distribution,
	Midnight Commander 4.6.2-pre1, Qt 4.4.3, gcc 4.3.2, Linux 2.6.27, other great free tools.
	FET can be run on any platform supported by the free software Qt (GNU/Linux, Windows, Mac OS X).

	GNU/Linux, Mac OS X and similar OS's:
	Software:
		make (GNU make command)
		gcc 4.3.2 or similar (3.x.x and 4.1.x are fine, gcc 4.2.x does NOT work)
		gcc-c++ (or g++, the name may vary)
		Qt 4.4.3 or compatible (4.3.x is fine, Qt 4.2.x does NOT work).
	
	Microsoft Windows:
	For running, you need only the archive of FET compiled for Windows (which contains
	the MinGW and Qt dlls).
	For compiling, you need Qt and MinGW (do NOT use Qt 4.2.x or gcc 4.2.x).
	
	Important note about virtual memory: on Windows you might get the error message
	"The paging file is too small for this operation to complete" when trying to run fet.exe .
	Maybe on other systems you can get a similar problem.
	It seems that FET won't run without a decent amount of virtual memory.
	This is because FET allocates a large amount of static data (600MB), of which only about 50 MB are normally used.
	So the operating system must have virtual memory reserved (which will not be used normally,
	but that does not matter). So, if you disabled virtual memory, please enable it and/or increse maximum size
	if FET does not run.


Download:

	You can download the latest version from http://www.lalescu.ro/liviu/fet/ (for now).
	Older versions: you will have to contact the author if you are interested.


Getting - compiling - installing GNU tools: make, gcc and gcc-g++ (or g++):

	Most probably, your platform has these installed by default or available on the internet
	as precompiled packages. If you don't have them, please install them using YaST (on openSUSE), Adept Manager
	(on Ubuntu or Kubuntu) or other package manager.
	To verify that you have the correct packages, write "make --version", "gcc --version" and
	"g++ --version".


Getting - compiling - installing Qt by Trolltech:

	You will need Qt 4.4.3 or compatible (4.3.x works, 4.2.x does NOT work) to compile FET.
	You can get your corresponding version of Qt from http://www.trolltech.com or with your
	package manager. Please get the opensource version of Qt.
	
	GNU/Linux: It is possible to use YaST (or Adept Manager) or other package managers to get
	your version of Qt, pre-compiled. Please DO NOT use Qt 4.2.x, FET does not work with it.
	Or you can download, compile and install Qt from trolltech.com .
	On my OpenSUSE GNU/Linux, which has pre-compiled packages on the internet, I need to install
	libqt4 and libqt4-devel packages (libqt4 is installed by default, I think) - to compile+run FET.
	Additionally, to modify FET, you will need the qt3, qt3-devel and qt3-devel-tools packages
	(qt3 is installed by default, I think).
	
	For Windows - Download latest OpenSource Qt for MinGW from http://www.trolltech.com
	Install and let Qt download and install MinGW.
	Please make sure, after installing Qt and MinGW, that you have
	an environment variable named "QTDIR" which is C:\Qt\4.4.3"
	and you have in the PATH environmental variable the contents
	QTDIR and C:\MinGW\bin.
	
	For Mac OS X: 
	Maybe you can get pre-compiled packages for Mac. If not, get Qt from trolltech.com .


Compiling FET:
	Note: compilation takes long (maybe even 1 hour, if you are using an older computer).
	
	Currently FET can be compiled using Qt 4.4.3 or compatible (4.3.x OK, 4.2.x NOT OK).
	But the majority of interface files are Qt 3.3 forms and to modify them
	you will need Qt 3.3, which unfortunately has no free Windows version.
	
	Important note for all platforms: it seems that FET cannot be compiled with gcc 4.2.x.
	This is a bug of gcc, which was solved in gcc 4.3.x. So, you can compile FET with gcc 4.1.x or
	gcc 4.3.x or compatible (not 4.2.x), gcc 3.x.x should also work.


	GNU/Linux and similar OS's:
	- You will need Qt 4.4.3 or compatible (NOT 4.2.x) to compile this program.
	- type "qmake fet.pro". You have to use qmake from Qt 4 series, which on some systems
	might be named qmake-qt4. So, "qmake-qt4 fet.pro" might sometimes be needed.
	- type "make"
	To remove the compiled objects/executable: "make clean" and/or "make distclean".
	
	Note (N1): if you get an error like: "uic: File generated with too recent version of Qt Designer (4.0 vs. 3.3.8b)",
	please make sure uic links to uic4. You can check this with "uic -version". Another possibility: you may need to
	remove the Makefiles (there are 3, in main dir, in src/ and in src/interface/) and type qmake-qt4 again,
	because when you initially typed qmake, it was used qmake3, which is not good. Or remove fet directory and
	unpack again the fet archive and run qmake-qt4.

	
	Mac OS X:
	2 Variants:
	
	1. First variant, if you use gcc compiler:
	- You will need Qt 4.4.3 or compatible to compile this program.
	- type "qmake fet.pro". You have to use qmake from Qt 4 series, which on some systems
	might be named qmake-qt4. So, "qmake-qt4 fet.pro" might sometimes be needed.
	- IMPORTANT: you might need to write: "qmake -spec macx-g++ fet.pro", if "qmake fet.pro" 
	does not produce a correct makefile. Please see 
	http://lists.trolltech.com/qt-interest/2007-04/thread01126-0.html for details.
	- type "make"
	To remove the compiled objects/executable: "make clean" and/or "make distclean".
	
	2. Another variant:
	- Type "qmake fet.pro" and then "xcodebuild".
	
	If you encounter problems, please see:
	http://lists.trolltech.com/qt-interest/2007-04/thread01126-0.html

	
	Microsoft Windows: you will have to download and install Qt with MinGW from trolltech.com .
	You need to run "qmake" and then "make" in a command line in the FET directory. 
	Then, you can remove directories "src" and "tmp", to save up space.
	If you want to obtain a version which can be run on other computers, 
	you have to copy these 7 files into the FET directory:
	C:\Qt\4.4.3\bin\mingwm10.dll,
	C:\Qt\4.4.3\bin\Qt3Support4.dll, C:\Qt\4.4.3\bin\QtCore4.dll, C:\Qt\4.4.3\bin\QtGui4.dll,
	C:\Qt\4.4.3\bin\QtNetwork4.dll, C:\Qt\4.4.3\bin\QtSQl4.dll, C:\Qt\4.4.3\bin\QtXml4.dll.
	
	
Installing FET:

	GNU/Linux and similar OS's:	
	Please move the whole directory "fet-x.x.x" into the place where you like,
	for instance to the directory "/usr/local/".
	
	Microsoft Windows:
	Move the FET directory in a place of your choice.


Running FET:
	Note: The FET main form is empty, it just contains a menu with the items: File, Data, Advanced,
	Statistics, Timetable, Settings, Help. Everything is all right if you have that.

	GNU/Linux and similar OS's:
	Please chdir to the directory where fet executable is (for instance,
	"cd /home/liviu/fet-x.x.x/") and run "./fet". You may also run fet from
	another directory, but this is not thoroughly tested.
	
	Microsoft Windows:
	Run the executable fet.exe
	
	NOTE for MS Windows users: if you get the message "The paging file is too small for this operation to complete":
	If you disable virtual memory or have it low, it seems that the program won't start.
	The memory consumption of FET is maybe around 50 MB, but FET has defined approximately 600 MB of memory in internal
	variables (these are not used in normal cases). FET seems to need a good amount of virtual memory on Windows
	(maybe it is best to let Windows manage the virtual memory).
	
	COMMAND LINE: no GUI, just run "fet --inputfile=x [--timelimitseconds=y] [--htmllevel=z] [--language=t] [--printnotavailable=u]",
	where	x is the input file, for instance "inputfile.fet"
			y is integer (seconds) (default 2000000000, which is practically infinite)
			z is integer from 0 to 5 and represents the detail level for the generated html timetables
				(default 2, larger values have more details/facilities and larger file sizes)
			t is one of en_GB, ar, ca, de, el, es, fr, hu, id, it, lt, mk, ms, nl, pl, ro, tr (default en_GB)
			u is either "true" or "false" and represents if you want -x- (for true) or --- (for false) in the generated timetables for the
				not available slots (default true)
			
	On GNU/Linux, you'll get a console output to help you with data.
	
	On Windows, only the file result.txt will guide you,
	I cannot make a console output on Windows (I could, but it would complicate the interface).


Languages (translations):
	
	FET will search for translations (fet_xx.qm files) in the following order: directory /usr/share/fet/translations
	(under Unix like or Mac), then directory "translations" in the directory where fet executable is,
	then directly in the directory where the fet executable is. 
	
	So, on Windows: if fet.exe is in C:\fet-x.x.x, fet will search for file fet_xx.qm in 
	C:\fet-x.x.x\translations and then in C:\fet-x.x.x\.
		On UNIX like: if fet executable is in /home/liviu/fet-x.x.x, fet will search for file fet_xx.qm in 
	/usr/share/fet/translations, then in /home/liviu/fet-x.x.x/translations and then in 
	/home/liviu/fet-x.x.x
	
	
Documentation:

	Some hints in the directory "/.../fet-x.x.x/doc/".
	Some other hints in Help menu.


Input files:

	You can open a few sample input files in "/.../fet-x.x.x/sample_inputs/" directory.
	
	You can create/modify a file from FET's user interface or you can modify it by
	hand, if you like.


Feed-back / help:
	- I would like to hear your oppinions/results about this program; any
	feed-back would be greatly appreciated.
	- Reporting bugs/wishes/patches: to forum, mailing list or author.
	
	This project is free software, so any sponsoring offer/donation would be great. You can 
	contact	the author for that.
