Jump to: navigation, search

Difference between revisions of "Architecture Council/Minutes May 15 2008"

Line 4: Line 4:
 
|-
 
|-
 
| Date & Time:  
 
| Date & Time:  
| Thursday [[May 15, 2008]] at [http://www.timeanddate.com/worldclock/fixedtime.html?year=2008&month=5&day=15&hour=15&min=0&sec=0 1500 UTC / 0800 SFO / 1600 London / 1700 Berlin]<br>[[Image:Ical.gif]][http://www.google.com/calendar/event?action=TEMPLATE&amp;tmeid=cjdpMzIwMnN2bzQ5bGQ1cG5zbnFsbmIzbGcgbWFydGluLm9iZXJodWJlckBnbXguYXQ&amp;tmsrc=bWFydGluLm9iZXJodWJlckBnbXguYXQ iCal]
+
| Thursday [[May 15, 2008]] at [http://www.timeanddate.com/worldclock/fixedtime.html?year=2008&month=5&day=15&hour=15&min=0&sec=0 1500 UTC / 0800 SFO / 1100 Ottawa / 1600 London / 1700 Berlin]<br>[[Image:Ical.gif]][http://www.google.com/calendar/event?action=TEMPLATE&amp;tmeid=cjdpMzIwMnN2bzQ5bGQ1cG5zbnFsbmIzbGcgbWFydGluLm9iZXJodWJlckBnbXguYXQ&amp;tmsrc=bWFydGluLm9iZXJodWJlckBnbXguYXQ iCal]
 
|-
 
|-
 
| Dial-in:
 
| Dial-in:
Line 27: Line 27:
 
=== Architectural Foundations ===
 
=== Architectural Foundations ===
 
==== Dependency Injection ====
 
==== Dependency Injection ====
 +
* +1: BorisB
 
==== Too Many Listeners ====
 
==== Too Many Listeners ====
* +1: MartinO
+
* +1: MartinO, BorisB
 
==== Becoming More Asynchronous ====
 
==== Becoming More Asynchronous ====
* +1: MartinO
+
* +1: MartinO, BorisB
 
* What parts of Eclipse are Thread-safe? Is thread-safety documented everywhere?
 
* What parts of Eclipse are Thread-safe? Is thread-safety documented everywhere?
 
* Related to Jobs and Scheduling Rules issues, see below
 
* Related to Jobs and Scheduling Rules issues, see below
 
* Modal Context Dialog; SWT Dispatch Thread; WorkspaceRunnables; Executor pattern
 
* Modal Context Dialog; SWT Dispatch Thread; WorkspaceRunnables; Executor pattern
* Should there be other patterns for Concurrency than we know now (Jobs, Runnables, ISchedulingRule)
+
* Should there be other patterns for Concurrency than we know now (Jobs, Runnables, ISchedulingRule) ''Have a look at data binding's Realm class - it's a generalization of the 'UI thread' pattern: to have access to a resource belonging to a realm, you have to call it from within the realm, and the only way to get into the realm is by posting a runnable using Realm.asyncExec. This makes access to resources safe while avoiding deadlocks altogether, at the cost of more complex code if your operation needs to access resources from more than one realm. --BorisB''
 
==== Jobs and Scheduling Rules ====
 
==== Jobs and Scheduling Rules ====
 
* +1: MartinO
 
* +1: MartinO
Line 40: Line 41:
 
* It's often not documented what rules / locks a call requires
 
* It's often not documented what rules / locks a call requires
 
* If the "master Job" that's responsible for an operation requires an ISchedulingRule itself (e.g. for guaranteed sequential execution), it cannot call API functions that require other ISchedulingRule locks (because it cannot acquire them while it runs -- locks must be known before the Job runs, but it's often not known what locks will be required)
 
* If the "master Job" that's responsible for an operation requires an ISchedulingRule itself (e.g. for guaranteed sequential execution), it cannot call API functions that require other ISchedulingRule locks (because it cannot acquire them while it runs -- locks must be known before the Job runs, but it's often not known what locks will be required)
 +
==== Verboten: Spinning the event loop ====
 +
* +1: BorisB
 +
