Re: [E-devel] [RFC] One binary to rule them all, packagers opinion needed

2016-10-26 Thread The Rasterman
On Wed, 26 Oct 2016 11:28:30 -0700 Cedric BAIL  said:

> On Tue, Oct 25, 2016 at 5:17 PM, Carsten Haitzler 
> wrote:
> >
> > why are you doing a symlink if its JUST a quicklaunch binary change (that
> > statically compiles all of efl into it)?
> 
> As said it is a multiple stage update path. First just a change to
> quicklaunch, which should work by itself. Then we can switch from real
> libevas.so.1 to a symlink to that binary. This allow us a progressive
> try without breaking everyone right away and making it possible for
> people/packager on other OS to try it first.

so let's not do this quicklaunch executable thing. as per exchange with
vincent. windows cant loadlibrary an executable and have it WORK. it can find
symbols, but not run (unless we do some linker level work it seems like
resolve some libc symbols etc.).

let's just merge .so's to fewer .so's (or fewer dll's) and get compatibility
working without any quicklaunch craziness. let us see how much better things
get then. we haven't measured it so we don't know. this is portable with
symlinks on *nix OR "empty DLL's" on windows. my suggestion is we ALWAYS build
the empty dll's and have a post install hook that deletes the files and
replaces them with symnlinks on *nix only. this way we exercise the windows
compatibility path ALWAYS on build+install and then add a post install step to
optimize for *nix. we could even make the post install step explicit like

make install
make install-symlink

> > you are trying to replace all of libevas.so.1, libeina.so.1, etc. with
> > symlinks TO this quicklaunch binary ... to retain binary compatibility. you
> > cant have the .so's AND this ql binary both have the same set of symbols.
> > asking for trouble there.
> 
> It shouldn't be a problem thanks to DSO on most system. System without
> DSO may be an issue.

my point is we can't maintain .so's AND a quicklaunch binary with libs
statically linked in. its one or the other. you build an app normally even as a
PIE exec, it will INSIST on linking to libevas.so and when it links libevas.so
it must find symbols evas_* etc. from there. same for every library. if we have
these .so's AND we have a quicklaunch lib with things compiled/linked inside we
have multiple evas libs and evas symbols.. one from libevas.so and one from the
ql lib. the only way to do this is replace ALL .so's with symlinks to the
quicklaunch binary. so its this OR a set of .so's. you can't have both.

let's not jump all that way (which cant work on windows as already mentioned.
it can be a quicklaunch dll or a quicklaunch exe we can find symbols from but
cant run anything from). let's just work on merging our libs and make it
portable. let's just get this done. this is more than enough work for now and
likely will buy us a lot of improvements on its own. let's measure them and see.

> > but to USe this binaries HAVE to be PIe and this makes for a non-portable
> > pain in the arse of creating apps. which is why i did .so's for quicklaunch
> > before.. because it also works with dll's on windows. PIE does not. not
> > that i could find.
> 
> Most system have some form of PIE due to the need to implement ALSR.
> For windows, let follow up the discussion with Vincent.

yes. but we cant have a combined exe AND dll. you can find symbols and data but
not run code according to vincent (unless we ALSO do some custom linker work
ourselves which i think is going way way way too far).

> > if top, htop, ps, killall, etc. don't work out of the box, it isby everyone
> > (except yours) definition... a nightmare. i've messed with this before and
> > it does not work across all the tools because of where they source command
> > (and that can change based on config and cmdline options too).
> 
> As said, this is just a matter of alias to be documented. I don't
> think it is so much of a big deal.

see simotek's response. it's not. it's a dealbreaker and will be for the vast
vast vast majority of distributors and users. it means a quicklaunch/zygote
kind of setup is going to be special and custom always for SOME systems where
people are willing to pay this price. well until all ps/top like tools use the
fields that allow process renaming to work.

if we have this tool MY suggestion is to not even do PIE. do one big
NON-RELOCATABLE executable (i know it kills ASLR for efl and anything linked
into it, but you could force it to be PIE if you want this). this executable
inits up to some specific point then CAN fork. maybe it forks 1 or 2 "spares"
that sit and wait for commands. before they can accept commands though they do
do some "app local" init like connect to x or wayland servers etc. and THEN sit
and wait. when tols to run they dlopen the target and find the efl_main() func
and launch from there by calling it.

THIS works on windows. it works on *nix. BUT the app HAS to be a dll or .so to
work. yes it needs special changes in building of the app, BUT you HAVE to
force PIE (change app builds) to have this work 

Re: [E-devel] [RFC] One binary to rule them all, packagers opinion needed

2016-10-26 Thread The Rasterman
On Thu, 27 Oct 2016 10:39:47 +1030 Simon Lees  said:

> 
> 
> On 10/27/2016 04:58 AM, Cedric BAIL wrote:
> > On Tue, Oct 25, 2016 at 5:17 PM, Carsten Haitzler 
> > wrote:
> >> On Tue, 25 Oct 2016 14:32:29 -0700 Cedric BAIL  said:
> >>> On Mon, Oct 24, 2016 at 10:31 PM, Carsten Haitzler 
> >>> wrote:
>  On Fri, 21 Oct 2016 15:14:20 -0700 Cedric BAIL 
>  said: i've been mulling this. i followed the feedback so far. basically
>  2 main things:
> 
>  1. this is intended to improve performance. especially startup times.
>  2. this is highly problematic in terms of portability and is going to
>  create lots of code and build paths.
> >>>
> >>> It won't create lots of code and build paths. In fact it doesn't even
> >>> need two build paths. It just needs to uses all .la files for building
> >>> quicklaunch and can be rolled in, in parallel to current system. Just
> >>> the link of the quicklaunch binary would be different. Next step would
> >>> be to make a build option that setup symlink to that binary. Finally
> >>> that option would be the default, likely only afffecting the install
> >>> process. I don't think that create a lots of code (There should be no
> >>> code change) and build paths change at all.
> >>
> >> why are you doing a symlink if its JUST a quicklaunch binary change (that
> >> statically compiles all of efl into it)?
> > 
> > As said it is a multiple stage update path. First just a change to
> > quicklaunch, which should work by itself. Then we can switch from real
> > libevas.so.1 to a symlink to that binary. This allow us a progressive
> > try without breaking everyone right away and making it possible for
> > people/packager on other OS to try it first.
> > 
> >> you are trying to replace all of libevas.so.1, libeina.so.1, etc. with
> >> symlinks TO this quicklaunch binary ... to retain binary compatibility.
> >> you cant have the .so's AND this ql binary both have the same set of
> >> symbols. asking for trouble there.
> > 
> > It shouldn't be a problem thanks to DSO on most system. System without
> > DSO may be an issue.
> > 
> >> but to USe this binaries HAVE to be PIe and this makes for a non-portable
> >> pain in the arse of creating apps. which is why i did .so's for
> >> quicklaunch before.. because it also works with dll's on windows. PIE does
> >> not. not that i could find.
> > 
> > Most system have some form of PIE due to the need to implement ALSR.
> > For windows, let follow up the discussion with Vincent.
> > 
>  3. this makes debugging and other things a nightmare (ps names are all
>  the same .. well depending on tool etc.)
> >>>
> >>> This is exagerated. Again just need to pass the right command line to
> >>> ps/top and problem is solved. Can easily be documented and we can also
> >>> provide a script that does it until we provide some nicer application
> >>> there.
> >>
> >> i mean simple user debugging. someone runs ps or top and all they see is 20
> >> processes called "quicklaunch". because depending on the ps tool it may
> >> use one proc field or another. so a user goes "quicklaunch process is
> >> using N% cpu or N % ram". what real process is that? they don't know.
> >> because procps tools will not do what you want and thus the average person
> >> will become confused and find anything using efl like this to be horribly
> >> hard to work with.
> >>
> >> if top, htop, ps, killall, etc. don't work out of the box, it isby everyone
> >> (except yours) definition... a nightmare. i've messed with this before and
> >> it does not work across all the tools because of where they source command
> >> (and that can change based on config and cmdline options too).
> > 
> > As said, this is just a matter of alias to be documented. I don't
> > think it is so much of a big deal.
> > 
> 
> As someone who helps with support a lot if top, htop, ps, killall and "
> systemctl status user.slice" don't provide correct info out of the box
> i'd consider it a deal breaker and broken and would probably look for
> ways to patch around it at a distro level.

bingo. thus why i dont think we could at all do a quicklaunch/zygote thing out
of the box for everyone.

i also see this as a deal breaker. if CURRENTLY 90%+ of ps/top/killall like
tools used the same field AND thus showed the right cmd then ok - its a few
that use a different field. this is NOT the case right now. it wont be unless
these tools change. lots of them.


-- 
- Codito, ergo sum - "I code, therefore I am" --
The Rasterman (Carsten Haitzler)ras...@rasterman.com


--
The Command Line: Reinvented for Modern Developers
Did the resurgence of CLI tooling catch you by surprise?
Reconnect with the command line and become more productive. 
Learn the new .NET and ASP.NET CLI. Get your free copy!
http://sdm.link/telerik
___
enlightenment-devel mailing list

Re: [E-devel] [RFC] One binary to rule them all, packagers opinion needed

2016-10-26 Thread The Rasterman
On Wed, 26 Oct 2016 07:14:05 +0200 Vincent Torri  said:

