Re: [ANN] mc^2

2015-05-08 Thread Egmont Koblinger
On Thu, May 7, 2015 at 11:53 PM, Paul Sokolovsky pmis...@gmail.com wrote:

 Hello,

 On Thu, 7 May 2015 23:27:23 +0200
 Egmont Koblinger egm...@gmail.com wrote:

  Hi,
 
  Did you... er... did you just rewrite half of mc... adding plugins and
  stuff...??

 It would be indeed cool to remove all that gnome-ish bloat accumulated
 by decades, but - what a disappointment - home page says that to
 accomplish such feat there is no need to modify MC’s main code..

 Generally one good approach to deal with the situation would be to
 rewrite mc completely in a scripting language. Extra points for using
 language in which array indexing starts with e or pi, or going straight
 to Brainfuck. No, I'm ironic with the last sentence on Lua choice, but I
 really think the way out of the maze is rewriting mc from scratch, and
 then surely in a decent scripting language.


I was obviously exaggerating when I said Mooffie rewrote half of mc's
code.  I haven't look at the changes to the C code yet, but as some
comments on the homepage suggest, it's probably only a very small fraction
of the C code he touched and mostly pretty lightweight changes.

Have you ever seen a complete rewrite of a project (that's bigger than a
few weeks of hacking) succeed?  I have not.  This would require at least
100x (but rather 1000x) the work Mooffie has probably already spent.  There
are no engineering resources for that.  Recently I've spent about a week
rewriting the viewer, probably noone else would've done it if I hadn't.
There's a ticket to rewrite the vfs component, noone's working on that.
Regex handling should be carefully cleaned up, noone's working on that.
Tty handling is overly complicated, nobody's working on it.  But you'd
rewrite the whole project from scratch!?  And then the rewrite would be
missing tons of features because you were lazy to port them, would contain
tons of brand new bugs or bugs that had been fixed long ago.  It's pretty
much guaranteed to be a big failure -- and easily not just a failure of the
rewrite but also cause a(n even bigger) decline of the main project, as
many times you recah a point where the old project is already considered
obsolete and is unmaintained, in favor of the new one which stands on
better technical grounds, yet is totally incomplete and lacks tons of
things from the old one.

Successful redesigns almost always happen in small steps, maintaining the
usability and quality of the project throughout the steps.  You might
eventually replace nearly every component, and the road might eventually
become longer than if you had rewrote from scratch, but it's viable because
you get satisfied users and passionate developers all the way through,
rather than just hacking on something that's not used by anyone; and it's
viable because it's not risky: you can stop working on it anytime and leave
positive benefits behind rather just having wasted tons of time.

As for whether mc's core should be written in C or lua or whatever...
compiled or interpreted, strict or loose types, whatever...  My personal
preference probably doesn't matter too much, yet I'd like to quietly
mention that my last python project (port someone else's app against a new
API) got stalled in a mostly working state where the parts I've tested
work, yet the parts I haven't (because I don't know how to reach that code)
probably still call the API using its old method names, wrong order of
parameters, and nobody tells me this.  Had it been written in a compiled
language, the compiler probably would have helped me do a complete port in
the same amount of time.

As for the plugin API:  If you write the core of mc in whichever scripting
language and allow a plugin to hook up against _any_ of its
methods/variables then you discard the very basic principle that caused all
programming language to move at least slightly towards object-oriented
approach.  If you allow a plugin to do anything, it becomes a nightmare
where you can no longer perform internal refactorings because you don't
know how many 3rd party plugins you'd break, or by seeing breakages 3rd
party plugin authors would back off from the project.

On the other hand, if you define a clear API that plugins code against,
then it's not really relevant anymore whether the core and the plugins are
written in the same programming language or not.  Now, I don't know
anything about lua, but allegedly it's really good for this kind of plugin
stuff, writing hooks to a C code.

But let's put all this question aside.  We might be arguing for years what
would be the best language for mc core and what would be the best language
for the plugins, and it'd take us nowhere.  The most important factor in
the decision should be what we already have.  We can't reimplement 20 years
of work in mc core.  We might reimplement Mooffie's lua code in
python/ruby/whatever but apart from spending weeks on it, would it make it
any better?

The biggest value is that we already do have a decent mc written in C, and

Re: [ANN] mc^2

2015-05-08 Thread Egmont Koblinger
Hi,

How much work would it be to port your branch to 4.8.14 or git head
(they're pretty much the same now)?

I'd really like to use your version for daily work (and maybe even start
writing plugins) to gather feedback.  On the other hand, mc-4.8.14 contains
some of my work that I really wouldn't want to live without.  And of course
I wouldn't want to switch back-n-forth between two versions either.

Thanks a lot,
egmont


