Hi Steve,

I don’t think anyone stated or implied that hosting the debugger service in 
separate repo would be trivial (it's not), but it _is_ a solved problem and a 
frequently used development pattern.

We can begin detangling the debugger from the daffoldil-vscode repo and 
relocate it to its new home (wherever it will be) after we release 1.2.0 of the 
VSCode extension, which we're pushing hard to have done before the end of the 
month.

On 7/20/22, 9:57 AM, "Steve Lawrence" <slawre...@apache.org> wrote:

    I don't think we necessarily need to support "daffodil dap". I think 
    this is just a nice side effect of bundling everything in the main repo. 
    But if it poses technical challenges I don't think it's worth it.

    I would like us to at least have an idea about how release/publish/VS 
    Code integration will work if we do separate repos. It doesn't sound 
    trivial to me.

    On 7/20/22 9:39 AM, Interrante, John A (GE Research, US) wrote:
    > The motivation for putting dap into the main daffodil repo is that 
bundling dap into the daffodil cli (allowing "daffodil dap" to start dap) will 
simplify configuring the VS Code debugger extension to work with different 
daffodil and dap versions.
    > 
    > I suggest that there is almost certainly a way to put dap into its own 
repo while still allowing "daffodil dap" to start a compatible dap version.  I 
will let others figure out the most optimal method, but I don't see any 
technical obstacle that would prevent "daffodil dap" from starting a compatible 
dap version and therefore simplifying configuring the VS Code debugger 
extension.
    > 
    > -----Original Message-----
    > From: Mike Beckerle <mbecke...@apache.org>
    > Sent: Wednesday, July 20, 2022 9:05 AM
    > To: dev@daffodil.apache.org
    > Subject: EXT: Re: Daffodil Debugger Scala Source Code
    > 
    > WARNING: This email originated from outside of GE. Please validate the 
sender's email address before clicking on links or attachments as they may not 
be safe.
    > 
    > I think putting dap into the main daffodil repo is a false economy.
    > Consider:
    > 
    > 1) more sbt hacks to exclude the tests of the dap from 'sbt test' and to 
add an alternative 'sbt dap:test' which runs those tests.
    > 2) that won't work with IDEs automatically, so they will be unable to run 
the dap tests without renaming directories or such.
    > (CLI has this same problem today. I do not yet have a convenient 
workaround for this, and it is a pain in the neck routinely)
    > 3) another module inside daffodil to compile when 'sbt compile' is issued.
    > So more delay in the routine edit-compile-debug cycle.
    > 4) more IDE customizations to save that extra compilation time when doing 
IDE builds.
    > 
    > The above is a huge hassle to maintain compared with one more repo that 
is completely ordinary with respect to build configuration, IDE support, etc.
    > 
    > Creating a separate repo has none of these drawbacks. 'sbt test' can work 
normally to test it. Tests live in src/test as normal. No need for special 
exclusions or sbt hackery.
    > IDEs will do the right thing by default.
    > 
    > 
    > 
    > 
    > 
    > 
    > 
    > 
    > On Tue, Jul 19, 2022 at 4:51 PM Steve Lawrence <slawre...@apache.org> 
wrote:
    > 
    >> DAP stands for Debug Adapter Protocol:
    >>
    >>     https://microsoft.github.io/debug-adapter-protocol/
    >>
    >> If the goal is to simplify development, then including the dap stuff
    >> in the main repo with the CLI would probably make things the simplest.
    >> Just
    >> run:
    >>
    >>     sbt daffodil-cli/stage
    >>
    >> in the daffodil repo, and then point VS Code to execute "daffodil dap
    >> .." using the staged files (i.e.
    >> daffodil-cli/target/universal/stage/bin/daffodil). We may need changes
    >> in the VS Code to support alternative locations of the daffodil
    >> binary, but I think that's something we want to support anyways to
    >> allow testing different versions of Daffodil without having to install
    >> a different extension.
    >>
    >> On 7/19/22 4:10 PM, Mike Beckerle wrote:
    >>> I am leaning toward a separate repo (called daffodil-dap-server)
    >>> which
    >> uses
    >>> (depends on) daffodil.
    >>> (btw: what does DAP stand for again? Daffodil Access Protocol ?)
    >>>
    >>> This is for separation of concerns. I'd like daffodil proper
    >>> libraries to be about DFDL mostly, though it does contain the basic
    >>> CLI. Things having to do with client/server and testing of the
    >>> server side in isolation,
    >> etc.
    >>> all that belongs only in the daffodil-dap-server which people fixing
    >>> ordinary DFDL/Daffodil bugs don't test when they run 'sbt test'.
    >>>
    >>> I do think the server is going to be quite coupled to Daffodil 