> On Wed, Oct 26, 2016 at 6:42 AM, Carsten Haitzler 
> wrote:
> > On Wed, 26 Oct 2016 04:50:54 +0200 Vincent Torri 
> > said:
> >
> >> On Wed, Oct 26, 2016 at 2:17 AM, Carsten Haitzler 
> >> wrote:
> >> > On Tue, 25 Oct 2016 14:32:29 -0700 Cedric BAIL 
> >> > said:
> >> >
> >> >> On Mon, Oct 24, 2016 at 10:31 PM, Carsten Haitzler
> >> >>  wrote:
> >> >> > On Fri, 21 Oct 2016 15:14:20 -0700 Cedric BAIL 
> >> >> > said:
> >> >> >
> >> >> > i've been mulling this. i followed the feedback so far. basically 2
> >> >> > main things:
> >> >> >
> >> >> > 1. this is intended to improve performance. especially startup times.
> >> >> > 2. this is highly problematic in terms of portability and is going to
> >> >> > create lots of code and build paths.
> >> >>
> >> >> It won't create lots of code and build paths. In fact it doesn't even
> >> >> need two build paths. It just needs to uses all .la files for building
> >> >> quicklaunch and can be rolled in, in parallel to current system. Just
> >> >> the link of the quicklaunch binary would be different. Next step would
> >> >> be to make a build option that setup symlink to that binary. Finally
> >> >> that option would be the default, likely only afffecting the install
> >> >> process. I don't think that create a lots of code (There should be no
> >> >> code change) and build paths change at all.
> >> >
> >> > why are you doing a symlink if its JUST a quicklaunch binary change (that
> >> > statically compiles all of efl into it)?
> >> >
> >> > you are trying to replace all of libevas.so.1, libeina.so.1, etc. with
> >> > symlinks TO this quicklaunch binary ... to retain binary compatibility.
> >> > you cant have the .so's AND this ql binary both have the same set of
> >> > symbols. asking for trouble there.
> >> >
> >> > but to USe this binaries HAVE to be PIe and this makes for a non-portable
> >> > pain in the arse of creating apps. which is why i did .so's for
> >> > quicklaunch before.. because it also works with dll's on windows. PIE
> >> > does not. not that i could find.
> >> >
> >> >> > 3. this makes debugging and other things a nightmare (ps names are all
> >> >> > the same .. well depending on tool etc.)
> >> >>
> >> >> This is exagerated. Again just need to pass the right command line to
> >> >> ps/top and problem is solved. Can easily be documented and we can also
> >> >> provide a script that does it until we provide some nicer application
> >> >> there.
> >> >
> >> > i mean simple user debugging. someone runs ps or top and all they see is
> >> > 20 processes called "quicklaunch". because depending on the ps tool it
> >> > may use one proc field or another. so a user goes "quicklaunch process
> >> > is using N% cpu or N % ram". what real process is that? they don't know.
> >> > because procps tools will not do what you want and thus the average
> >> > person will become confused and find anything using efl like this to be
> >> > horribly hard to work with.
> >> >
> >> > if top, htop, ps, killall, etc. don't work out of the box, it isby
> >> > everyone (except yours) definition... a nightmare. i've messed with this
> >> > before and it does not work across all the tools because of where they
> >> > source command (and that can change based on config and cmdline options
> >> > too).
> >> >
> >> >> > 4. generally the issue of complexity in our build requires for
> >> >> > portability etc.
> >> >> >
> >> >> > #4 isn't something we can solve right now, but has a better solution
> >> >> > #if we go
> >> >> > for a greater internal redesign. but not today. some other day. we
> >> >> > have to live with what we have right now.
> >> >>
> >> >> Hum ? How ? I don't see how we can have good portability without a
> >> >> complex build system. Would be interested to know more by what you
> >> >> mean here !
> >> >
> >> > we can isolate the portability layers in a much smaller area and always
> >> > provide a portable interface wrapped on top of the real os one. currently
> >> > our portability code is scattered all through efl. it's not in one
> >> > place. by merging it into one location we'll be able to simplify it too
> >> > so in the end we just have some "efl port sys" lib that provides an
> >> > "always works" set of library calls and everything above that is 100%
> >> > portable and never changes platform to platform.
> >> >
> >> >> > i am always for improvements. but this really makes this method a very
> >> >> > very very hard ask to do this. i've thought about it and i think this
> >> >> > is far TOO radical a change as it means different execution methods,
> >> >> > library production, linking and so much more os by os. it's kind of
> >> >> > insane though theoretically doable on *nix. i've checked and PIE
> >> >> > seems to be urtterly unportable (windows can't do it based on my
> >> >> > reading). the proposal would be workable ONLY if we could do it
> >> >> > unversally so it wouldn't bitrot and it'd 

Re: [E-devel] [RFC] One binary to rule them all, packagers opinion needed

2016-10-26 Thread Simon Lees


On 10/27/2016 04:58 AM, Cedric BAIL wrote:
> On Tue, Oct 25, 2016 at 5:17 PM, Carsten Haitzler  
> wrote:
>> On Tue, 25 Oct 2016 14:32:29 -0700 Cedric BAIL  said:
>>> On Mon, Oct 24, 2016 at 10:31 PM, Carsten Haitzler 
>>> wrote:
 On Fri, 21 Oct 2016 15:14:20 -0700 Cedric BAIL  said:
 i've been mulling this. i followed the feedback so far. basically 2 main
 things:

 1. this is intended to improve performance. especially startup times.
 2. this is highly problematic in terms of portability and is going to 
 create
 lots of code and build paths.
>>>
>>> It won't create lots of code and build paths. In fact it doesn't even
>>> need two build paths. It just needs to uses all .la files for building
>>> quicklaunch and can be rolled in, in parallel to current system. Just
>>> the link of the quicklaunch binary would be different. Next step would
>>> be to make a build option that setup symlink to that binary. Finally
>>> that option would be the default, likely only afffecting the install
>>> process. I don't think that create a lots of code (There should be no
>>> code change) and build paths change at all.
>>
>> why are you doing a symlink if its JUST a quicklaunch binary change (that
>> statically compiles all of efl into it)?
> 
> As said it is a multiple stage update path. First just a change to
> quicklaunch, which should work by itself. Then we can switch from real
> libevas.so.1 to a symlink to that binary. This allow us a progressive
> try without breaking everyone right away and making it possible for
> people/packager on other OS to try it first.
> 
>> you are trying to replace all of libevas.so.1, libeina.so.1, etc. with 
>> symlinks
>> TO this quicklaunch binary ... to retain binary compatibility. you cant have
>> the .so's AND this ql binary both have the same set of symbols. asking for
>> trouble there.
> 
> It shouldn't be a problem thanks to DSO on most system. System without
> DSO may be an issue.
> 
>> but to USe this binaries HAVE to be PIe and this makes for a non-portable 
>> pain
>> in the arse of creating apps. which is why i did .so's for quicklaunch 
>> before..
>> because it also works with dll's on windows. PIE does not. not that i could
>> find.
> 
> Most system have some form of PIE due to the need to implement ALSR.
> For windows, let follow up the discussion with Vincent.
> 
 3. this makes debugging and other things a nightmare (ps names are all the
 same .. well depending on tool etc.)
>>>
>>> This is exagerated. Again just need to pass the right command line to
>>> ps/top and problem is solved. Can easily be documented and we can also
>>> provide a script that does it until we provide some nicer application
>>> there.
>>
>> i mean simple user debugging. someone runs ps or top and all they see is 20
>> processes called "quicklaunch". because depending on the ps tool it may use 
>> one
>> proc field or another. so a user goes "quicklaunch process is using N% cpu 
>> or N
>> % ram". what real process is that? they don't know. because procps tools will
>> not do what you want and thus the average person will become confused and 
>> find
>> anything using efl like this to be horribly hard to work with.
>>
>> if top, htop, ps, killall, etc. don't work out of the box, it isby everyone
>> (except yours) definition... a nightmare. i've messed with this before and it
>> does not work across all the tools because of where they source command (and
>> that can change based on config and cmdline options too).
> 
> As said, this is just a matter of alias to be documented. I don't
> think it is so much of a big deal.
> 

As someone who helps with support a lot if top, htop, ps, killall and "
systemctl status user.slice" don't provide correct info out of the box
i'd consider it a deal breaker and broken and would probably look for
ways to patch around it at a distro level.

-- 

Simon Lees (Simotek)http://simotek.net

Emergency Update Team   keybase.io/simotek
SUSE LinuxAdeliade Australia, UTC+9:30
GPG Fingerprint: 5B87 DB9D 88DC F606 E489 CEC5 0922 C246 02F0 014B



signature.asc
Description: OpenPGP digital signature
--
The Command Line: Reinvented for Modern Developers
Did the resurgence of CLI tooling catch you by surprise?
Reconnect with the command line and become more productive. 
Learn the new .NET and ASP.NET CLI. Get your free copy!
http://sdm.link/telerik___
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel


Re: [E-devel] [RFC] One binary to rule them all, packagers opinion needed

2016-10-26 Thread Cedric BAIL
On Wed, Oct 26, 2016 at 11:40 AM, Vincent Torri  wrote:
> On Wed, Oct 26, 2016 at 7:42 PM, Cedric BAIL  wrote:
>> On Tue, Oct 25, 2016 at 10:14 PM, Vincent Torri  
>> wrote:
>>> On Wed, Oct 26, 2016 at 6:42 AM, Carsten Haitzler  
>>> wrote:
 On Wed, 26 Oct 2016 04:50:54 +0200 Vincent Torri  
 said:
> On Wed, Oct 26, 2016 at 2:17 AM, Carsten Haitzler 
> wrote:
> > On Tue, 25 Oct 2016 14:32:29 -0700 Cedric BAIL  
> > said:
> >> On Mon, Oct 24, 2016 at 10:31 PM, Carsten Haitzler 
> >> 
> >> wrote:
> >> > On Fri, 21 Oct 2016 15:14:20 -0700 Cedric BAIL 
> >> > said:
> >> >
> >> > i've been mulling this. i followed the feedback so far. basically 2 
> >> > main
> >> > things:
> >> >
> >> > 1. this is intended to improve performance. especially startup times.
> >> > 2. this is highly problematic in terms of portability and is going to
> >> > create lots of code and build paths.
> >>
> >> It won't create lots of code and build paths. In fact it doesn't even
> >> need two build paths. It just needs to uses all .la files for building
> >> quicklaunch and can be rolled in, in parallel to current system. Just
> >> the link of the quicklaunch binary would be different. Next step would
> >> be to make a build option that setup symlink to that binary. Finally
> >> that option would be the default, likely only afffecting the install
> >> process. I don't think that create a lots of code (There should be no
> >> code change) and build paths change at all.
> >
> > why are you doing a symlink if its JUST a quicklaunch binary change 
> > (that
> > statically compiles all of efl into it)?
> >
> > you are trying to replace all of libevas.so.1, libeina.so.1, etc. with
> > symlinks TO this quicklaunch binary ... to retain binary compatibility. 
> > you
> > cant have the .so's AND this ql binary both have the same set of 
> > symbols.
> > asking for trouble there.
> >
> > but to USe this binaries HAVE to be PIe and this makes for a 
> > non-portable
> > pain in the arse of creating apps. which is why i did .so's for 
> > quicklaunch
> > before.. because it also works with dll's on windows. PIE does not. not
> > that i could find.
> >
> >> > 3. this makes debugging and other things a nightmare (ps names are 
> >> > all
> >> > the same .. well depending on tool etc.)
> >>
> >> This is exagerated. Again just need to pass the right command line to
> >> ps/top and problem is solved. Can easily be documented and we can also
> >> provide a script that does it until we provide some nicer application
> >> there.
> >
> > i mean simple user debugging. someone runs ps or top and all they see 
> > is 20
> > processes called "quicklaunch". because depending on the ps tool it may 
> > use
> > one proc field or another. so a user goes "quicklaunch process is using 
> > N%
> > cpu or N % ram". what real process is that? they don't know. because 
> > procps
> > tools will not do what you want and thus the average person will become
> > confused and find anything using efl like this to be horribly hard to 
> > work
> > with.
> >
> > if top, htop, ps, killall, etc. don't work out of the box, it isby 
> > everyone
> > (except yours) definition... a nightmare. i've messed with this before 
> > and
> > it does not work across all the tools because of where they source 
> > command
> > (and that can change based on config and cmdline options too).
> >
> >> > 4. generally the issue of complexity in our build requires for
> >> > portability etc.
> >> >
> >> > #4 isn't something we can solve right now, but has a better solution 
> >> > if
> >> > #we go
> >> > for a greater internal redesign. but not today. some other day. we 
> >> > have
> >> > to live with what we have right now.
> >>
> >> Hum ? How ? I don't see how we can have good portability without a
> >> complex build system. Would be interested to know more by what you
> >> mean here !
> >
> > we can isolate the portability layers in a much smaller area and always
> > provide a portable interface wrapped on top of the real os one. 
> > currently
> > our portability code is scattered all through efl. it's not in one 
> > place. by
> > merging it into one location we'll be able to simplify it too so in the 
> > end
> > we just have some "efl port sys" lib that provides an "always works" 
> > set of
> > library calls and everything above that is 100% portable and never 
> > changes
> > platform to platform.
> >
> >> > i am always for improvements. but this really makes this method a 
> >> > very
> >> > very very hard ask to do this. i've thought about it and i think 
> >> > this 

Re: [E-devel] [RFC] One binary to rule them all, packagers opinion needed

