Menu

Port to Free Pascal?

Ken Rushia
2007-03-31
2013-04-08
  • Ken Rushia

    Ken Rushia - 2007-03-31

    Does anyone here have experience with Free Pascal?

    http://www.freepascal.org/

    I found it while searching for ways to make Keynote work on multiple platforms.  I have no knowledge of Delphi/Pascal, but if its possible to get the current Delphi code to compile with Free Pascal, I'd be willing to break out some textbooks and learn the language.  It's open source, compiles for any OS you can think of, and is actively maintained.  Could this be what we need to revive the Keynote community?

    Here are links with Delphi compatability information:
    Lazarus for Delphi Users:  http://wiki.freepascal.org/Lazarus_For_Delphi_Users
    Code Conversion Guide:  http://wiki.freepascal.org/Code_Conversion_Guide
    Known Problems:  http://www.freepascal.org/probs.var

    Thoughts?
    - Ken

     
    • Ken Rushia

      Ken Rushia - 2007-04-03

      I've been playing around with it and so far looks promising.  Most of the Keynote 1.6.5 code compiles.  The biggest setback is the UI will need to be converted to GTK or QT.  It may compile with native Windows widgets, but that would defeat the whole purpose of using Free Pascal (which is to port it to multiple platforms).

      I honestly have no idea what the best course of action is for the UI.  I'm new to this stuff and am learning as I play with it.  I'm an embedded systems programmer, I've never done much PC application stuff.  Help would be appreciated :)

       
    • Richard Maurel

      Richard Maurel - 2007-06-08

      Hello,

        I planned to port the source code of keynote on FPC a few weeks ago, but I have no time for the moment because I am not a professionnal programmer and I am involved in another project. I just made a couple of test with some units not as far as you did. But if a professionnal programmer is interested in this project I can bring some help. Unfortunately, I don't know if I will be able to achieve this goal alone, because I know pretty well Python and a little Pascal.

       
    • Ken Rushia

      Ken Rushia - 2007-07-09

      Unfortunately I had to temporarilly abandon my work on the "Keynote the next" proposal due to lack of time.  I'm hoping to get back to this again within the next couple of weeks.

      Anyway, I think it may be a good thing that you know Python as my research boiled the "Keynote 2" approach to one of two routes.  I try to be neutral in this listing, but I can honestly say I see much more good in #2 then I do in #1.  I'm open to debate with everyone, hopefully we can come to a decision eventually.

      1. Port the old code to FPC.

      Pros:
      Since it's basically the same language, we have most of the work done.
      We'll get our multiplatform support (but we'll have to code a different UI toolkit)

      Cons:
      We're stuck with the old code.  It's showing age and has been bandaged a lot.
      Pascal isn't a common language these days.  It will be hard to get programming support.

      2. Make a new program, in a modern language (Python).

      Pros:
      Starting from scratch = cleaner code, which will likely be easier to maintain later.
      Python has a huge user base, easier to get help, plus used by other outliners (Treeline, pdesk, Gimini, ...)

      Cons:
      Initially will take longer, as we are starting from scratch (although we can borrow code bits from other apps)
      Um... it will probably be a different animal then "old" Keynote, but that may be a good thing.

       
    • Anonymous

      Anonymous - 2007-07-12

      Ken, all,

      I looked into porting Keynote to Linux a bit over a year ago. I was discouraged by the Delphi/Pascal language thing. I also had some concern that some of the third party components weren't completely free. See the directory: modified_3rdparty_units. So, I let it go. There may be no encumberances at all with these components, but there is no indication in the headers that they are unencumbered. Having been responsible for getting concurrance from about a hundred contributors to a big open source project to change the license, I know it can be a daunting task. ... the good news is that for Keynote the number of third party components is small.

      There's a lot of Pascal programmers who might be interested in persuing it. There's probably a lot more C/C++ programmers. I briefly gave thought to reimplementing Keynote by deriving a spec from the extant version, then designing and reimplementing it as a platform neutral package. ... I sat down and waited for the thought to perish. I just don't have the time to do a project of this size given everything else I'm messing with.

      I looked, briefly, at wxWidgets as a platform independent GUI framework. It has a lot going for it. Is it the right tool? Dunno. I have experience with Mozilla's NSPR component as a non-GUI platform abstraction; that might work for the non-GUI interfaces. Apache's Portable Runtime (APR) component may do as well, or better, than NSPR. There is the Nettle encryption library; it may be suitable for the AES piece.

      What I would tell you is that if you were to start/lead a project to reimplement in C++, with goals of platform independence. I'd participate.

      Regards,
      Rex "yes, it's a pseudonym" Karz

       
    • thepdaman

      thepdaman - 2007-08-02

      Why not reimplement in java?, I would help...

       
    • msel

      msel - 2007-08-10

      What about using the program "Turbo Delphi Explorer" from Borland? You can get this program free at
      http://www.codegear.com/downloads/free/turbo
      (but today i have diffculties to download the program and a key for the program)
      You have to go Keys only and then Turbo Delphi Explorer. There you can get a key (if it would work) and you can download the program.
      You can only install one turbo version on a computer not two different versions.

      I think it is much easier to adapt the program to Turbo Delphi then to Free Pascal, because Keynote was written in Pascal-Delphi.

      Greetings, Maria!

       
      • Ken Rushia

        Ken Rushia - 2007-08-10

        Part of our reason for suggesting Free Pascal was because of the multiplatform support.  Delphi is Windows only.

         
    • msel

      msel - 2007-08-10

      In this case it might be helpful to use the open source environment lazarus:

      http://wiki.lazarus.freepascal.org/Overview_of_Free_Pascal_and_Lazarus/de

      It is based on freepascal and it works on many plattform (Windows, Linux, MacOS). Also the library vcl is include (I think this is necessary to compile keynote).

      Greetings, Maria!

       
    • Richard Maurel

      Richard Maurel - 2007-08-15

        Hello krushia,

         There is an outliner enterely written in Python so you can take a look on the source code (because it is open source and Python is a script language). It's called "LEO", the URL is :

             http://webpages.charter.net/edreamleo/front.html

      Maybe it would be possible to use some portions of the code (with the author's permission of course) to build a "keynote clone". I think Python might be a good choice because it is multiplatform, very clean, and there are a lot of - a incredible bunch rather - modules, scripts, softwares etc. freely available. I can help on Python if you are the "arhitect-designer" of the project.

               Regards.

       
      • Ken Rushia

        Ken Rushia - 2007-08-15

        Thanks for the link, that one is already on my list (but you corrected my bookmark which seems to be old http://personalpages.tds.net/~edream/front.html\).  Personally, what I'd like to see is Keynote running on all the platforms I use, which are Linux, Windows, and Palm OS.  I've started experimenting with ideas, and hope to post my thoughts at some point so we can start debating (I encourage others to do the same).  Here's my list of projects I've been looking at to get coding ideas.

        These are all programmed in Python:

        TreeLine
        http://www.bellz.org/treeline/

        PDesk
        http://pdesk.sourceforge.net/drupal/

        Leo
        http://webpages.charter.net/edreamleo/front.html

        Gimini
        http://gimini.sourceforge.net/

        These run on Palm OS:

        Progect
        http://pdesk.sourceforge.net/drupal/

        These run on PocketPC:

        Tombo
        http://tombo.sourceforge.jp/En/index.html

        Pocket Freemind
        http://sourceforge.net/projects/pocketfreemind

        Noteriffic
        http://www.rudism.com/pocketpc.shtml

         
        • sracer

          sracer - 2007-08-15

          Hi Ken.  You may wish to add WikidPad to your list.  http://www.jhorman.org/wikidPad/  It is open source, written in python, and already has versions for Windows, Linux, Mac OS X.  Although it uses a wiki metaphor for the content of the nodes, It does support a tree structure that us KeyNote users are comfortable with and love.

          I've been playing around with it a for a few hours and what immediately stands out as a big plus is that by its wiki nature, all references to a keyword/node point to the same physical node.  It sounds like it is similar to KeyNotes "virtual node" feature. (I've never used virtual nodes)

          WikidPad allows for traditional tree/hierarchical access to information, but it also provides "logical" access (by way of WikiWord links)

           
          • Ken Rushia

            Ken Rushia - 2007-08-15

            Good find :)

            I probably missed this one because it got lost in all the other "wiki" projects that have popped up recently.  Will take a better look when I have the chance.

            - Ken

             
    • Richard Maurel

      Richard Maurel - 2007-08-15

        OK,

        I see you took a look to every interesting software. I think Leo is impressive but too much coding oriented. I used it a couple of time and it didn't fit me because it is not a "general purpose outliner".
        However, maybe it is a good beginning.

            Regards

        

       
    • msel

      msel - 2007-08-16

      Another alternative programming language is to use Tcl/Tk. There are some cross-plattform information manager for windows, macos and linux written in Tcl/Tk like

      Notebook Wiki
      http://notebook.wjduquette.com/index.php?title=Main_Page

      TKOutline
      http://tkoutline.sourceforge.net/wiki/

      Greetings, Maria!

       
      • sracer

        sracer - 2007-09-11

        I have been playing with TKOutline and the fork of the code, STKOutline.  Actually it isn't a bad little app.  I think I will use it for editing single outlines WITHIN KeyNote.  There are some uses where a single pane outliner is preferable.

        As for using TCL/TK for a rewrite...  TCL/TK is a language that is often overlooked.  It doesn't have the cachet that Python has, but it is equally if not a MORE capable and rich language.  TCL/TK is available on numerous platforms and there are plenty of free tools, add-ons, etc for it.  There are even a few free VisualTcl IDEs for creating graphical programs.

        I plan on taking a look at the internals of TKOutline to see how easy it will be to expand (or what if anything can be used in a possible KeyNote rewrite)

         
      • Ken Rushia

        Ken Rushia - 2007-09-12

        Tcl/Tk is nice and has its uses, but for a program like Keynote, I'd use Python instead.  The number one reason is the wealth of Python code we could borrow from other people.  I also believe Python is better suited to applications of this level, especially when you consider scripting and plugin features.  That's just my opinion :/

         
    • Richard Maurel

      Richard Maurel - 2007-09-08

        Hello,

      After a quick research I think tcl/tk is not quite useful for this kind of project. I definively prefer Python (or at least freePascal).

      I don't know if Ken is still involved in the project, I hope yes.

           Regards.

       
    • LennartAa

      LennartAa - 2007-09-10

      Python or FreePascal?

      Does anyone knows the difference in usability, speed, memory usage etc?

       

Log in to post a comment.