* I regularly see hard-to reproduce bugs that are caused because client code spins the event loop (e.g. by opening a blocking dialog). It would be good to have a set of rules that govern when it is ok to spin the event loop.
 +
==== Getting rid of singletons ====
 +
* +1: BorisB
 +
* Title says it all. Singletons are bad.
 
==== Role-based Access and Security ====
 
==== Role-based Access and Security ====
 
* +1: MartinO
 
* +1: MartinO
Line 46: Line 53:
 
* Related to Preference Levelling, see below
 
* Related to Preference Levelling, see below
 
==== Macro Recording and Playback ====
 
==== Macro Recording and Playback ====
* +1: MartinO
+
* +1: MartinO, BorisB
 
* Pervasive macro recording, see {{bug|8519}} vs. Editor macro recording vs. Debugger macro recording
 
* Pervasive macro recording, see {{bug|8519}} vs. Editor macro recording vs. Debugger macro recording
 
* Should everything be a command / handler / workspace operation?
 
* Should everything be a command / handler / workspace operation?
Line 73: Line 80:
  
 
=== Eclipse Application Model ===
 
=== Eclipse Application Model ===
* +1 MartinO
+
* +1 MartinO, BorisB
 
* See [[E4/Eclipse Application Model]]
 
* See [[E4/Eclipse Application Model]]
* Why are Workbench / PlatformUI / Platform not part of the initial Application Model?
+
* Why are Workbench / PlatformUI / Platform not part of the initial Application Model? ''Because they are not services in the sense that there could be alternative implementations --BorisB''
** What about SWT, Views, Widgets, Trees, Labels, ... JFace Dialogs, Fonts, Text, Editors... Perspectives... Databinding
+
** What about SWT, Views, Widgets, Trees, Labels, ... JFace Dialogs, Fonts, Text, Editors... Perspectives... Databinding ''SWT is a library, not a service that could have a different implementation. The same is true (mostly) for JFace and data binding. --BorisB''
 
** Capabilities
 
** Capabilities
 
** Content Types, Associations
 
** Content Types, Associations
Line 88: Line 95:
 
* What about the rest of OSGi (NLS, Services, Bundle States / Activator / Classloader; Log; State Location)
 
* What about the rest of OSGi (NLS, Services, Bundle States / Activator / Classloader; Log; State Location)
 
* What about standard bundle layout (related to Provisioning / Update / Plugins, Products, Features)
 
* What about standard bundle layout (related to Provisioning / Update / Plugins, Products, Features)
 
+
'' The other services listed above seem relevant, I will try to add them to [[E4/Eclipse Application Model]] before the call. --BorisB''
  
 
== Next Meeting ==
 
== Next Meeting ==
 
* [[E4/Summit]] in Ottawa May 22-23
 
* [[E4/Summit]] in Ottawa May 22-23

Revision as of 22:46, 13 May 2008

Meeting Title: Architecture Council meeting on Architectural Foundations for E4
Date & Time: Thursday May 15, 2008 at 1500 UTC / 0800 SFO / 1100 Ottawa / 1600 London / 1700 Berlin
Ical.gifiCal
Dial-in: (+1) 613.287.8000 (Ottawa and international) or
866.362.7064 (toll-free North America)
passcode 874551#

Attendees

  • Invited attendees are all EAC members as well as interested architects who know Eclipse well and want to shape its future foundations
  • Signed-up:
    • Martin Oberhuber

Agenda

  • Attendees are welcome to edit the agenda on the Wiki. Place a +1 / -1 next to an item that you would like / would not like to discuss.
  • While the meeting is ongoing and one hour after, the Wiki should not be edited except by a notes-taker to be designated during the meeting
  • After initial notes have been posted, everybody is free to edit the Wiki for corrections

Meeting Goals

  • The primary goal of this meeting is to collect topics for the upcoming E4/Summit, and gather initial opinions.

Review and Sort Agenda Items

Architectural Foundations

Dependency Injection

  • +1: BorisB

Too Many Listeners

  • +1: MartinO, BorisB