2016-10-26 Thread Vincent Torri
On Wed, Oct 26, 2016 at 8:28 PM, Cedric BAIL  wrote:
> On Tue, Oct 25, 2016 at 5:17 PM, Carsten Haitzler  
> wrote:
>> On Tue, 25 Oct 2016 14:32:29 -0700 Cedric BAIL  said:
>>> On Mon, Oct 24, 2016 at 10:31 PM, Carsten Haitzler 
>>> wrote:
>>> > On Fri, 21 Oct 2016 15:14:20 -0700 Cedric BAIL  said:
>>> > i've been mulling this. i followed the feedback so far. basically 2 main
>>> > things:
>>> >
>>> > 1. this is intended to improve performance. especially startup times.
>>> > 2. this is highly problematic in terms of portability and is going to 
>>> > create
>>> > lots of code and build paths.
>>>
>>> It won't create lots of code and build paths. In fact it doesn't even
>>> need two build paths. It just needs to uses all .la files for building
>>> quicklaunch and can be rolled in, in parallel to current system. Just
>>> the link of the quicklaunch binary would be different. Next step would
>>> be to make a build option that setup symlink to that binary. Finally
>>> that option would be the default, likely only afffecting the install
>>> process. I don't think that create a lots of code (There should be no
>>> code change) and build paths change at all.
>>
>> why are you doing a symlink if its JUST a quicklaunch binary change (that
>> statically compiles all of efl into it)?
>
> As said it is a multiple stage update path. First just a change to
> quicklaunch, which should work by itself. Then we can switch from real
> libevas.so.1 to a symlink to that binary. This allow us a progressive
> try without breaking everyone right away and making it possible for
> people/packager on other OS to try it first.
>
>> you are trying to replace all of libevas.so.1, libeina.so.1, etc. with 
>> symlinks
>> TO this quicklaunch binary ... to retain binary compatibility. you cant have
>> the .so's AND this ql binary both have the same set of symbols. asking for
>> trouble there.
>
> It shouldn't be a problem thanks to DSO on most system. System without
> DSO may be an issue.
>
>> but to USe this binaries HAVE to be PIe and this makes for a non-portable 
>> pain
>> in the arse of creating apps. which is why i did .so's for quicklaunch 
>> before..
>> because it also works with dll's on windows. PIE does not. not that i could
>> find.
>
> Most system have some form of PIE due to the need to implement ALSR.
> For windows, let follow up the discussion with Vincent.
>
>>> > 3. this makes debugging and other things a nightmare (ps names are all the
>>> > same .. well depending on tool etc.)
>>>
>>> This is exagerated. Again just need to pass the right command line to
>>> ps/top and problem is solved. Can easily be documented and we can also
>>> provide a script that does it until we provide some nicer application
>>> there.
>>
>> i mean simple user debugging. someone runs ps or top and all they see is 20
>> processes called "quicklaunch". because depending on the ps tool it may use 
>> one
>> proc field or another. so a user goes "quicklaunch process is using N% cpu 
>> or N
>> % ram". what real process is that? they don't know. because procps tools will
>> not do what you want and thus the average person will become confused and 
>> find
>> anything using efl like this to be horribly hard to work with.
>>
>> if top, htop, ps, killall, etc. don't work out of the box, it isby everyone
>> (except yours) definition... a nightmare. i've messed with this before and it
>> does not work across all the tools because of where they source command (and
>> that can change based on config and cmdline options too).
>
> As said, this is just a matter of alias to be documented. I don't
> think it is so much of a big deal.
>
>>> > 4. generally the issue of complexity in our build requires for portability
>>> > etc.
>>> >
>>> > #4 isn't something we can solve right now, but has a better solution if we
>>> > #go
>>> > for a greater internal redesign. but not today. some other day. we have to
>>> > live with what we have right now.
>>>
>>> Hum ? How ? I don't see how we can have good portability without a
>>> complex build system. Would be interested to know more by what you
>>> mean here !
>>
>> we can isolate the portability layers in a much smaller area and always 
>> provide
>> a portable interface wrapped on top of the real os one. currently our
>> portability code is scattered all through efl. it's not in one place. by
>> merging it into one location we'll be able to simplify it too so in the end 
>> we
>> just have some "efl port sys" lib that provides an "always works" set of
>> library calls and everything above that is 100% portable and never changes
>> platform to platform.
>
> We kind of have that and kind of not. The issue is that depending on
> how far from an Unix system an OS is the deeper the change are.
> Windows require a base layer like Evil to handle things, most RTOS
> would also require something like that, while Mac OS X doesn't but
> will require alternate code for display, input, c&p and drag&drop.
> Moving everything down t

Re: [E-devel] [RFC] One binary to rule them all, packagers opinion needed

2016-10-26 Thread Vincent Torri
On Wed, Oct 26, 2016 at 7:42 PM, Cedric BAIL  wrote:
> On Tue, Oct 25, 2016 at 10:14 PM, Vincent Torri  
> wrote:
>> On Wed, Oct 26, 2016 at 6:42 AM, Carsten Haitzler  
>> wrote:
>>> On Wed, 26 Oct 2016 04:50:54 +0200 Vincent Torri  
>>> said:
 On Wed, Oct 26, 2016 at 2:17 AM, Carsten Haitzler 
 wrote:
 > On Tue, 25 Oct 2016 14:32:29 -0700 Cedric BAIL  
 > said:
 >> On Mon, Oct 24, 2016 at 10:31 PM, Carsten Haitzler 
 >> 
 >> wrote:
 >> > On Fri, 21 Oct 2016 15:14:20 -0700 Cedric BAIL 
 >> > said:
 >> >
 >> > i've been mulling this. i followed the feedback so far. basically 2 
 >> > main
 >> > things:
 >> >
 >> > 1. this is intended to improve performance. especially startup times.
 >> > 2. this is highly problematic in terms of portability and is going to
 >> > create lots of code and build paths.
 >>
 >> It won't create lots of code and build paths. In fact it doesn't even
 >> need two build paths. It just needs to uses all .la files for building
 >> quicklaunch and can be rolled in, in parallel to current system. Just
 >> the link of the quicklaunch binary would be different. Next step would
 >> be to make a build option that setup symlink to that binary. Finally
 >> that option would be the default, likely only afffecting the install
 >> process. I don't think that create a lots of code (There should be no
 >> code change) and build paths change at all.
 >
 > why are you doing a symlink if its JUST a quicklaunch binary change (that
 > statically compiles all of efl into it)?
 >
 > you are trying to replace all of libevas.so.1, libeina.so.1, etc. with
 > symlinks TO this quicklaunch binary ... to retain binary compatibility. 
 > you
 > cant have the .so's AND this ql binary both have the same set of symbols.
 > asking for trouble there.
 >
 > but to USe this binaries HAVE to be PIe and this makes for a non-portable
 > pain in the arse of creating apps. which is why i did .so's for 
 > quicklaunch
 > before.. because it also works with dll's on windows. PIE does not. not
 > that i could find.
 >
 >> > 3. this makes debugging and other things a nightmare (ps names are all
 >> > the same .. well depending on tool etc.)
 >>
 >> This is exagerated. Again just need to pass the right command line to
 >> ps/top and problem is solved. Can easily be documented and we can also
 >> provide a script that does it until we provide some nicer application
 >> there.
 >
 > i mean simple user debugging. someone runs ps or top and all they see is 
 > 20
 > processes called "quicklaunch". because depending on the ps tool it may 
 > use
 > one proc field or another. so a user goes "quicklaunch process is using 
 > N%
 > cpu or N % ram". what real process is that? they don't know. because 
 > procps
 > tools will not do what you want and thus the average person will become
 > confused and find anything using efl like this to be horribly hard to 
 > work
 > with.
 >
 > if top, htop, ps, killall, etc. don't work out of the box, it isby 
 > everyone
 > (except yours) definition... a nightmare. i've messed with this before 
 > and
 > it does not work across all the tools because of where they source 
 > command
 > (and that can change based on config and cmdline options too).
 >
 >> > 4. generally the issue of complexity in our build requires for
 >> > portability etc.
 >> >
 >> > #4 isn't something we can solve right now, but has a better solution 
 >> > if
 >> > #we go
 >> > for a greater internal redesign. but not today. some other day. we 
 >> > have
 >> > to live with what we have right now.
 >>
 >> Hum ? How ? I don't see how we can have good portability without a
 >> complex build system. Would be interested to know more by what you
 >> mean here !
 >
 > we can isolate the portability layers in a much smaller area and always
 > provide a portable interface wrapped on top of the real os one. currently
 > our portability code is scattered all through efl. it's not in one 
 > place. by
 > merging it into one location we'll be able to simplify it too so in the 
 > end
 > we just have some "efl port sys" lib that provides an "always works" set 
 > of
 > library calls and everything above that is 100% portable and never 
 > changes
 > platform to platform.
 >
 >> > i am always for improvements. but this really makes this method a very
 >> > very very hard ask to do this. i've thought about it and i think this 
 >> > is
 >> > far TOO radical a change as it means different execution methods, 
 >> > library
 >> > production, linking and so much more os by os. it's kind of insane 
 >> > though
 >> > theoretically doable 

Re: [E-devel] [RFC] One binary to rule them all, packagers opinion needed

2016-10-26 Thread Cedric BAIL
On Tue, Oct 25, 2016 at 5:17 PM, Carsten Haitzler  wrote:
> On Tue, 25 Oct 2016 14:32:29 -0700 Cedric BAIL  said:
>> On Mon, Oct 24, 2016 at 10:31 PM, Carsten Haitzler 
>> wrote:
>> > On Fri, 21 Oct 2016 15:14:20 -0700 Cedric BAIL  said:
>> > i've been mulling this. i followed the feedback so far. basically 2 main
>> > things:
>> >
>> > 1. this is intended to improve performance. especially startup times.
>> > 2. this is highly problematic in terms of portability and is going to 
>> > create
>> > lots of code and build paths.
>>
>> It won't create lots of code and build paths. In fact it doesn't even
>> need two build paths. It just needs to uses all .la files for building
>> quicklaunch and can be rolled in, in parallel to current system. Just
>> the link of the quicklaunch binary would be different. Next step would
>> be to make a build option that setup symlink to that binary. Finally
>> that option would be the default, likely only afffecting the install
>> process. I don't think that create a lots of code (There should be no
>> code change) and build paths change at all.
>
> why are you doing a symlink if its JUST a quicklaunch binary change (that
> statically compiles all of efl into it)?

As said it is a multiple stage update path. First just a change to
quicklaunch, which should work by itself. Then we can switch from real
libevas.so.1 to a symlink to that binary. This allow us a progressive
try without breaking everyone right away and making it possible for
people/packager on other OS to try it first.

> you are trying to replace all of libevas.so.1, libeina.so.1, etc. with 
> symlinks
> TO this quicklaunch binary ... to retain binary compatibility. you cant have
> the .so's AND this ql binary both have the same set of symbols. asking for
> trouble there.

It shouldn't be a problem thanks to DSO on most system. System without
DSO may be an issue.

> but to USe this binaries HAVE to be PIe and this makes for a non-portable pain
> in the arse of creating apps. which is why i did .so's for quicklaunch 
> before..
> because it also works with dll's on windows. PIE does not. not that i could
> find.

Most system have some form of PIE due to the need to implement ALSR.
For windows, let follow up the discussion with Vincent.

