eclipse / ice

This project has moved to: https://gitlab.eclipse.org/eclipse/ice/ice
https://gitlab.eclipse.org/eclipse/ice/ice
Eclipse Public License 1.0
30 stars 55 forks source link

Summer 2020 Code Audit (Next) #466

Closed dbluhm closed 3 years ago

dbluhm commented 4 years ago

This is an accounting of code currently present in the Next branch. I've enumerated below each of the bundles at the root of the repository along with a short description, notes on what it supersedes or is superseded by, and any other relevant bits I find. In many cases my assessment is likely to be incomplete; please add any clarifications you might have in comments. I may also tag authors for comments on specific bundles when it is clear that they were the most recent person to touch that particular bundle.

Summer 2020 Code Audit (Next)

Bundles

Removed Bundles

The following bundles have been removed as a result of this audit.

Bundle Notes (from Jay)
org.eclipse.ice.aggregator outdated, superseded by new build
org.eclipse.ice.classifier not needed
org.eclipse.ice.persistence.xml (although this has some of my favorite code in it...) superseded by persistence annotations
org.eclipse.ice.tests.persistence.xml same
schema not needed
org.eclipse.ice.item superseded by tasks, I will look in the 2.2 release branch if I need to pull requirements
org.eclipse.ice.tests.item same
org.eclipse.ice.datastructures mostly replaced already by dev and data, I will look in a branch if I need to pull requirements

org.eclipse.ice.tests.datastructures org.eclipse.ice.tests.core.jaxrs | outdated, I'll pull it from a branch if I need it org.eclipse.ice.target.oxygen | outdated org.eclipse.ice.service | outdated, I'll pull it from a branch org.eclipse.ice.projectgeneration | outdated and superseded mostly by archetypes. We should add project generation capability to org.eclipse.ice.dev.ide (renamed from org.eclipse.ice.developer, see below), but we can pull that code from a release branch as needed. org.eclipse.ice.parent | outdated as written org.eclipse.ice.modeling | I think we can delete this since it was a dummy project. It will still be in the Git history if we or John need it. org.eclipse.ice.core | Needed, but I can pull from a branch when the time is write and favor more of a rewrite approach. I just need the reference. org.eclipse.ice.tests.core | Same

Recent Activity Summary

Bundle Recently modified?
org.eclipse.ice.aggregator :x:
org.eclipse.ice.archetypes :heavy_check_mark:
org.eclipse.ice.build :heavy_check_mark:
org.eclipse.ice.classifier :x:
org.eclipse.ice.commands.swt :heavy_check_mark:
org.eclipse.ice.commands :heavy_check_mark:
org.eclipse.ice.core.test :x:
org.eclipse.ice.core :x:
org.eclipse.ice.data :heavy_check_mark:
org.eclipse.ice.datastructures :heavy_minus_sign:
org.eclipse.ice.demo :heavy_check_mark:
org.eclipse.ice.dev :heavy_check_mark:
org.eclipse.ice.developer :x:
org.eclipse.ice.filesimulation :x:
org.eclipse.ice.io :x:
org.eclipse.ice.item :heavy_minus_sign:
org.eclipse.ice.modeling :heavy_check_mark:
org.eclipse.ice.parent :x:
org.eclipse.ice.persistence.xml :x:
org.eclipse.ice.projectgeneration :x:
org.eclipse.ice.renderer :heavy_check_mark:
org.eclipse.ice.servicetester :x:
org.eclipse.ice.target.oxygen :heavy_minus_sign:
org.eclipse.ice.tasks :heavy_check_mark:
org.eclipse.ice.tests.core.jaxrs :x:
org.eclipse.ice.tests.core :x:
org.eclipse.ice.tests.datastructures :x:
org.eclipse.ice.tests.integration :heavy_check_mark:
org.eclipse.ice.tests.io :x:
org.eclipse.ice.tests.item :x:
org.eclipse.ice.tests.persistence.xml :x:
org.eclipse.ice.tests :heavy_check_mark:
org.eclipse.ice.workflow :heavy_check_mark:
rse-render-client-test :heavy_check_mark:

