Just a note on setting up Felix for use in an "enterprise".

There is lots of stuff to do. However the core problem is to
distribute and build upgrades to the core system.

Felix install consists of two directories at least:

        (1) share
        (2) target = host

The share directory consists of two subdirectories:

        (1) src
        (2) lib

The src is a copy of the whole source code, including all the webpages.
It is all human readable platform independent text (except for a couple
of images used by the webserver).

The lib directory is just a copy of src/lib, the Felix library, which is all
Felix code.

There can be any number of target directories, but there must be one
which is named "host". Targets contain:

        (1) config
        (2) lib/rtl and lib/plat
        (3) bin

All these files are platform dependent. config contains the *.fpc database used
to configure building and using Felix on that platform. The lib/plat is a Felix
source with platform details available to Felix. It is used to condition the 
shared
library to make it adapt to the current target platform.

The lib/rtl and bin contain machine level binary code such as object files,
executables, shared libraries, as well as C++ header files used to adapt
the C++ sources of the RTL (and user C++) for the current platform.

SO: the network administrator will first get Felix from github, and build and
install it. This is repeated for upgrades. The admin needs write access
to the share directory to do this, as well as the host.

The admin will also create directories or links for each target platform.
The platform manager for that platform needs write access. Their job is to
build Felix for that platform.

The users of the platform need read and execute permission, but not write 
access.

Each user must have their own cache in $HOME/.felix which they have full access 
to.

DIFFICULTY.
==========

With this model, the felix install directory contains shared source everyone
uses and platform specific target directories. However since those targets
are platform specific, but they live on the same server as the shared sources,
we have a bit of an admin problem. Unix can probably solve this with various
mounting arrangements, or symbolic links from the platforms TO the shared
directory.

However it is platform dependent how to set this up.

A better way in principle is that every platform has a target directory and a 
LINK
to the shared sources that Felix understands.

For me personally, it is an issue: the current method means I cannot just 
install
the shared sources using 'sudo' and then build for my box without it in 
my personally accessible space (I normally cannot write to /usr/local without
using sudo).

So I am probably going to change the layout. Comments welcome!
I will probably change it so "target" is wherever you want, and you have
to put a link to the shared sources. by "link" I do NOT mean a Unix link,
I mean a piece of text in the config that says "sources are in the
directory xyz/share".

The OTHER way to do this is to create the coupling required on the
command line:

        flx --share=/usr/local/lib/felix/felix-latest/share --target=mytarget


the obvious default location for the "host" target is i

        --target=$HOME/felix/host


however that cannot be shared between accounts on the same machine.

So there are three options:

(A) leave it as it is: target directories siblings to the shared one

(B) change to put the link to the shared sources in the target config

(C) change to require the shared platform independent and platform
dependent be coupled on the command line

Clearly (A) is the most robust and easiest to work with IF it is good enough.
I did this first for that reason.

(B) is flexible, but it means you cannot install a built target just by copying
it unless it was built off the installed shared sources. If it was built
of a local source (what I do all the time) then the copy of the installed
code will point at the wrong place.

Apple Frameworks work this way. All shared libraries built and then installed
in the Felix system have the wrong dependencies (because they're
not built and installed one at a time so the next one depends on the
installed ones, but all built together, then installed, so they all depend
on the build location instead of the install location). DYLD_LIBRARY_PATH
fixes this (but Apple's frameworks are meant to get rid of the need for that).

(C) is the most flexible but very error prone unless the HOME directory
is the default, which means every account has to have their own
private configuration.

I don't think (C) is viable in an enterprise where some people are 
"just using" Felix programs rather than writing these programs.

I have a plan for an extension of (B): instead of Felix sources going
on a server shared on a LAN, it will go on felix-lang.org.

So the sources will be shared *universally*. Felix will use
TCP/IP/HTTP to cache the sources and update the caches.

Once this "automatic update" is running, you will never need to
rebuild Felix manually. Everything will rebuild automatically
and transparently.

This is similar to say Firefox or some Windows program doing
an automatic update EXCEPT that we're downloading SOURCE CODE
in plain text not binaries. In other words, we have Open Source.
We'd use security/crypto etc to ensure the right stuff is downloaded,
and the public archive is then available for bug inspection.

Then we allow intervention, for example "Don't update without asking"
to gain more security for those with the expertise to actually manage
updating/verification/rebuilding etc.


--
john skaller
skal...@users.sourceforge.net
http://felix-lang.org




------------------------------------------------------------------------------
Android is increasing in popularity, but the open development platform that
developers love is also attractive to malware creators. Download this white
paper to learn more about secure code signing practices that can help keep
Android apps secure.
http://pubads.g.doubleclick.net/gampad/clk?id=65839951&iu=/4140/ostg.clktrk
_______________________________________________
Felix-language mailing list
Felix-language@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/felix-language

Reply via email to