>> > 3. this makes debugging and other things a nightmare (ps names are all the
>> > same .. well depending on tool etc.)
>>
>> This is exagerated. Again just need to pass the right command line to
>> ps/top and problem is solved. Can easily be documented and we can also
>> provide a script that does it until we provide some nicer application
>> there.
>
> i mean simple user debugging. someone runs ps or top and all they see is 20
> processes called "quicklaunch". because depending on the ps tool it may use 
> one
> proc field or another. so a user goes "quicklaunch process is using N% cpu or 
> N
> % ram". what real process is that? they don't know. because procps tools will
> not do what you want and thus the average person will become confused and find
> anything using efl like this to be horribly hard to work with.
>
> if top, htop, ps, killall, etc. don't work out of the box, it isby everyone
> (except yours) definition... a nightmare. i've messed with this before and it
> does not work across all the tools because of where they source command (and
> that can change based on config and cmdline options too).

As said, this is just a matter of alias to be documented. I don't
think it is so much of a big deal.

>> > 4. generally the issue of complexity in our build requires for portability
>> > etc.
>> >
>> > #4 isn't something we can solve right now, but has a better solution if we
>> > #go
>> > for a greater internal redesign. but not today. some other day. we have to
>> > live with what we have right now.
>>
>> Hum ? How ? I don't see how we can have good portability without a
>> complex build system. Would be interested to know more by what you
>> mean here !
>
> we can isolate the portability layers in a much smaller area and always 
> provide
> a portable interface wrapped on top of the real os one. currently our
> portability code is scattered all through efl. it's not in one place. by
> merging it into one location we'll be able to simplify it too so in the end we
> just have some "efl port sys" lib that provides an "always works" set of
> library calls and everything above that is 100% portable and never changes
> platform to platform.

We kind of have that and kind of not. The issue is that depending on
how far from an Unix system an OS is the deeper the change are.
Windows require a base layer like Evil to handle things, most RTOS
would also require something like that, while Mac OS X doesn't but
will require alternate code for display, input, c&p and drag&drop.
Moving everything down to a very low level means that even for Unix we
need to abstract all this things into a lower layer. I am not to sure
of the benefit and that it would work. Can we make xlib call looks
lik

Re: [E-devel] [RFC] One binary to rule them all, packagers opinion needed