internals.
    >>> For example, to provide better visual animation of delimiter
    >>> scanning we will need new debug hooks providing visibility or
    >>> callbacks from those parse operations, and DAP will then want to
    >>> make this available to the vscode front end for proper
    >>> visualization. Similar story is needed around animating what goes on
    >>> with unparsing and suspend/resume of expressions, etc. I expect we
    >>> will create internal-only versions of these features before we try to 
firm up any published APIs for them.
    >>>
    >>> It is pretty important for me to be able to easily and quickly point
    >> VSCode
    >>> at a new DAP server that is depending on a locally updated daffodil.
    >>> But I think something like this is sufficiently easy:
    >>>
    >>>      ... fix a bug in daffodil then
    >>>      cd daffodil
    >>>      sbt test
    >>>      sbt publishLocal  // creates a snapshot such as 4.2.1-SNAPSHOT
    >>>      cd dap-server
    >>>      sbt test // runs test rig to check out DAP server in isolation
    >>> from front end // has dependency on daffodil 4.2.1-SNAPSHOT
    >>>      sbt package // or publishLocal or...  // has dependency on
    >>> daffodil 4.2.1-SNAPSHOT
    >>>      ... then start VSCode using updated configuration file giving
    >> dap-server
    >>> package location
    >>>
    >>>
    >>>
    >>>
    >>>
    >>> On Tue, Jul 19, 2022 at 3:13 PM Steve Lawrence
    >>> <slawre...@apache.org>
    >> wrote:
    >>>
    >>>> Some other positives if DAP were combined it into the existing CLI:
    >>>>
    >>>> There was once talk of making it so the the VS Code debugger could
    >>>> switch between different Daffodil versions. If it were part of the
    >>>> CLI, this just means downloading a new version of the Daffodil CLI
    >>>> and pointing VS Code to it--that process could either be manual or
    >>>> automated in the VS Code settings.
    >>>>
    >>>> I think this would also make it easier to test Daffodil snapshots
    >>>> with the VSCode extension? I believe the current process requires
    >>>> you to publishLocal a Daffodil snapshot, then update the
    >>>> daffodil-vscode repo (or if we split it, the daffodil-debugger
    >>>> repo) to have the snapshot version, and the build that. If it was
    >>>> all part of the CLI, you could just run "sbt stage" in the Daffodil
    >>>> repo and point VSCode to those staged files. It only avoids a
    >>>> couple extra steps, but if you do it frequently it would be nice.
    >>>>
    >>>> On 7/19/22 2:15 PM, Steve Lawrence wrote:
    >>>>> +1 to this
    >>>>>
    >>>>> I was thinking the same thing as I read this. My only thought is
    >>>>> using "daffodil dap" since the debug server is just a thing that
    >>>>> implements the DAP protocol, and theoretically it could be used
    >>>>> any any IDE that supports DAP (I think?). But the name is the easy 
