\chapter{Evaluation}
\label{eval}

\todo[inline, caption={Complete Evaluation}, author={\textbf{Draft note}}]{This chapter is \emph{very} incomplete, and only contains a brief and informal talk about the issues I am facing right now. This is not the actual thesis-worthy text. All issues discussed were relevant as of 11.04.2025} 

In this chapter presents the method of evaluating the solution is presented, and the found qualities of the solution are discussed.

Specifically will include:
\begin{itemize}
	\item ,,Does the solution actually solve the problem?''
	\item Interoperability with other software: does using this fs break other programs, like whether it interferes with programs using auxiliary files, usability of terminal programs (\verb|grep| is a particularly nasty one for this specific project).
	\item Performance and overhead.
	\item Security considerations.
\end{itemize}

\section{Interoperability}

\say{does using this fs break other programs?}
\newline

Mostly - no. The biggest issue right now are (ironically) file trackers like \verb|tracker-miners|. Those are programs that scan the filesystem (e.g. to make file search more efficient). The problem is that the current version of the software does not allow changing the scope of permissions you are giving (e.g. you can't just give permission to access the entire filesystem).

The solution would be to give an ability to adjust the scope inside the permission dialogue. Everything on the ``backend'' side is ready for this change, but... since I am using zenity it does not easily give me the ability to just add another element to the dialog. Probably a custom dialogue program has to be written, or multiple dialogues would have to be shown(e.g. standard one with Allow/Allow this time/Deny with a ``more options'' button, and then a second zenity dialogue with more detailed configurations) to solve the issue.
\newline

\say{..like whether it interferes with programs using auxiliary files..}
\newline

No, this issue is solved. Because the programs that use such files are typically the ones that create them, they automatically get the permissions to access them.

In fact, I am writing this thesis inside of a folder managed by ICFS, and even despite TeX's notorious love for auxiliary files it works just fine.

\say{..usability of terminal programs (grep is a particularly nasty one for this specific project)}
\newline

Yes, this still is an issue. The problem of \verb|grep| is the same as with file trackers, so I will skip it.

As for regular terminal programs, I see these possible solutions:
\begin{itemize}
	\item Use SID and TTY to identify a shell session (like \verb|sudo| does).
\end{itemize}

\section{Performance}

Performance of ICFS is terrible. Unfortunately, I was unable to make \verb|perf| work with it for some reason, so I don't really know what is slowing operations down. So those are my speculations for what \emph{may} be the bottleneck.

A lot of it is caused by it's design. For example, ICFS needs to look through procfs to get process creation time, and there is no way of going around this it seems. 

But a lot can also be improved. For example, 

\begin{itemize}
	\item sqlite queries can be pre-``compiled''
	\item (I think) more paralellism can be achieved.
\end{itemize}


\section{Limitations}
\label{eval:limit}

It can only be used in a single-user environment.