2016-10-26 Thread Cedric BAIL
On Tue, Oct 25, 2016 at 10:14 PM, Vincent Torri  wrote:
> On Wed, Oct 26, 2016 at 6:42 AM, Carsten Haitzler  
> wrote:
>> On Wed, 26 Oct 2016 04:50:54 +0200 Vincent Torri  
>> said:
>>> On Wed, Oct 26, 2016 at 2:17 AM, Carsten Haitzler 
>>> wrote:
>>> > On Tue, 25 Oct 2016 14:32:29 -0700 Cedric BAIL  said:
>>> >> On Mon, Oct 24, 2016 at 10:31 PM, Carsten Haitzler 
>>> >> wrote:
>>> >> > On Fri, 21 Oct 2016 15:14:20 -0700 Cedric BAIL 
>>> >> > said:
>>> >> >
>>> >> > i've been mulling this. i followed the feedback so far. basically 2 
>>> >> > main
>>> >> > things:
>>> >> >
>>> >> > 1. this is intended to improve performance. especially startup times.
>>> >> > 2. this is highly problematic in terms of portability and is going to
>>> >> > create lots of code and build paths.
>>> >>
>>> >> It won't create lots of code and build paths. In fact it doesn't even
>>> >> need two build paths. It just needs to uses all .la files for building
>>> >> quicklaunch and can be rolled in, in parallel to current system. Just
>>> >> the link of the quicklaunch binary would be different. Next step would
>>> >> be to make a build option that setup symlink to that binary. Finally
>>> >> that option would be the default, likely only afffecting the install
>>> >> process. I don't think that create a lots of code (There should be no
>>> >> code change) and build paths change at all.
>>> >
>>> > why are you doing a symlink if its JUST a quicklaunch binary change (that
>>> > statically compiles all of efl into it)?
>>> >
>>> > you are trying to replace all of libevas.so.1, libeina.so.1, etc. with
>>> > symlinks TO this quicklaunch binary ... to retain binary compatibility. 
>>> > you
>>> > cant have the .so's AND this ql binary both have the same set of symbols.
>>> > asking for trouble there.
>>> >
>>> > but to USe this binaries HAVE to be PIe and this makes for a non-portable
>>> > pain in the arse of creating apps. which is why i did .so's for 
>>> > quicklaunch
>>> > before.. because it also works with dll's on windows. PIE does not. not
>>> > that i could find.
>>> >
>>> >> > 3. this makes debugging and other things a nightmare (ps names are all
>>> >> > the same .. well depending on tool etc.)
>>> >>
>>> >> This is exagerated. Again just need to pass the right command line to
>>> >> ps/top and problem is solved. Can easily be documented and we can also
>>> >> provide a script that does it until we provide some nicer application
>>> >> there.
>>> >
>>> > i mean simple user debugging. someone runs ps or top and all they see is 
>>> > 20
>>> > processes called "quicklaunch". because depending on the ps tool it may 
>>> > use
>>> > one proc field or another. so a user goes "quicklaunch process is using N%
>>> > cpu or N % ram". what real process is that? they don't know. because 
>>> > procps
>>> > tools will not do what you want and thus the average person will become
>>> > confused and find anything using efl like this to be horribly hard to work
>>> > with.
>>> >
>>> > if top, htop, ps, killall, etc. don't work out of the box, it isby 
>>> > everyone
>>> > (except yours) definition... a nightmare. i've messed with this before and
>>> > it does not work across all the tools because of where they source command
>>> > (and that can change based on config and cmdline options too).
>>> >
>>> >> > 4. generally the issue of complexity in our build requires for
>>> >> > portability etc.
>>> >> >
>>> >> > #4 isn't something we can solve right now, but has a better solution if
>>> >> > #we go
>>> >> > for a greater internal redesign. but not today. some other day. we have
>>> >> > to live with what we have right now.
>>> >>
>>> >> Hum ? How ? I don't see how we can have good portability without a
>>> >> complex build system. Would be interested to know more by what you
>>> >> mean here !
>>> >
>>> > we can isolate the portability layers in a much smaller area and always
>>> > provide a portable interface wrapped on top of the real os one. currently
>>> > our portability code is scattered all through efl. it's not in one place. 
>>> > by
>>> > merging it into one location we'll be able to simplify it too so in the 
>>> > end
>>> > we just have some "efl port sys" lib that provides an "always works" set 
>>> > of
>>> > library calls and everything above that is 100% portable and never changes
>>> > platform to platform.
>>> >
>>> >> > i am always for improvements. but this really makes this method a very
>>> >> > very very hard ask to do this. i've thought about it and i think this 
>>> >> > is
>>> >> > far TOO radical a change as it means different execution methods, 
>>> >> > library
>>> >> > production, linking and so much more os by os. it's kind of insane 
>>> >> > though
>>> >> > theoretically doable on *nix. i've checked and PIE seems to be urtterly
>>> >> > unportable (windows can't do it based on my reading). the proposal 
>>> >> > would
>>> >> > be workable ONLY if we could do it unversally so it wouldn't bitrot and
>>> >> > it'd

Re: [E-devel] [RFC] One binary to rule them all, packagers opinion needed

2016-10-25 Thread Vincent Torri
On Wed, Oct 26, 2016 at 6:42 AM, Carsten Haitzler  wrote:
> On Wed, 26 Oct 2016 04:50:54 +0200 Vincent Torri  
> said:
>
>> On Wed, Oct 26, 2016 at 2:17 AM, Carsten Haitzler 
>> wrote:
>> > On Tue, 25 Oct 2016 14:32:29 -0700 Cedric BAIL  said:
>> >
>> >> On Mon, Oct 24, 2016 at 10:31 PM, Carsten Haitzler 
>> >> wrote:
>> >> > On Fri, 21 Oct 2016 15:14:20 -0700 Cedric BAIL 
>> >> > said:
>> >> >
>> >> > i've been mulling this. i followed the feedback so far. basically 2 main
>> >> > things:
>> >> >
>> >> > 1. this is intended to improve performance. especially startup times.
>> >> > 2. this is highly problematic in terms of portability and is going to
>> >> > create lots of code and build paths.
>> >>
>> >> It won't create lots of code and build paths. In fact it doesn't even
>> >> need two build paths. It just needs to uses all .la files for building
>> >> quicklaunch and can be rolled in, in parallel to current system. Just
>> >> the link of the quicklaunch binary would be different. Next step would
>> >> be to make a build option that setup symlink to that binary. Finally
>> >> that option would be the default, likely only afffecting the install
>> >> process. I don't think that create a lots of code (There should be no
>> >> code change) and build paths change at all.
>> >
>> > why are you doing a symlink if its JUST a quicklaunch binary change (that
>> > statically compiles all of efl into it)?
>> >
>> > you are trying to replace all of libevas.so.1, libeina.so.1, etc. with
>> > symlinks TO this quicklaunch binary ... to retain binary compatibility. you
>> > cant have the .so's AND this ql binary both have the same set of symbols.
>> > asking for trouble there.
>> >
>> > but to USe this binaries HAVE to be PIe and this makes for a non-portable
>> > pain in the arse of creating apps. which is why i did .so's for quicklaunch
>> > before.. because it also works with dll's on windows. PIE does not. not
>> > that i could find.
>> >
>> >> > 3. this makes debugging and other things a nightmare (ps names are all
>> >> > the same .. well depending on tool etc.)
>> >>
>> >> This is exagerated. Again just need to pass the right command line to
>> >> ps/top and problem is solved. Can easily be documented and we can also
>> >> provide a script that does it until we provide some nicer application
>> >> there.
>> >
>> > i mean simple user debugging. someone runs ps or top and all they see is 20
>> > processes called "quicklaunch". because depending on the ps tool it may use
>> > one proc field or another. so a user goes "quicklaunch process is using N%
>> > cpu or N % ram". what real process is that? they don't know. because procps
>> > tools will not do what you want and thus the average person will become
>> > confused and find anything using efl like this to be horribly hard to work
>> > with.
>> >
>> > if top, htop, ps, killall, etc. don't work out of the box, it isby everyone
>> > (except yours) definition... a nightmare. i've messed with this before and
>> > it does not work across all the tools because of where they source command
>> > (and that can change based on config and cmdline options too).
>> >
>> >> > 4. generally the issue of complexity in our build requires for
>> >> > portability etc.
>> >> >
>> >> > #4 isn't something we can solve right now, but has a better solution if
>> >> > #we go
>> >> > for a greater internal redesign. but not today. some other day. we have
>> >> > to live with what we have right now.
>> >>
>> >> Hum ? How ? I don't see how we can have good portability without a
>> >> complex build system. Would be interested to know more by what you
>> >> mean here !
>> >
>> > we can isolate the portability layers in a much smaller area and always
>> > provide a portable interface wrapped on top of the real os one. currently
>> > our portability code is scattered all through efl. it's not in one place. 
>> > by
>> > merging it into one location we'll be able to simplify it too so in the end
>> > we just have some "efl port sys" lib that provides an "always works" set of
>> > library calls and everything above that is 100% portable and never changes
>> > platform to platform.
>> >
>> >> > i am always for improvements. but this really makes this method a very
>> >> > very very hard ask to do this. i've thought about it and i think this is
>> >> > far TOO radical a change as it means different execution methods, 
>> >> > library
>> >> > production, linking and so much more os by os. it's kind of insane 
>> >> > though
>> >> > theoretically doable on *nix. i've checked and PIE seems to be urtterly
>> >> > unportable (windows can't do it based on my reading). the proposal would
>> >> > be workable ONLY if we could do it unversally so it wouldn't bitrot and
>> >> > it'd work. this is actually why quicklaunch did .so's instead of PIE
>> >> > because that WORKS portably
>> >>
>> >> Windows is anyway another platform with a lot of specificity.
>> >> Quicklaunch will never work there as there is 

Re: [E-devel] [RFC] One binary to rule them all, packagers opinion needed

2016-10-25 Thread The Rasterman
On Wed, 26 Oct 2016 04:50:54 +0200 Vincent Torri  said:

> On Wed, Oct 26, 2016 at 2:17 AM, Carsten Haitzler 
> wrote:
> > On Tue, 25 Oct 2016 14:32:29 -0700 Cedric BAIL  said:
> >
> >> On Mon, Oct 24, 2016 at 10:31 PM, Carsten Haitzler 
> >> wrote:
> >> > On Fri, 21 Oct 2016 15:14:20 -0700 Cedric BAIL 
> >> > said:
> >> >
> >> > i've been mulling this. i followed the feedback so far. basically 2 main
> >> > things:
> >> >
> >> > 1. this is intended to improve performance. especially startup times.
> >> > 2. this is highly problematic in terms of portability and is going to
> >> > create lots of code and build paths.
> >>
> >> It won't create lots of code and build paths. In fact it doesn't even
> >> need two build paths. It just needs to uses all .la files for building
> >> quicklaunch and can be rolled in, in parallel to current system. Just
> >> the link of the quicklaunch binary would be different. Next step would
> >> be to make a build option that setup symlink to that binary. Finally
> >> that option would be the default, likely only afffecting the install
> >> process. I don't think that create a lots of code (There should be no
> >> code change) and build paths change at all.
> >
> > why are you doing a symlink if its JUST a quicklaunch binary change (that
> > statically compiles all of efl into it)?
> >
> > you are trying to replace all of libevas.so.1, libeina.so.1, etc. with
> > symlinks TO this quicklaunch binary ... to retain binary compatibility. you
> > cant have the .so's AND this ql binary both have the same set of symbols.
> > asking for trouble there.
> >
> > but to USe this binaries HAVE to be PIe and this makes for a non-portable
> > pain in the arse of creating apps. which is why i did .so's for quicklaunch
> > before.. because it also works with dll's on windows. PIE does not. not
> > that i could find.
> >
> >> > 3. this makes debugging and other things a nightmare (ps names are all
> >> > the same .. well depending on tool etc.)
> >>
> >> This is exagerated. Again just need to pass the right command line to
> >> ps/top and problem is solved. Can easily be documented and we can also
> >> provide a script that does it until we provide some nicer application
> >> there.
> >
> > i mean simple user debugging. someone runs ps or top and all they see is 20
> > processes called "quicklaunch". because depending on the ps tool it may use
> > one proc field or another. so a user goes "quicklaunch process is using N%
> > cpu or N % ram". what real process is that? they don't know. because procps
> > tools will not do what you want and thus the average person will become
> > confused and find anything using efl like this to be horribly hard to work
> > with.
> >
> > if top, htop, ps, killall, etc. don't work out of the box, it isby everyone
> > (except yours) definition... a nightmare. i've messed with this before and
> > it does not work across all the tools because of where they source command
> > (and that can change based on config and cmdline options too).
> >
> >> > 4. generally the issue of complexity in our build requires for
> >> > portability etc.
> >> >
> >> > #4 isn't something we can solve right now, but has a better solution if
> >> > #we go
> >> > for a greater internal redesign. but not today. some other day. we have
> >> > to live with what we have right now.
> >>
> >> Hum ? How ? I don't see how we can have good portability without a
> >> complex build system. Would be interested to know more by what you
> >> mean here !
> >
> > we can isolate the portability layers in a much smaller area and always
> > provide a portable interface wrapped on top of the real os one. currently
> > our portability code is scattered all through efl. it's not in one place. by
> > merging it into one location we'll be able to simplify it too so in the end
> > we just have some "efl port sys" lib that provides an "always works" set of
> > library calls and everything above that is 100% portable and never changes
> > platform to platform.
> >
> >> > i am always for improvements. but this really makes this method a very
> >> > very very hard ask to do this. i've thought about it and i think this is
> >> > far TOO radical a change as it means different execution methods, library
> >> > production, linking and so much more os by os. it's kind of insane though
> >> > theoretically doable on *nix. i've checked and PIE seems to be urtterly
> >> > unportable (windows can't do it based on my reading). the proposal would
> >> > be workable ONLY if we could do it unversally so it wouldn't bitrot and
> >> > it'd work. this is actually why quicklaunch did .so's instead of PIE
> >> > because that WORKS portably
> >>
> >> Windows is anyway another platform with a lot of specificity.
> >> Quicklaunch will never work there as there is no equivalent to fork
> >> anyway. Emulating what PIE allow is also mostly impossible as
> >
> > actually it does work. fork works. it's emulated and expensive, bit it
> > WORKS. 

Re: [E-devel] [RFC] One binary to rule them all, packagers opinion needed

2016-10-25 Thread Vincent Torri
On Wed, Oct 26, 2016 at 2:17 AM, Carsten Haitzler  wrote:
> On Tue, 25 Oct 2016 14:32:29 -0700 Cedric BAIL  said:
>
>> On Mon, Oct 24, 2016 at 10:31 PM, Carsten Haitzler 
>> wrote:
>> > On Fri, 21 Oct 2016 15:14:20 -0700 Cedric BAIL  said:
>> >
>> > i've been mulling this. i followed the feedback so far. basically 2 main
>> > things:
>> >
>> > 1. this is intended to improve performance. especially startup times.
>> > 2. this is highly problematic in terms of portability and is going to 
>> > create
>> > lots of code and build paths.
>>
>> It won't create lots of code and build paths. In fact it doesn't even
>> need two build paths. It just needs to uses all .la files for building
>> quicklaunch and can be rolled in, in parallel to current system. Just
>> the link of the quicklaunch binary would be different. Next step would
>> be to make a build option that setup symlink to that binary. Finally
>> that option would be the default, likely only afffecting the install
>> process. I don't think that create a lots of code (There should be no
>> code change) and build paths change at all.
>
> why are you doing a symlink if its JUST a quicklaunch binary change (that
> statically compiles all of efl into it)?
>
> you are trying to replace all of libevas.so.1, libeina.so.1, etc. with 
> symlinks
> TO this quicklaunch binary ... to retain binary compatibility. you cant have
> the .so's AND this ql binary both have the same set of symbols. asking for
> trouble there.
>
> but to USe this binaries HAVE to be PIe and this makes for a non-portable pain
> in the arse of creating apps. which is why i did .so's for quicklaunch 
> before..
> because it also works with dll's on windows. PIE does not. not that i could
> find.
>
>> > 3. this makes debugging and other things a nightmare (ps names are all the
>> > same .. well depending on tool etc.)
>>
>> This is exagerated. Again just need to pass the right command line to
>> ps/top and problem is solved. Can easily be documented and we can also
>> provide a script that does it until we provide some nicer application
>> there.
>
> i mean simple user debugging. someone runs ps or top and all they see is 20
> processes called "quicklaunch". because depending on the ps tool it may use 
> one
> proc field or another. so a user goes "quicklaunch process is using N% cpu or 
> N
> % ram". what real process is that? they don't know. because procps tools will
> not do what you want and thus the average person will become confused and find
> anything using efl like this to be horribly hard to work with.
>
> if top, htop, ps, killall, etc. don't work out of the box, it isby everyone
> (except yours) definition... a nightmare. i've messed with this before and it
> does not work across all the tools because of where they source command (and
> that can change based on config and cmdline options too).
>
>> > 4. generally the issue of complexity in our build requires for portability
>> > etc.
>> >
>> > #4 isn't something we can solve right now, but has a better solution if we
>> > #go
>> > for a greater internal redesign. but not today. some other day. we have to
>> > live with what we have right now.
>>
>> Hum ? How ? I don't see how we can have good portability without a
>> complex build system. Would be interested to know more by what you
>> mean here !
>
> we can isolate the portability layers in a much smaller area and always 
> provide
> a portable interface wrapped on top of the real os one. currently our
> portability code is scattered all through efl. it's not in one place. by
> merging it into one location we'll be able to simplify it too so in the end we
> just have some "efl port sys" lib that provides an "always works" set of
> library calls and everything above that is 100% portable and never changes
> platform to platform.
>
>> > i am always for improvements. but this really makes this method a very very
>> > very hard ask to do this. i've thought about it and i think this is far TOO
>> > radical a change as it means different execution methods, library
>> > production, linking and so much more os by os. it's kind of insane though
>> > theoretically doable on *nix. i've checked and PIE seems to be urtterly
>> > unportable (windows can't do it based on my reading). the proposal would be
>> > workable ONLY if we could do it unversally so it wouldn't bitrot and it'd
>> > work. this is actually why quicklaunch did .so's instead of PIE because
>> > that WORKS portably
>>
>> Windows is anyway another platform with a lot of specificity.
>> Quicklaunch will never work there as there is no equivalent to fork
>> anyway. Emulating what PIE allow is also mostly impossible as
>
> actually it does work. fork works. it's emulated and expensive, bit it WORKS.
> it means you have an already "partially launched" app around. if we had a fork
> POOL sitting around "ready to go" and they get ipc'd the command to run... 
> it'd
> work the same on windows and on *nix. it'd be faster on both becaus

Re: [E-devel] [RFC] One binary to rule them all, packagers opinion needed

2016-10-25 Thread The Rasterman
On Tue, 25 Oct 2016 14:32:29 -0700 Cedric BAIL  said:

> On Mon, Oct 24, 2016 at 10:31 PM, Carsten Haitzler 
> wrote:
> > On Fri, 21 Oct 2016 15:14:20 -0700 Cedric BAIL  said:
> >
> > i've been mulling this. i followed the feedback so far. basically 2 main
> > things:
> >
> > 1. this is intended to improve performance. especially startup times.
> > 2. this is highly problematic in terms of portability and is going to create
> > lots of code and build paths.
> 
> It won't create lots of code and build paths. In fact it doesn't even
> need two build paths. It just needs to uses all .la files for building
> quicklaunch and can be rolled in, in parallel to current system. Just
> the link of the quicklaunch binary would be different. Next step would
> be to make a build option that setup symlink to that binary. Finally
> that option would be the default, likely only afffecting the install
> process. I don't think that create a lots of code (There should be no
> code change) and build paths change at all.

why are you doing a symlink if its JUST a quicklaunch binary change (that
statically compiles all of efl into it)?

you are trying to replace all of libevas.so.1, libeina.so.1, etc. with symlinks
TO this quicklaunch binary ... to retain binary compatibility. you cant have
the .so's AND this ql binary both have the same set of symbols. asking for
trouble there.

but to USe this binaries HAVE to be PIe and this makes for a non-portable pain
in the arse of creating apps. which is why i did .so's for quicklaunch before..
because it also works with dll's on windows. PIE does not. not that i could
find.

> > 3. this makes debugging and other things a nightmare (ps names are all the
> > same .. well depending on tool etc.)
> 
> This is exagerated. Again just need to pass the right command line to
> ps/top and problem is solved. Can easily be documented and we can also
> provide a script that does it until we provide some nicer application
> there.

i mean simple user debugging. someone runs ps or top and all they see is 20
processes called "quicklaunch". because depending on the ps tool it may use one
proc field or another. so a user goes "quicklaunch process is using N% cpu or N
% ram". what real process is that? they don't know. because procps tools will
not do what you want and thus the average person will become confused and find
anything using efl like this to be horribly hard to work with.

if top, htop, ps, killall, etc. don't work out of the box, it isby everyone
(except yours) definition... a nightmare. i've messed with this before and it
does not work across all the tools because of where they source command (and
that can change based on config and cmdline options too).