On Thu, May 7, 2015 at 10:23 PM, Mooffie moof...@gmail.com wrote:

 Hi guys!

 I've just published a branch of MC with Lua support:

   http://www.typo.co.il/~mooffie/mc-lua/docs/html/

 See the screenshots link.

 Also see the other documents link for background (especially
 HISTORY).

 Many, many tickets can be solved with mc^2, but I don't want to spam
 the ticket queue with my posts, so I've prepared a list of some such
 tickets (see other documents - TICKETS).

 (But in a few tickets I *will* comment: in tickets I believe a
 constructive discussion could ensue, or where I feel people are truly
 in need of a solution.)

 ==

 Now, I guess I'll be attacked for one reason or another. Let me save
 your time by attacking myself for you:

 ==

 Q: Is this a 'fork' of MC? Are you trying to split the community?

 A: No, this is not a fork (as per Wikipedia's definition). It's intended
to be food for thought for the MC community. My hope is that
eventually the principle behind mc^2 will be adopted by MC.

 ==

 Q: Is seems that you've invested a lot of time in this. Gosh, why
 waste human resources?! Especially on something that nobody's
 going to use?

 A: The time I waste here is negligible in comparison to the time and
efforts wasted by tens of people who have tried to contribute code
to MC over the years.

The principle behind mc^2, if adopted by MC, is going to put an end
to this waste of human resources.

 ==

 Q: But why use Lua?!?! Why not pick the language that starts
 with 'P'?! Why not make it work with any language?!??!

 A: Let's not talk about languages/VMs *right now*. Please, as much as
it's tempting.

Right now, the language is not the issue. The issue is the
principle, of having some extension language.

The language/VM is obviously something everybody will have
something to say about. You will. But not now.

If every passerby here will now emit his 2 cents opinion/rant,
it will kill the vision/project. It will start a Holy War. It will
derail the discussion from the mainroad to the gutters. It's the
least constructive thing that could happen. It means death.

In the future, when we know the principle will be regarded favorably
by MC's maintainers, we could open this issue and discuss things.

One thing's for sure: You can't give an opinion about the subject
without considering it for at least a week (or a month, I'd say).
There are various facets to consider. There are threads of thoughts
to be picked and discarded. There are insights to be acquired. You
can't just barge in with use Python!!, use Parrot!, use
GObject!. As the Chinese saying goes, Opinions are like belly
buttons: everybody has one. It should take more, much more, than
an opinion to affect the discussion.

So, again: let's not talk about languages now.

(For the record: I recorded my reasons for choosing Lua in
other documents - HISTORY.)
 ___
 mc-devel mailing list
 https://mail.gnome.org/mailman/listinfo/mc-devel

___
mc-devel mailing list
https://mail.gnome.org/mailman/listinfo/mc-devel


Re: [ANN] mc^2

2015-05-08 Thread Andrew Borodin
On Fri, 8 May 2015 15:05:33 +0300 Mooffie wrote:
 On 5/8/15, Egmont Koblinger wrote:
  How much work would it be to port your branch to 4.8.14 or git head
  (they're pretty much the same now)?
 
 Probably very little work.
 
 I'll do that sometime soon, I hope.

It would be great if you split first huge commit of branch in several small
commits. It will make the review easier.

Thanks!

-- 
A.
___
mc-devel mailing list
https://mail.gnome.org/mailman/listinfo/mc-devel


Re: [ANN] mc^2

2015-05-08 Thread Mooffie
On 5/8/15, Egmont Koblinger egm...@gmail.com wrote:

 [...] a complete rewrite [...] would require at least 100x (but
 rather 1000x) the work Mooffie has probably already spent. There are
 no engineering resources for that.
 [...]
 Successful redesigns almost always happen in small steps, maintaining
 the usability and quality of the project throughout the steps.
 [...]

Egmont,

Thanks for composing this excellent reply. I actually composed one
myself (a much, much shorter one) before going on-line. I combed it
to see what I could salvage out of it but I see that you've got all
the main points.

Now,

mc^2 isn't perfect. API in a scripting language poses many
challenges (which you mentioned, and Szabó Gergely too). These are
certainly issues we'll have to think about. It's certainly possible
that people will conclude that mc^2 in its present form is garbage,
but at least it provides us with a path we can work on.


 did you just rewrite half of mc

No, it's not a rewrite.

(That's the short answer. The sources (under the 'src/lua' tree) seem
big at first glance, but that's mainly because they have documentation
embedded in them. There are files with just 10% of actual code.)
___
mc-devel mailing list
https://mail.gnome.org/mailman/listinfo/mc-devel


Re: [ANN] mc^2

2015-05-08 Thread Mooffie
On 5/8/15, Egmont Koblinger wrote:
 How much work would it be to port your branch to 4.8.14 or git head
 (they're pretty much the same now)?

Probably very little work.

I'll do that sometime soon, I hope.
___
mc-devel mailing list
https://mail.gnome.org/mailman/listinfo/mc-devel