part.
    >>>>>
    >>>>> My only other (minor) concern is that this pulls in a number of
    >>>>> dependencies. It's not an issue from a licensing perspective since
    >>>>> we know they are fine, but it does make the CLI release a bit
    >>>>> bigger and more to manage, e.g. lots of Cats jars. I suspect it's
    >>>>> not enough to really matter (and most of the size is probably
    >>>>> daffodil jars), but if we do go this route, during or prior to
    >>>>> migration it might be worth looking to see if anything can be
    >>>>> replaced. For example, one thing that jumps out is VSCode debugger
    >>>>> currently depends on logback for logging, but daffodil use log4j.
    >>>>>
    >>>>> The other concern is that currently the VS Code stuff can sort of
    >>>>> develop at its own pace. If we integrate the DAP portion into the
    >>>>> CLI, it means VSCode can't get DAP updates without a Daffodil
    >>>>> release. But
    >> it
    >>>>> seems DAP is fairly stable, and as long as we keep a quick release
    >> cycle
    >>>>> and plan accordingly, that shouldn't be too much of an issue.
    >>>>>
    >>>>> I would perfer this approach over creating a new repo. It's a bit
    >>>>> less to keep track of, and makes it easier to ensure we don't have
    >>>>> any breaking changes with changes to Daffodil.
    >>>>>
    >>>>> On 7/19/22 1:52 PM, Mike Beckerle wrote:
    >>>>>> I think of this as a daffodil server mode, for the front end
    >>>>>> VSCode
    >>>> stuff
    >>>>>> to use.
    >>>>>>
    >>>>>> So, is it plausable to add the code to daffodil proper. Make it a
    >>>>>> CLI command mode to start up this server, so that
    >>>>>>
    >>>>>>        daffodil vscodeServer
    >>>>>>
    >>>>>> starts it, optionally with connection options like what ports to
    >>>>>> use, etc.
    >>>>>>
    >>>>>>
    >>>>>> On Tue, Jul 19, 2022 at 1:45 PM Shane Dell <shaned...@apache.org>
    >>>> wrote:
    >>>>>>
    >>>>>>> All,
    >>>>>>>
    >>>>>>> This thread is to discuss splitting out the code for the Apache
    >>>> Daffodil
    >>>>>>> Scala Debugger from the apache/daffodil-vscode repository. The
    >>>>>>> two options would be:
    >>>>>>>
    >>>>>>> - 1.) Move the debugger source code into the apache/daffodil repo.
    >>>>>>> However,
    >>>>>>> will this work because the debugger code depends on certain
    >>>>>>> daffodil Scala libraries to be published? This is mostly an
    >>>>>>> option since both are mostly/fully Scala based.
    >>>>>>> - 2.) Create a new repo (apache/daffodil-debugger?,
    >>>>>>> apache/daffodil-debugger-scala?) where the Scala code will live.
    >>>>>>>
    >>>>>>> This would be helpful as the apache/daffodil-vscode repo is
    >>>>>>> heavily based on creating the VS Code extension for Daffodil.
    >>>>>>> With this the
    >> debugger
    >>>>>>> source code is rarely updated, when it is they are pretty minor
    >>>>>>> fixes
    >>>> or
    >>>>>>> dependency updates. Currently it is a bit of a cluster having a
    >>>>>>> mix
    >> of
    >>>>>>> node/JavaScript/TypeScript and Scala which causes an issue with
    >>>>>>> dependency bots checking as these are checking for both npm and
    >>>>>>> sbt/Scala dependencies, causing many PRs to be made. The
    >>>>>>> extension code also runs a sbt universal:packageBin command in
    >>>>>>> multiple occurences, being able
    >> to
    >>>>>>> remove this and downloading the debugger package would simplify
    >>>>>>> a
    >>>> couple
    >>>>>>> different processes for the extension.
    >>>>>>>
    >>>>>>> My personal vote is for creating a new repo called something
    >>>>>>> like
    >>>> either
    >>>>>>> apache/daffodil-debugger or apache/daffodil-debugger-scala.
    >>>>>>>
    >>>>>>> Sincerely,
    >>>>>>>
    >>>>>>> Shane Dell
    >>>>>>>
    >>>>>>
    >>>>>
    >>>>
    >>>>
    >>>
    >>
    >>



-----------------------------------------------------------------
This message and any files transmitted within are intended
solely for the addressee or its representative and may contain
company proprietary information.  If you are not the intended
recipient, notify the sender immediately and delete this
message.  Publication, reproduction, forwarding, or content
disclosure is prohibited without the consent of the original
sender and may be unlawful.

Concurrent Technologies Corporation and its Affiliates.
www.ctc.com  1-800-282-4392
-----------------------------------------------------------------

Reply via email to