> > 4. generally the issue of complexity in our build requires for portability
> > etc.
> >
> > #4 isn't something we can solve right now, but has a better solution if we
> > #go
> > for a greater internal redesign. but not today. some other day. we have to
> > live with what we have right now.
> 
> Hum ? How ? I don't see how we can have good portability without a
> complex build system. Would be interested to know more by what you
> mean here !

we can isolate the portability layers in a much smaller area and always provide
a portable interface wrapped on top of the real os one. currently our
portability code is scattered all through efl. it's not in one place. by
merging it into one location we'll be able to simplify it too so in the end we
just have some "efl port sys" lib that provides an "always works" set of
library calls and everything above that is 100% portable and never changes
platform to platform.

> > i am always for improvements. but this really makes this method a very very
> > very hard ask to do this. i've thought about it and i think this is far TOO
> > radical a change as it means different execution methods, library
> > production, linking and so much more os by os. it's kind of insane though
> > theoretically doable on *nix. i've checked and PIE seems to be urtterly
> > unportable (windows can't do it based on my reading). the proposal would be
> > workable ONLY if we could do it unversally so it wouldn't bitrot and it'd
> > work. this is actually why quicklaunch did .so's instead of PIE because
> > that WORKS portably
> 
> Windows is anyway another platform with a lot of specificity.
> Quicklaunch will never work there as there is no equivalent to fork
> anyway. Emulating what PIE allow is also mostly impossible as

actually it does work. fork works. it's emulated and expensive, bit it WORKS.
it means you have an already "partially launched" app around. if we had a fork
POOL sitting around "ready to go" and they get ipc'd the command to run... it'd
work the same on windows and on *nix. it'd be faster on both because when an
app runs, the init/liking phase is already done by a process that is sitting as
a hot spare ready to go.

so ql dlopen()'s the apps' DLL (as now it has to be a dll and not an exe) and
the app i

Re: [E-devel] [RFC] One binary to rule them all, packagers opinion needed

2016-10-25 Thread Cedric BAIL
On Mon, Oct 24, 2016 at 10:31 PM, Carsten Haitzler  wrote:
> On Fri, 21 Oct 2016 15:14:20 -0700 Cedric BAIL  said:
>
> i've been mulling this. i followed the feedback so far. basically 2 main 
> things:
>
> 1. this is intended to improve performance. especially startup times.
> 2. this is highly problematic in terms of portability and is going to create
> lots of code and build paths.

It won't create lots of code and build paths. In fact it doesn't even
need two build paths. It just needs to uses all .la files for building
quicklaunch and can be rolled in, in parallel to current system. Just
the link of the quicklaunch binary would be different. Next step would
be to make a build option that setup symlink to that binary. Finally
that option would be the default, likely only afffecting the install
process. I don't think that create a lots of code (There should be no
code change) and build paths change at all.

> 3. this makes debugging and other things a nightmare (ps names are all the
> same .. well depending on tool etc.)

This is exagerated. Again just need to pass the right command line to
ps/top and problem is solved. Can easily be documented and we can also
provide a script that does it until we provide some nicer application
there.

> 4. generally the issue of complexity in our build requires for portability 
> etc.
>
> #4 isn't something we can solve right now, but has a better solution if we go
> for a greater internal redesign. but not today. some other day. we have to 
> live
> with what we have right now.

Hum ? How ? I don't see how we can have good portability without a
complex build system. Would be interested to know more by what you
mean here !

> i am always for improvements. but this really makes this method a very very
> very hard ask to do this. i've thought about it and i think this is far TOO
> radical a change as it means different execution methods, library production,
> linking and so much more os by os. it's kind of insane though theoretically
> doable on *nix. i've checked and PIE seems to be urtterly unportable (windows
> can't do it based on my reading). the proposal would be workable ONLY if we
> could do it unversally so it wouldn't bitrot and it'd work. this is actually
> why quicklaunch did .so's instead of PIE because that WORKS portably

Windows is anyway another platform with a lot of specificity.
Quicklaunch will never work there as there is no equivalent to fork
anyway. Emulating what PIE allow is also mostly impossible as
initialization of a library is different as what a binary require
(Even with ALSR). Anyway we already have different code path/build
differrence for Windows and Linux and this one is not a new one. As
in, it won't increase the difference much.

As for the change, they will be the same for all Unix. It is a
compilation option on just the binary plus a static linking of all efl
to it (basically an ifdef with a lot a +=). So I disagree here with
your assesment of the complexity introduced in our build system. The
main change is going to be on install which will be made by doing
symlink to that executable.

> so here is what i think is sane:
>
> 1. merge libraries aggressively. this reduces linking time BETWEEN efl libs 
> and
> thus an efl lib .so when loaded has the libs that were merged already linked
> together. i propose we try and get down to maybe 3 or 4 .so's this will close
> the gap.
>
> how do we make this portable? well on *nix we can install symlinks from our
> old .so major versions TO the new merged ones. but what on windows? the best i
> can think of for windows is produce "empty" dll's that ONLY contain like a
> dummy function and the correct linking to other efl libs they depend on eg if
> we merged eina, eo, ecore, efl into "efl" then eina depends on efl, eo, depend
> on efl and ecore depends on efl. thus link any one of these and you got your
> symbols from before plus more. this solution ALSO works on *nix ... so we 
> could
> use it as a start with symlinks being an optimization of it. yes it means 2
> install paths unfortunately. we COULD do it as a post-install that "rm's"
> the .so's we installed and replaces them by symlinks which makes this kind of
> sane to keep around.

Wouldn't that not work due to DSO ? No idea if that would work with
Windows. Also, I am not to sure it would improve things that much as
you still need to load a library, agreed an empty one, but still need
to load one. It will also be a lot more work than my proposed change
as it require to shuffle all the code around and create a set of new
empty libraries.

> 2. move quicklaunch further down to core (efl core) so its not only up in elm
> land. this would make it a core capability. we STILL should load .so's/dylibs
> or dll's if there, and try PIE binaries... but we should work here on windows
> too. make it a core feature low down the stack