Becoming More Asynchronous

  • +1: MartinO, BorisB
  • What parts of Eclipse are Thread-safe? Is thread-safety documented everywhere?
  • Related to Jobs and Scheduling Rules issues, see below
  • Modal Context Dialog; SWT Dispatch Thread; WorkspaceRunnables; Executor pattern
  • Should there be other patterns for Concurrency than we know now (Jobs, Runnables, ISchedulingRule) Have a look at data binding's Realm class - it's a generalization of the 'UI thread' pattern: to have access to a resource belonging to a realm, you have to call it from within the realm, and the only way to get into the realm is by posting a runnable using Realm.asyncExec. This makes access to resources safe while avoiding deadlocks altogether, at the cost of more complex code if your operation needs to access resources from more than one realm. --BorisB

Jobs and Scheduling Rules

  • +1: MartinO
  • Many calls into (workspace, or other contributed) API require downstream locks via ISchedulingRule
  • It's often not documented what rules / locks a call requires
  • If the "master Job" that's responsible for an operation requires an ISchedulingRule itself (e.g. for guaranteed sequential execution), it cannot call API functions that require other ISchedulingRule locks (because it cannot acquire them while it runs -- locks must be known before the Job runs, but it's often not known what locks will be required)

Verboten: Spinning the event loop

  • +1: BorisB
  • I regularly see hard-to reproduce bugs that are caused because client code spins the event loop (e.g. by opening a blocking dialog). It would be good to have a set of rules that govern when it is ok to spin the event loop.

Getting rid of singletons

  • +1: BorisB
  • Title says it all. Singletons are bad.

Role-based Access and Security

  • +1: MartinO
  • Role-based Access: Hide unavailable functionality for a user who has access to certain roles only, rather than just denying access
  • Capabilities are a relatively coarse-granular means of access control, need something more fine granular
  • Related to Preference Levelling, see below

Macro Recording and Playback

  • +1: MartinO, BorisB
  • Pervasive macro recording, see bug 8519 vs. Editor macro recording vs. Debugger macro recording
  • Should everything be a command / handler / workspace operation?
  • Or do we need a different kind of coupling / bus?

Workspace, Resources, Content Types

  • +1: MartinO
  • Content Types:
    • Pattern Matching for content types rather than just file extensions + stream evaluation
    • Case sensitive patterns for content types
    • Project-specific content types
  • Eclipse Projects
    • bug 35973 Physically nested projects
    • Namespace Resolution for projects with same name in a single workspace
    • Inclusion of files from anywhere (liked linked resource), plus exclusion of elements by pattern (exclude from resource tree rather than just hide)
    • Full native support for symbolic links (better algorithms for detecting link cycles and avoiding OutOfMemoryError)
    • Multiple projects in the same folder?
    • Logical Project Hierarchy Preference Levelling (like Apache Maven) - inherit settings from parent project?

Preference Leveling

  • We currently have (installation, instance, project) levels, what about user level / role-level Preferences? What about multiple levels of nested projects (see below)?

Non-UI Scripting

  • Loading a file into an Editor from the Commandline; other macros executed from commandline

Launch / Debug Enhancements

  • Need a Launch Stepper to execute fine-grained operations, rather than monolithic Launches
  • Need extendable / modifiable Launches
  • Multicore Debug Workflow (Pin&Clone, Colored Contexts)

Eclipse Application Model

  • +1 MartinO, BorisB
  • See E4/Eclipse Application Model
  • Why are Workbench / PlatformUI / Platform not part of the initial Application Model? Because they are not services in the sense that there could be alternative implementations --BorisB
    • What about SWT, Views, Widgets, Trees, Labels, ... JFace Dialogs, Fonts, Text, Editors... Perspectives... Databinding SWT is a library, not a service that could have a different implementation. The same is true (mostly) for JFace and data binding. --BorisB
    • Capabilities
    • Content Types, Associations
    • Markers
    • Workspace, Resources (related to Team Support)
    • Launching Framework
    • Core Variables / Launch String Substitution
    • What about EFS (core.filesystem)
  • What about Extension Registry (IExtensionRegistry), IExtensionTracker is not everything?
  • What about Secure Preferences
  • What about the rest of OSGi (NLS, Services, Bundle States / Activator / Classloader; Log; State Location)
  • What about standard bundle layout (related to Provisioning / Update / Plugins, Products, Features)

The other services listed above seem relevant, I will try to add them to E4/Eclipse Application Model before the call. --BorisB

Next Meeting