Analysis

org.eclipse.ice.archetypes

Maven project generators. Recent activity: This is a new addition in active use. Supersedes: org.eclipse.ice.projectgeneration?


org.eclipse.ice.aggregator

No Java source code, appears to be just a multi-module Maven project for builds, maybe documentation? Recent activity: 3+ Years since any activity. Superseded by: org.eclipse.ice.build?


org.eclipse.ice.build

Multi-module maven project for building Eclipse ICE. Recent activity: This is a new addition in active use. Supersedes: org.eclipse.ice.parent, org.eclipse.ice.aggregator(?)


org.eclipse.ice.classifier

Contains only a build.properties file. Commit message: "Adding some boilerplate for the ParserGenerator plugins." Purpose is unclear to me. Recent activity: No activity in 5+ years. Superseded by: ?


org.eclipse.ice.commands.swt

Extension for commands enabling password authentication through Java's standard widget toolkit (SWT). Recent activity: This is a new addition in active use. Supersedes: ?


org.eclipse.ice.commands

API for setting up and running jobs on a remote host or locally. Includes file transfer. Recent activity: This is a new addition in active use. Supersedes: org.eclipse.ice.filesimulation (sort of), others?


org.eclipse.ice.core.test

Contains only defaultUser/default/.project. Purpose is unclear to me. Recent activity: No activity in ~4 years. Superseded by: ?


org.eclipse.ice.core

"The Core class is responsible for implementing and/or managing all of the data and workflow management capabilities of ICE." Overhaul to use new task infrastructure is due for this bundle according to @jayjaybillings. May just be that interfaces only survive. Recent activity: Some activity ~3 years ago. Superseded by: ?


org.eclipse.ice.data

Some core interfaces and helpers for managing data? IDataElement, IPersistenceHandler, and JavascriptValidator recently moved to this bundle but remaining elements are older, potentially obsolete? Recent activity: Recent activity on the above mentioned Interfaces, others haven't seen activity in ~2 years. Supersedes: ? Superseded by: ?


org.eclipse.ice.datastructures

Core data structures for ICE 2.0, including Form. I believe @jayjaybillings mentioned that the majority of this will be replaced and has already partially been replaced by DataElements. Recent activity: Minor recent changes, no significant work in 3-5 years. Superseded by: DataElement at least partially, WebForm(?)


org.eclipse.ice.demo

Demonstrations of ICE functionality. Seems to include demos for fern(?), launcher, model, visualization and commands.

From Joe:

org.eclipse.ice.demo is indeed intended to be demo examples of how to use various APIs. I added some examples for Commands, but none of the others are in use as far as I know (and I think they don't build anyway by default).

Recent activity: @osbornjd recently added commands demo but other demos are 4-5 years old. Superseded by: Old demos are likely to just be replaced in place?


org.eclipse.ice.dev

Main bundle for a lot of our recent development on code generation through annotation processors and other utilities. Recent activity: In active use. Supersedes: org.eclipse.ice.datastructures (?), org.eclipse.ice.projectgeneration (?), org.eclipse.ice.from (?), org.eclipse.ice.developer(?)


org.eclipse.ice.developer

Appears to be Eclipse tools (actions and menus) for working with ICE. Recent activity: No activity in ~3 years. Superseded by: ?


org.eclipse.ice.filesimulation

From @jayjaybillings: "An old test bundle. It is the third oldest bundle in all of ICE. It is used to cake the file command on bash to test Items. It's due for an overhaul for Tasks." The next iteration will likely take advantage of the commands API. Recent activity: No activity in ~3 years. Superseded by: org.eclipse.ice.tasks, org.eclipse.ice.commands


org.eclipse.ice.io

Several readers and writers for different kinds of configuration files formats as well as HDF5. Recent activity: No activity in ~5 years. Superseded by: PersistenceHandlers to an extent?


org.eclipse.ice.item

"The Item class is responsible for carrying out activities necessary to perform certain tasks with ICE." Recent activity: No activity in ~5 years for most of the code, some activity between 3-4 years ago. Superseded by: org.eclipse.ice.tasks?


org.eclipse.ice.modeling

Seems to be a mostly empty project.

From Joe:

org.eclipse.ice.modeling was a project that John Hetrick and I added as a dummy example to get him accustomed to git, but I don't think he has worked on it at all since taking a more active role in the neutrons projects. We can probably delete this, unless @jayjaybillings has objections or intends for it to be worked on.

Recent activity: Recently committed by @osbornjd Supersedes: ?


org.eclipse.ice.parent

Seems to be a maven multi-module project used in building ICE. Recent activity: No activity in ~3 years. Superseded by: org.eclipse.ice.build


org.eclipse.ice.persistence.xml

XML Persistence providers Recent activity: No activity in ~4 years. Superseded by: PersistenceHandlers?


org.eclipse.ice.projectgeneration

Eclipse project generators. Recent activity: No activity in ~4 years. Superseded by: org.eclipse.ice.archetypes? Archetypes fill the same function but are not exclusive to Eclipse. Maven archetypes can be used by Eclipse in maven project creation.


org.eclipse.ice.renderer

Renderer for DataElements. Mostly a prototype at the moment but functional and in use in the rse-renderer-client-test. Recent activity: In active use. Supersedes: ?


org.eclipse.ice.servicetester

Only one class in this bundle, ServiceTester. "Used to test the OSGi/Equinox Declarative Services setup." Recent activity: No activity in ~5 years. Superseded by: ?


org.eclipse.ice.target.oxygen

Support for Eclipse Oxygen? Recent activity: Recently changed but git history is proving hard to follow. Unclear what degree of changes were made recently. Superseded by: ?


org.eclipse.ice.tasks

"Tasks are executed by workflows, either fully automated workflows (such as ICE workflows) or workflows controlled by intelligent agents without full automation." Recent activity: In active development by @jayjaybillings. Supersedes: org.eclipse.ice.item?


org.eclipse.ice.tests.core.jaxrs

"This is a simple test class to check the JAXRS interface bindings in ICE." Recent activity: No activity in ~3 years. Superseded by: ?


org.eclipse.ice.tests.core

Tests for org.eclipse.ice.core. Recent activity: No activity in ~3 years. Superseded by: ?


org.eclipse.ice.tests.datastructures

Tests for org.eclipse.ice.datastructures. Recent activity: No activity in ~3 years. Superseded by: ?


org.eclipse.ice.tests.integration

Integration tests for Eclipse ICE. Integration tests for several bundles are collected here to be isolated from the dependency-free unit tests. Recent activity: In active use. Supersedes: ?


org.eclipse.ice.tests.io

Tests for org.eclipse.ice.io. Recent activity: No activity in ~3 years. Superseded by: ?


org.eclipse.ice.tests.item

Tests for org.eclipse.ice.item. Recent activity: No activity in ~3 years. Superseded by: ?


org.eclipse.ice.tests.persistence.xml

Tests for org.eclipse.ice.persistence.xml. Recent activity: No activity in ~3 years. Superseded by: ?


org.eclipse.ice.tests

Test utilities that can be pulled in by unit and integration tests alike. Provides helpers for easily working with test data and test configurations. Recent activity: In active use. Supersedes: ?


org.eclipse.ice.workflow

Appears to be a WIP replacement workflow engine? Calling in @jayjaybillings for comment. Recent activity: Saw significant activity about a year ago. Supersedes: org.eclipse.ice.item?


rse-renderer-client-test

A prototype web form project using Vaadin to render DataElements. Recent activity: Under active development as part of WebForm work. Supersedes: ?


Other

osbornjd commented 4 years ago

Two comments:

  1. org.eclipse.ice.demo is indeed intended to be demo examples of how to use various APIs. I added some examples for Commands, but none of the others are in use as far as I know (and I think they don't build anyway by default).

  2. org.eclipse.ice.modeling was a project that John Hetrick and I added as a dummy example to get him accustomed to git, but I don't think he has worked on it at all since taking a more active role in the neutrons projects. We can probably delete this, unless @jayjaybillings has objections or intends for it to be worked on.

jayjaybillings commented 4 years ago

Thanks for kicking this off. Here are my thoughts. I should also apologize for the mess. When I started rebuilding the code, I deleted most of it but left what I thought would be useful. I didn't look very deep and I didn't come back for a second pass to clear out more junk.

BTW - we need to make a tag before we delete all of this stuff.

We can safely delete the following bundles/packages:

I suggest we update org.eclipse.ice.developer with new Eclipse extensions and replace the old ones. This is a value added activity for us just like the project generators and annotation processors. Some of the tools in here are really handy, like the project check-out and import actions. In principle this should be as simple as updating and rebuilding bundle, although I would recommend renaming it to org.eclipse.ice.dev.ide.

org.eclipse.ice.demo is as @osbornjd says. And, as @dbluhm says, we'll just update and clean this bundle up over time.

org.eclipse.ice.workflow is as @dbluhm says and it will see more updates as I start putting in the Workflow classes on top of Tasks.

org.eclipse.ice.tests should probably get a .util suffix or something to indicate what it actually does.

Let's keep org.eclipse.ice.io and its tests for now. I imagine that we will soon be working with CSV, INI, and other types of data, so it would be good to rebuild this bundle instead of reimplementing those. Likewise, we may find that we want to move some I/O utilities in here, like JSON support, etc. Architecturally this could be the lowest bundle in our stack.

org.eclipse.ice.filesimulation is a keeper. It's been my main testing bundle for job launches for a decade and will get some updates soon. In our current vernacular, it is a Task that I use for testing and in-situ debugging (meaning it can be called while the code is running in production).

I think that's everything. I'll start working on this, but feel free to jump in if my new gig keeps me out of the loop for a bit. Also, I don't think a PR is needed for this.

jayjaybillings commented 4 years ago

I just deleted all of the bundles, but I accidentally did them in my tasks branch. #facepalm

jayjaybillings commented 4 years ago

I cherry-picked the commit and pushed it, but I got a weird error when I merged it back into jay/tasks:

CONFLICT (rename/delete): org.eclipse.ice.tests.item/src/org/eclipse/tests/ice/item/FakeActionFactory.java deleted in origin/next and renamed to org.eclipse.ice.tasks/src/test/java/org/eclipse/ice/tests/tasks/TestHook.java in HEAD. Version HEAD of org.eclipse.ice.tasks/src/test/java/org/eclipse/ice/tests/tasks/TestHook.java left in tree.
CONFLICT (rename/delete): org.eclipse.ice.tests.item/src/org/eclipse/tests/ice/item/ICEDatabaseValidatorTester.java deleted in origin/next and renamed to org.eclipse.ice.tasks/src/main/java/org/eclipse/ice/tasks/TaskException.java in HEAD. Version HEAD of org.eclipse.ice.tasks/src/main/java/org/eclipse/ice/tasks/TaskException.java left in tree.
CONFLICT (rename/delete): org.eclipse.ice.tests.item/src/org/eclipse/tests/ice/item/ICEDatabaseValidator.java deleted in origin/next and renamed to org.eclipse.ice.renderer/src/main/java/org/eclipse/ice/renderer/PersonEnum.java in HEAD. Version HEAD of org.eclipse.ice.renderer/src/main/java/org/eclipse/ice/renderer/PersonEnum.java left in tree.
Automatic merge failed; fix conflicts and then commit the result.

Just recording it.

jayjaybillings commented 4 years ago

Just looked at PR #457 and I see that I deleted 75k lines of code. Sweet.

dbluhm commented 3 years ago

I don't think there are any remaining action items on this so I'll go ahead and close this issue. Thanks for your help identifying everything, @jayjaybillings and @osbornjd.