We are already doing PIE binary. As stated above Windows can never
have quicklaunch in any form (No fork, and li

Re: [E-devel] [RFC] One binary to rule them all, packagers opinion needed

2016-10-24 Thread The Rasterman
On Fri, 21 Oct 2016 15:14:20 -0700 Cedric BAIL  said:

i've been mulling this. i followed the feedback so far. basically 2 main things:

1. this is intended to improve performance. especially startup times.
2. this is highly problematic in terms of portability and is going to create
lots of code and build paths.
3. this makes debugging and other things a nightmare (ps names are all the
same .. well depending on tool etc.)
4. generally the issue of complexity in our build requires for portability etc.

#4 isn't something we can solve right now, but has a better solution if we go
for a greater internal redesign. but not today. some other day. we have to live
with what we have right now.

i am always for improvements. but this really makes this method a very very
very hard ask to do this. i've thought about it and i think this is far TOO
radical a change as it means different execution methods, library production,
linking and so much more os by os. it's kind of insane though theoretically
doable on *nix. i've checked and PIE seems to be urtterly unportable (windows
can't do it based on my reading). the proposal would be workable ONLY if we
could do it unversally so it wouldn't bitrot and it'd work. this is actually
why quicklaunch did .so's instead of PIE because that WORKS portably

so here is what i think is sane:

1. merge libraries aggressively. this reduces linking time BETWEEN efl libs and
thus an efl lib .so when loaded has the libs that were merged already linked
together. i propose we try and get down to maybe 3 or 4 .so's this will close
the gap.

how do we make this portable? well on *nix we can install symlinks from our
old .so major versions TO the new merged ones. but what on windows? the best i
can think of for windows is produce "empty" dll's that ONLY contain like a
dummy function and the correct linking to other efl libs they depend on eg if
we merged eina, eo, ecore, efl into "efl" then eina depends on efl, eo, depend
on efl and ecore depends on efl. thus link any one of these and you got your
symbols from before plus more. this solution ALSO works on *nix ... so we could
use it as a start with symlinks being an optimization of it. yes it means 2
install paths unfortunately. we COULD do it as a post-install that "rm's"
the .so's we installed and replaces them by symlinks which makes this kind of
sane to keep around.

2. move quicklaunch further down to core (efl core) so its not only up in elm
land. this would make it a core capability. we STILL should load .so's/dylibs
or dll's if there, and try PIE binaries... but we should work here on windows
too. make it a core feature low down the stack

3. use quicklaunch mode for e. since efl will be there then this will work.
this does not MEAN we have to use it for all apps nor does it mean we MUST use
it for e... but this would help

these above should get almost all the benefit of the PIE thing with the least
of the downsides. we still have ps name issues though. :( we need to dig more
to try our best to make this "ok" but this means we still work normally. as
long as the "quicklaunch" binary uses very few efl symbols, loading efl libs
and linking will be a much lower cost as we do less intra-lib linking and
minimal app <-> lib linking. in fact we could make a single libefl.so as a
build option if symlinks and dependency .so's as above work. this should be
almost the same cost as the pie binary proposal but is portable.

> Hello,
> 
> Before I embark on a crazy idea that may just break everything, I
> would like to get some feedback. So one of the problem we are facing
> with EFL is that with all those separated library we end up with some
> serious time during application startup dedicated to linking. A work
> around has been quicklaunch, but it is mostly unused. Also it does
> only improve things once it has started, not much during startup time
> where you still have to do all the linking.
> 
> With PIE and -rdynamic that we use today on quicklaunch binary, we use
> dlopen to get symbol from it and load this binary as if they were
> library... So maybe we can actually use that same mechanism to
> actually statically link efl with the quicklaunch server binary and
> make all efl .so library just a symlink to that binary. Now,
> enlightenment could actually try to rely on quicklaunch to start
> itself and start other application. This should speed up boot time and
> application start up time. The reason to make it the default way of
> doing things is to make sure that it is maintained and work.
> 
> Now some of the drawback. First it is a trick, meaning most people
> that will try to dig in will get confused at first on what is going on
> and we need to document it. Building EFL is going to become even more
> complex (I don't know yet how to generate the proper symlink), let's
> enjoy more of the autofoo dark art. All binary will happear as if they
> are just a fork of enlightenment and you will need to use some flags
> to ps/top and friend

Re: [E-devel] [RFC] One binary to rule them all, packagers opinion needed

2016-10-24 Thread Cedric BAIL
On Mon, Oct 24, 2016 at 1:11 AM, Stefan Schmidt  wrote:
> Hello.
>
> On 22/10/16 00:53, Cedric BAIL wrote:
>> On Fri, Oct 21, 2016 at 3:31 PM, Stefan Schmidt  
>> wrote:
>>> On 22/10/16 00:14, Cedric BAIL wrote:
 Before I embark on a crazy idea that may just break everything, I
 would like to get some feedback. So one of the problem we are facing
 with EFL is that with all those separated library we end up with some
 serious time during application startup dedicated to linking. A work
 around has been quicklaunch, but it is mostly unused. Also it does
 only improve things once it has started, not much during startup time
 where you still have to do all the linking.

 With PIE and -rdynamic that we use today on quicklaunch binary, we use
 dlopen to get symbol from it and load this binary as if they were
 library... So maybe we can actually use that same mechanism to
 actually statically link efl with the quicklaunch server binary and
 make all efl .so library just a symlink to that binary. Now,
 enlightenment could actually try to rely on quicklaunch to start
 itself and start other application. This should speed up boot time and
 application start up time. The reason to make it the default way of
 doing things is to make sure that it is maintained and work.
>>>
>>> Are there actual numbers about speed improvement? Are we really needed
>>> this speedup so badly? As you can already see from this two sentences
>>> I'm not really in favor of it. See below for some arguments.
>>
>> Yes, it does, but really depends on your hardware.
>
> And by making it the default your are forcing this quite ugly change to
> all EFL users while only certain hardware setups would really see a
> significant benefit.

Well, the pay off on startup is paying a lot more on the lower end of
the spectrum for sure, but the memory saving will pay off for
everyone. Statically linking efl and initializing them once for the
entire system, means that a lot of the memory consumption issue we
see, like the eo one, would not be a problem anymore. This also would
include loading the system theme once and avoid duplicating that data
across the system. Overall everyone benefit, just the biggest visible
change are obviously on the lower end if you want to notice it (EFL
application on my laptop would never come close to the memory
consumption of Firefox !).

>>   For example, on
>> Raspberry Pi out of the 4s it takes to startup elemines, 1s can be
>> saved by quicklaunch. We are talking of a 25% improvement here. It
>> will also likely push us to improve further quicklaunch
>> infrastructure.
>
> 4 seconds?? Full 4 seconds to get started? I have a hard time to believe
> that. Maybe some of the system configuration is badly? Really slow SD
> card? And anyway, what does elimines do the other 3 seconds of startup?

Yes, Raspberry Pi is slow. SD is slow. The other hardware we have in
mind is max three times faster. And yes, we are mostly targeting the
lower end of the spectrum.

Also no elemines doesn't do the other 3 seconds. It spend part of its
time reading configuration, decompressing the theme, loading jpeg and
connecting to X. Basically 80 to 90% of the time is spend in efl
itself.

> Does other efl apps have the same problem? Terminology? Rage?
> You are asking for a drastic change with quite some downsides here so I
> hope it is not just based on data from one app in one hardware
> configuration. :)

Bigger application like Terminology take much longer to start. I have
no profiled them to tell exactly where the times goes, but for sure
the first 3s are identical. Terminology has a special mode to have one
process for all session and any further start is blazingly fast. Which
is the situation we want for all application without specific code
change per application.

>   We should be able to preconnect to X/Wayland and save
>> for the new process that is starting. We should also be able to pre
>> load the theme which would also save a lot of memory as those data
>> would be shared among all process. Elementary should be able to pre
>> load profile too and save that to every process. So first step is a
>> 25% win for sure. Further down the line, I bet we can save up to 60%
>> of our startup time. Basically some people are trying to push E/EFL
>> even further into smaller embeded device and they are requesting our
>> assistance.
>
> You are asking for it as default! Not as some way to make EFL better
> suited for specific scenarios. A big difference in my eyes. I understand
> the not being tested problem well enough (I deal with not normally
> tested code paths myself during all the QA work), but that should not
> mean we make something very specific our default. Default should be
> generic. e are not enabling architecture based compiler optimizations
> either but leave that to the user.

I am afraid it will bit rot to much. Also I think it would deliver
enough improvement for ever

Re: [E-devel] [RFC] One binary to rule them all, packagers opinion needed

2016-10-24 Thread Stefan Schmidt
Hello.

On 22/10/16 00:53, Cedric BAIL wrote:
> On Fri, Oct 21, 2016 at 3:31 PM, Stefan Schmidt  
> wrote:
>> On 22/10/16 00:14, Cedric BAIL wrote:
>>> Before I embark on a crazy idea that may just break everything, I
>>> would like to get some feedback. So one of the problem we are facing
>>> with EFL is that with all those separated library we end up with some
>>> serious time during application startup dedicated to linking. A work
>>> around has been quicklaunch, but it is mostly unused. Also it does
>>> only improve things once it has started, not much during startup time
>>> where you still have to do all the linking.
>>>
>>> With PIE and -rdynamic that we use today on quicklaunch binary, we use
>>> dlopen to get symbol from it and load this binary as if they were
>>> library... So maybe we can actually use that same mechanism to
>>> actually statically link efl with the quicklaunch server binary and
>>> make all efl .so library just a symlink to that binary. Now,
>>> enlightenment could actually try to rely on quicklaunch to start
>>> itself and start other application. This should speed up boot time and
>>> application start up time. The reason to make it the default way of
>>> doing things is to make sure that it is maintained and work.
>>
>> Are there actual numbers about speed improvement? Are we really needed
>> this speedup so badly? As you can already see from this two sentences
>> I'm not really in favor of it. See below for some arguments.
>
> Yes, it does, but really depends on your hardware.

And by making it the default your are forcing this quite ugly change to 
all EFL users while only certain hardware setups would really see a 
significant benefit.

  For example, on
> Raspberry Pi out of the 4s it takes to startup elemines, 1s can be
> saved by quicklaunch. We are talking of a 25% improvement here. It
> will also likely push us to improve further quicklaunch
> infrastructure.

4 seconds?? Full 4 seconds to get started? I have a hard time to believe 
that. Maybe some of the system configuration is badly? Really slow SD 
card? And anyway, what does elimines do the other 3 seconds of startup?

Does other efl apps have the same problem? Terminology? Rage?
You are asking for a drastic change with quite some downsides here so I 
hope it is not just based on data from one app in one hardware 
configuration. :)

  We should be able to preconnect to X/Wayland and save
> for the new process that is starting. We should also be able to pre
> load the theme which would also save a lot of memory as those data
> would be shared among all process. Elementary should be able to pre
> load profile too and save that to every process. So first step is a
> 25% win for sure. Further down the line, I bet we can save up to 60%
> of our startup time. Basically some people are trying to push E/EFL
> even further into smaller embeded device and they are requesting our
> assistance.


You are asking for it as default! Not as some way to make EFL better 
suited for specific scenarios. A big difference in my eyes. I understand 
the not being tested problem well enough (I deal with not normally 
tested code paths myself during all the QA work), but that should not 
mean we make something very specific our default. Default should be 
generic. e are not enabling architecture based compiler optimizations 
either but leave that to the user.

>>> Now some of the drawback. First it is a trick, meaning most people
>>> that will try to dig in will get confused at first on what is going on
>>> and we need to document it. Building EFL is going to become even more
>>> complex (I don't know yet how to generate the proper symlink), let's
>>> enjoy more of the autofoo dark art.
>>
>> To be honest here, this one alone is a killer in my opinion. What we
>> have is already complex enough. I often enough find myself in situation
>> where I bang my head against the wall until I get the system to do what
>> I want.
>
> Yes, that is not going to improve this way for sure.

I your proposal we would just need to live with this?

>>>   All binary will happear as if they
>>> are just a fork of enlightenment and you will need to use some flags
>>> to ps/top and friends to ask them to read /proc to get the new command
>>> line otherwise all binary have the same name.
>>
>> And that one is the nail in the coffin in my opinion.
>>
>>> I think that quicklaunch will require also to be improved by being
>>> made more robust/with a larger set of feature (nicely opposing goal).
>>> Eventually it should handle application restart for example (What
>>> enlightenment_start does today)... which annoy me a bit. Also we would
>>> likely be on a path to reimplement systemd --user here. Something I
>>> have tried to avoid for some time.
>>>
>>> Ok, does anyone see some serious blocker to this idea ? Impact on
>>> packager to much ? Something I missed ? Something that need to be
>>> clarified ?
>>
>> I have a hard time to see that this drastic change is real

Re: [E-devel] [RFC] One binary to rule them all, packagers opinion needed

2016-10-22 Thread Simon Lees


On 10/22/2016 09:23 AM, Cedric BAIL wrote:
> On Fri, Oct 21, 2016 at 3:31 PM, Stefan Schmidt  
> wrote:
>> On 22/10/16 00:14, Cedric BAIL wrote:
>>> Before I embark on a crazy idea that may just break everything, I
>>> would like to get some feedback. So one of the problem we are facing
>>> with EFL is that with all those separated library we end up with some
>>> serious time during application startup dedicated to linking. A work
>>> around has been quicklaunch, but it is mostly unused. Also it does
>>> only improve things once it has started, not much during startup time
>>> where you still have to do all the linking.
>>>
>>> With PIE and -rdynamic that we use today on quicklaunch binary, we use
>>> dlopen to get symbol from it and load this binary as if they were
>>> library... So maybe we can actually use that same mechanism to
>>> actually statically link efl with the quicklaunch server binary and
>>> make all efl .so library just a symlink to that binary. Now,
>>> enlightenment could actually try to rely on quicklaunch to start
>>> itself and start other application. This should speed up boot time and
>>> application start up time. The reason to make it the default way of
>>> doing things is to make sure that it is maintained and work.
>>
>> Are there actual numbers about speed improvement? Are we really needed
>> this speedup so badly? As you can already see from this two sentences
>> I'm not really in favor of it. See below for some arguments.
> 
> Yes, it does, but really depends on your hardware. For example, on
> Raspberry Pi out of the 4s it takes to startup elemines, 1s can be
> saved by quicklaunch. We are talking of a 25% improvement here. It
> will also likely push us to improve further quicklaunch
> infrastructure. We should be able to preconnect to X/Wayland and save
> for the new process that is starting. We should also be able to pre
> load the theme which would also save a lot of memory as those data
> would be shared among all process. Elementary should be able to pre
> load profile too and save that to every process. So first step is a
> 25% win for sure. Further down the line, I bet we can save up to 60%
> of our startup time. Basically some people are trying to push E/EFL
> even further into smaller embeded device and they are requesting our
> assistance.
> 
>>> Now some of the drawback. First it is a trick, meaning most people
>>> that will try to dig in will get confused at first on what is going on
>>> and we need to document it. Building EFL is going to become even more
>>> complex (I don't know yet how to generate the proper symlink), let's
>>> enjoy more of the autofoo dark art.
>>
>> To be honest here, this one alone is a killer in my opinion. What we
>> have is already complex enough. I often enough find myself in situation
>> where I bang my head against the wall until I get the system to do what
>> I want.
> 
> Yes, that is not going to improve this way for sure.
> 
>>>   All binary will happear as if they
>>> are just a fork of enlightenment and you will need to use some flags
>>> to ps/top and friends to ask them to read /proc to get the new command
>>> line otherwise all binary have the same name.
>>
>> And that one is the nail in the coffin in my opinion.
>>
>>> I think that quicklaunch will require also to be improved by being
>>> made more robust/with a larger set of feature (nicely opposing goal).
>>> Eventually it should handle application restart for example (What
>>> enlightenment_start does today)... which annoy me a bit. Also we would
>>> likely be on a path to reimplement systemd --user here. Something I
>>> have tried to avoid for some time.
>>>
>>> Ok, does anyone see some serious blocker to this idea ? Impact on
>>> packager to much ? Something I missed ? Something that need to be
>>> clarified ?
>>
>> I have a hard time to see that this drastic change is really worth some
>> improved launch time. Especially when you keep in mind that we are
>> planning to merge some of our libs anyway thus reducing the amount of
>> linking.
> 
> I do think we will never save as much nor open ourself to all the
> potential optimization that quicklaunch provide b merging a few
> library. I don't have comparison there, but from above number you can
> guess that it will be below 25%. Also this approach is I think nicer
> as we do not need to forcefully merge library into weird name that
> have less sense and endup with endless debate, like what does efl_core
> integrate and so on. The only merge I would still go with is
> efl/eo/ecore as they are clearly linked strongly by behavior now.
> 
I think that given the long term plan has been to merge libraries, its
only really worth while if the speedup vs the merged libraries is
significant and if it really is only systems like rpi's that are having
enough issues for it to be worth it maybe it should be a configure
option for people building on those systems so general purpose distro's
stay as is, the downside of that though is 

Re: [E-devel] [RFC] One binary to rule them all, packagers opinion needed

2016-10-21 Thread Cedric BAIL
On Fri, Oct 21, 2016 at 3:31 PM, Stefan Schmidt  wrote:
> On 22/10/16 00:14, Cedric BAIL wrote:
>> Before I embark on a crazy idea that may just break everything, I
>> would like to get some feedback. So one of the problem we are facing
>> with EFL is that with all those separated library we end up with some
>> serious time during application startup dedicated to linking. A work
>> around has been quicklaunch, but it is mostly unused. Also it does
>> only improve things once it has started, not much during startup time
>> where you still have to do all the linking.
>>
>> With PIE and -rdynamic that we use today on quicklaunch binary, we use
>> dlopen to get symbol from it and load this binary as if they were
>> library... So maybe we can actually use that same mechanism to
>> actually statically link efl with the quicklaunch server binary and
>> make all efl .so library just a symlink to that binary. Now,
>> enlightenment could actually try to rely on quicklaunch to start
>> itself and start other application. This should speed up boot time and
>> application start up time. The reason to make it the default way of
>> doing things is to make sure that it is maintained and work.
>
> Are there actual numbers about speed improvement? Are we really needed
> this speedup so badly? As you can already see from this two sentences
> I'm not really in favor of it. See below for some arguments.

Yes, it does, but really depends on your hardware. For example, on
Raspberry Pi out of the 4s it takes to startup elemines, 1s can be
saved by quicklaunch. We are talking of a 25% improvement here. It
will also likely push us to improve further quicklaunch
infrastructure. We should be able to preconnect to X/Wayland and save
for the new process that is starting. We should also be able to pre
load the theme which would also save a lot of memory as those data
would be shared among all process. Elementary should be able to pre
load profile too and save that to every process. So first step is a
25% win for sure. Further down the line, I bet we can save up to 60%
of our startup time. Basically some people are trying to push E/EFL
even further into smaller embeded device and they are requesting our
assistance.

>> Now some of the drawback. First it is a trick, meaning most people
>> that will try to dig in will get confused at first on what is going on
>> and we need to document it. Building EFL is going to become even more
>> complex (I don't know yet how to generate the proper symlink), let's
>> enjoy more of the autofoo dark art.
>
> To be honest here, this one alone is a killer in my opinion. What we
> have is already complex enough. I often enough find myself in situation
> where I bang my head against the wall until I get the system to do what
> I want.

Yes, that is not going to improve this way for sure.

>>   All binary will happear as if they
>> are just a fork of enlightenment and you will need to use some flags
>> to ps/top and friends to ask them to read /proc to get the new command
>> line otherwise all binary have the same name.
>
> And that one is the nail in the coffin in my opinion.
>
>> I think that quicklaunch will require also to be improved by being
>> made more robust/with a larger set of feature (nicely opposing goal).
>> Eventually it should handle application restart for example (What
>> enlightenment_start does today)... which annoy me a bit. Also we would
>> likely be on a path to reimplement systemd --user here. Something I
>> have tried to avoid for some time.
>>
>> Ok, does anyone see some serious blocker to this idea ? Impact on
>> packager to much ? Something I missed ? Something that need to be
>> clarified ?
>
> I have a hard time to see that this drastic change is really worth some
> improved launch time. Especially when you keep in mind that we are
> planning to merge some of our libs anyway thus reducing the amount of
> linking.

I do think we will never save as much nor open ourself to all the
potential optimization that quicklaunch provide b merging a few
library. I don't have comparison there, but from above number you can
guess that it will be below 25%. Also this approach is I think nicer
as we do not need to forcefully merge library into weird name that
have less sense and endup with endless debate, like what does efl_core
integrate and so on. The only merge I would still go with is
efl/eo/ecore as they are clearly linked strongly by behavior now.
-- 
Cedric BAIL

--
Check out the vibrant tech community on one of the world's most 
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
___
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel


Re: [E-devel] [RFC] One binary to rule them all, packagers opinion needed

2016-10-21 Thread Al Poole
I don't know how portable that would be??? I don't think /proc is available
by default on most non-Linux Unix-like OS I use...

On Fri, Oct 21, 2016 at 11:31 PM, Stefan Schmidt 
wrote:

> Hello.
>
> On 22/10/16 00:14, Cedric BAIL wrote:
> > Hello,
> >
> > Before I embark on a crazy idea that may just break everything, I
> > would like to get some feedback. So one of the problem we are facing
> > with EFL is that with all those separated library we end up with some
> > serious time during application startup dedicated to linking. A work
> > around has been quicklaunch, but it is mostly unused. Also it does
> > only improve things once it has started, not much during startup time
> > where you still have to do all the linking.
> >
> > With PIE and -rdynamic that we use today on quicklaunch binary, we use
> > dlopen to get symbol from it and load this binary as if they were
> > library... So maybe we can actually use that same mechanism to
> > actually statically link efl with the quicklaunch server binary and
> > make all efl .so library just a symlink to that binary. Now,
> > enlightenment could actually try to rely on quicklaunch to start
> > itself and start other application. This should speed up boot time and
> > application start up time. The reason to make it the default way of
> > doing things is to make sure that it is maintained and work.
>
> Are there actual numbers about speed improvement? Are we really needed
> this speedup so badly? As you can already see from this two sentences
> I'm not really in favor of it. See below for some arguments.
>
> > Now some of the drawback. First it is a trick, meaning most people
> > that will try to dig in will get confused at first on what is going on
> > and we need to document it. Building EFL is going to become even more
> > complex (I don't know yet how to generate the proper symlink), let's
> > enjoy more of the autofoo dark art.
>
> To be honest here, this one alone is a killer in my opinion. What we
> have is already complex enough. I often enough find myself in situation
> where I bang my head against the wall until I get the system to do what
> I want.
>
>   All binary will happear as if they
> > are just a fork of enlightenment and you will need to use some flags
> > to ps/top and friends to ask them to read /proc to get the new command
> > line otherwise all binary have the same name.
>
> And that one is the nail in the coffin in my opinion.
>
> > I think that quicklaunch will require also to be improved by being
> > made more robust/with a larger set of feature (nicely opposing goal).
> > Eventually it should handle application restart for example (What
> > enlightenment_start does today)... which annoy me a bit. Also we would
> > likely be on a path to reimplement systemd --user here. Something I
> > have tried to avoid for some time.
> >
> > Ok, does anyone see some serious blocker to this idea ? Impact on
> > packager to much ? Something I missed ? Something that need to be
> > clarified ?
>
> I have a hard time to see that this drastic change is really worth some
> improved launch time. Especially when you keep in mind that we are
> planning to merge some of our libs anyway thus reducing the amount of
> linking.
>
> regards
> Stefan Schmidt
>
> 
> --
> Check out the vibrant tech community on one of the world's most
> engaging tech sites, SlashDot.org! http://sdm.link/slashdot
> ___
> enlightenment-devel mailing list
> enlightenment-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
>
--
Check out the vibrant tech community on one of the world's most 
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
___
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel


Re: [E-devel] [RFC] One binary to rule them all, packagers opinion needed

2016-10-21 Thread Stefan Schmidt
Hello.

On 22/10/16 00:14, Cedric BAIL wrote:
> Hello,
>
> Before I embark on a crazy idea that may just break everything, I
> would like to get some feedback. So one of the problem we are facing
> with EFL is that with all those separated library we end up with some
> serious time during application startup dedicated to linking. A work
> around has been quicklaunch, but it is mostly unused. Also it does
> only improve things once it has started, not much during startup time
> where you still have to do all the linking.
>
> With PIE and -rdynamic that we use today on quicklaunch binary, we use
> dlopen to get symbol from it and load this binary as if they were
> library... So maybe we can actually use that same mechanism to
> actually statically link efl with the quicklaunch server binary and
> make all efl .so library just a symlink to that binary. Now,
> enlightenment could actually try to rely on quicklaunch to start
> itself and start other application. This should speed up boot time and
> application start up time. The reason to make it the default way of
> doing things is to make sure that it is maintained and work.

Are there actual numbers about speed improvement? Are we really needed 
this speedup so badly? As you can already see from this two sentences 
I'm not really in favor of it. See below for some arguments.

> Now some of the drawback. First it is a trick, meaning most people
> that will try to dig in will get confused at first on what is going on
> and we need to document it. Building EFL is going to become even more
> complex (I don't know yet how to generate the proper symlink), let's
> enjoy more of the autofoo dark art.

To be honest here, this one alone is a killer in my opinion. What we 
have is already complex enough. I often enough find myself in situation 
where I bang my head against the wall until I get the system to do what 
I want.

  All binary will happear as if they
> are just a fork of enlightenment and you will need to use some flags
> to ps/top and friends to ask them to read /proc to get the new command
> line otherwise all binary have the same name.

And that one is the nail in the coffin in my opinion.

> I think that quicklaunch will require also to be improved by being
> made more robust/with a larger set of feature (nicely opposing goal).
> Eventually it should handle application restart for example (What
> enlightenment_start does today)... which annoy me a bit. Also we would
> likely be on a path to reimplement systemd --user here. Something I
> have tried to avoid for some time.
>
> Ok, does anyone see some serious blocker to this idea ? Impact on
> packager to much ? Something I missed ? Something that need to be
> clarified ?

I have a hard time to see that this drastic change is really worth some 
improved launch time. Especially when you keep in mind that we are 
planning to merge some of our libs anyway thus reducing the amount of 
linking.

regards
Stefan Schmidt

--
Check out the vibrant tech community on one of the world's most 
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
___
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel


[E-devel] [RFC] One binary to rule them all, packagers opinion needed

2016-10-21 Thread Cedric BAIL
Hello,

Before I embark on a crazy idea that may just break everything, I
would like to get some feedback. So one of the problem we are facing
with EFL is that with all those separated library we end up with some
serious time during application startup dedicated to linking. A work
around has been quicklaunch, but it is mostly unused. Also it does
only improve things once it has started, not much during startup time
where you still have to do all the linking.

With PIE and -rdynamic that we use today on quicklaunch binary, we use
dlopen to get symbol from it and load this binary as if they were
library... So maybe we can actually use that same mechanism to
actually statically link efl with the quicklaunch server binary and
make all efl .so library just a symlink to that binary. Now,
enlightenment could actually try to rely on quicklaunch to start
itself and start other application. This should speed up boot time and
application start up time. The reason to make it the default way of
doing things is to make sure that it is maintained and work.

Now some of the drawback. First it is a trick, meaning most people
that will try to dig in will get confused at first on what is going on
and we need to document it. Building EFL is going to become even more
complex (I don't know yet how to generate the proper symlink), let's
enjoy more of the autofoo dark art. All binary will happear as if they
are just a fork of enlightenment and you will need to use some flags
to ps/top and friends to ask them to read /proc to get the new command
line otherwise all binary have the same name.

I think that quicklaunch will require also to be improved by being
made more robust/with a larger set of feature (nicely opposing goal).
Eventually it should handle application restart for example (What
enlightenment_start does today)... which annoy me a bit. Also we would
likely be on a path to reimplement systemd --user here. Something I
have tried to avoid for some time.

Ok, does anyone see some serious blocker to this idea ? Impact on
packager to much ? Something I missed ? Something that need to be
clarified ?

Have fun,
-- 
Cedric BAIL

--
Check out the vibrant tech community on one of the world's most 
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
___
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel