Excellent picture!

2013/3/18 Luc Fabresse <[email protected]>:
>
> THANK you all!
> More or less my feelings:
>
> Luc
>
> 2013/3/18 stephane ducasse <[email protected]>
>>
>> For those of you that want to know a bit more:
>> http://code.google.com/p/pharo/w/edit/ActionsInPharo20
>>
>>
>> Here is a log of all the actions done in 2.0. The idea is not to replicate
>> the bug tracker, as it is easy to get a complete list
>> [http://code.google.com/p/pharo/issues/list?can=1&q=milestone%3D2.0 here].
>> Instead, the idea is to have a list of the major improvements with some
>> explanations.
>>
>> ==UI==
>> We started a long term effort on the Pharo UI.
>>
>>   * *Spec: a new way to build UI.* We started to rethink the way we build
>> user interfaces in Pharo.  Spec has been developed by Benjamin van Ryseghem
>> under the guidance of Stéphane Ducasse. Spec is based on a declarative
>> syntax to specify user interfaces and on valueHolder port composition. Spec
>> supports widgets definition, reuse and composition. New widgets can be
>> created by composing existing widgets. Many existing tools have been
>> reimplemented using Spec. We wrote a tutorial for Spec. Spec will be used
>> for the UIPainter that we will develop for Pharo 3.0. In Pharo 3.0 we  will
>> revisit and improve Spec. One of the idea is that Spec should be independent
>> of Morphic so that we can use it to build native tools or with Amber.
>>
>>    * *Widget enhancements.* Several important widgets were greatly
>> enhanced. This effort was led by Benjamin van Ryseghem. For example,
>> multiple selection and single selection lists were unified. A new widget
>> list has been developed from scratch and it exhibits massive speed
>> improvements.
>>
>>    *  *Layout improvements/cleanups.* We improved the protocol used for
>> creating LayoutFrame. We cleaned its implementation and simplify clients
>> code. Now instance of layoutFrame are systematically well initialized.
>> Clients do not need to check against nil values and a new protocol avoids to
>> be forced to specify rectangle when only one number is required.
>>
>>   *  *Keybindings.* Keybindings is a new library developed by Guillermo
>> Polito to manage key bindings. We started to use it to define widgets
>> keybinding as well as menu shortcut. In Pharo 3.0 we will systematically
>> rewrite all the hard-coded bindings with it and write a documentation. It
>> supports:
>>     * source code navigation
>>     * running tests
>>     * basic refactoring
>>     * creating classes
>>     * and many more shortcuts: see "Shortcuts Description" in the window
>> menu (triangle on the top right) in Nautilus
>>
>>   * *New icons (famfam).* Pharo now uses new icons. We are looking for
>> designers that could help us to define the UI look of the future Pharo
>> versions.
>>
>>   * *"Growl" style notifications.* To avoid to get UI blocked by simple
>> notifications, Pharo now uses a growl like notification systems.
>>
>>   * *Revamp progress bar.*  We started to rewrite the progress bar
>> framework. We introduced the Job class and notification to specify progress
>> bar.
>>
>>   * *Rectangle intersection improvements.* Rectangle intersection is a
>> central part for UI redrawing and invalidating screen regions. Rectangle
>> intersection is then an important functionality. We started to address the
>> problem of the non-specification of the intersection of non overlapping
>> rectangles. We introduced the intersect:ifNone protocol. As a side effect
>> this improves the damage recording mechanisms and provide a faster system.
>>
>> ==Developer tools==
>>
>>    * *Nautilus browser.* Nautilus, a new code browser has been developed
>> by B. van Ryseghem. It supports: in place hierarchy, groups, refactorings,
>> multiple views, icon navigation and many other features. Nautilus has a
>> plugin infrastructure so everybody can use existing plugin or write new
>> ones. Nautilus is fully navigable using shortcut. In Pharo 3.0 we plan to
>> rewrite Nautilus using Spec.
>>
>>    * *Critics browser.* From Pharo 2.0 on we want to systematically run
>> rule checking rules. We revisited the SmallLint rules to customize them to
>> Pharo and we better documented them. We developed a new browser that will
>> helps you to apply SmallLint rules. In particular it supports the notion of
>> todos. We can mark an issue as a false positive or as todos and get the bar
>> green. We wrote a complete chapter on the Critics Browser. We will start to
>> work on an infrastructure to systematically evaluate SmallLint rules on the
>> projects published in the Pharo distribution.
>>
>>    * *Omnipresence of the Refactoring Engine.* We believe that Pharo
>> itself should use the best tools it has to change itself. This is why we
>> decided to introduce the Refactoring Engine and SmallLint rule checkers.
>> Note that this move to integrate extra tool is not against our vision to
>> produce a minimal core. Once we have fast fuel based package loading we will
>> be able to remove Metacello from the core.
>>
>>   *  *Improved version diff browsing.* We improved the diff and merging
>> tool.
>>
>>   *  *Spotlight.* Spotlight is a ubiquitous tool to find classes and
>> methods. You can activate it just press shift+enter.
>>
>>   * *Revamp E/O Completion and smart chars.* In the past, smart characters
>> (automatically closing parenthesis, single quote...) did not play well with
>> auto completeion. In addition, they were duplicated functionality between
>> two automatic ecompletion algorithms. In Pharo 2.0 we unified the two
>> algorithms under a single umbrella and integrate them smoothly with
>> smart-characters.
>>
>>   * *Interactive navigation using "ctrl/cmd+click" over classes/methods.*
>> Now Pharo supports the interactive navigation of source code using
>> cmd/ctrl-click on selectors and class names in the source-code
>> [implementors, senders, users].
>>
>>   * *Shout themes.* Several syntax highlighting themes have been defined.
>>
>>   * *Andreas profiler.* As a tribute to Andreas Raab, we included an
>> alternate profiler developed by Andreas.
>>
>> ==Networking==
>>
>>   * *New version of Zinc.* Zinc is developed by Sven Van Caekenberghe.
>> New versions of Zinc the http client/server library has been integrated.
>>
>>   * *Zodiac (SSL).* Zodiac is an extension of Zinc to support SSL
>> connections.
>>
>> ==System==
>>
>>   * *System Announcer.* Pharo had a change notification system. A change
>> notification system is important because tools can register to events to
>> update or react without getting coupled with the system. The problem was
>> that the previous change notification broadcasted only symbols and not plain
>> objects. It was limiting the power that we can get about first class
>> objects. In addition not all the events were raised and competing with
>> Announcements (announcements raised plain objects). In Pharo 2.0, we
>> redefined system events as Announcements, introduced a System Announcer
>> whose responsibility is to raise announcement for all the events and removed
>> the old SystemChangeNotifier. This sets up the basis for the future
>> communication between tools.
>>
>>   * *RPackage replacing PackageInfo.* PackageInfo is a way to identify if
>> a method belongs to a package. The implementation is based on dynamic
>> queries. Such queries it leads to problems to produce new generation browser
>> and tools. We defined a new implementation of the package management of
>> Pharo. The idea is to represent package as real objects. In Pharo3.0 we will
>> continue to remove the dependency to PackageInfo.
>>
>>   * *Manifest: Package metadata.* We introduce the notion of package
>> metadata. Package metadata are used   to manage all false positives or todos
>> of SmallLint so that you do not have to check all the time rule results.
>> Each package can now have a class named ManifestNameOfXPackageNameX. It will
>> be the place to add documentation and other information.
>>
>>   * *Command line tools / Headless mode.* We really want to make sure that
>> Pharo can be used in non interactive mode and that we can pass scripts to it
>> on the command-line. For this reason we continued to work on making sure
>> that Pharo can be used headless. In particular we introduced a new way to
>> handle command line parameters. See `pharoVM my.image --help` and `pharoVM
>> my.image --list`
>>     * st Handle .st source files
>>     * Fuel Handle fuel files
>>     * config Install and inspect Metacello Configurations from the command
>> line
>>     * save Rename the image and changes file
>>     * test Run tests from command line
>>     * update Load updates
>>     * printVersion Print image version
>>     * eval Evaluate directly passed-in one line script
>>
>>   * *Native boost.*   NativeBoost is a library that generates assembly
>> code on the fly. It is used to generate FFI calls. By default
>> [http://www.esug.org/wiki/pier/Conferences/2011/Schedule-And-Talks/Native-boost
>> NativeBoost] is included mostly for future use. In Pharo3.0 vector graphics
>> will be used and Nativeboost will be used to invoke the graphics primitives.
>>
>>   * *Ring metamodel.* Ring is a new meta model introduced in Pharo 1.4. It
>> is used to represent code that is not currently executed. Ring has an API
>> that is polymorphic with a subpart of the core executing entities of Pharo
>> (Class and CompiledMethod). This has the nice property that the tools that
>> manipulate such entities can also manipulate ring objects. Hence Ring
>> supports of image browsing. In Pharo 3.0 we will rewrite certain tools to
>> use ring and deprecate some abstractions like pseudo-classes and file
>> packages.
>>
>>
>>   * *Fuel.* Fuel is one of the fastest and versatile object serializer. In
>> Pharo 2.0, we decided to use fuel as a default serializer. In particular, on
>> error the execution stack is saved now in fuel format. Therefore it is
>> possible to reopen a debugger on a similar image for debugging purpose.
>>
>>   * *Freetype fonts.* We offer now a better handling of freetype fonts and
>> their management.
>>
>>   * *Metacello: a universal package map.* Metacello is a framework to
>> describe is included in the default image. In the future Pharo will be
>> managed by Metacello. The idea also is that once we have fast fuel based
>> package loading we will be able to remove Metacello from the core.
>>
>>
>> ==Kernel==
>>
>>   *  *New object-oriented and powerful filesystem.* The old library to
>> support file was dated and cumbersome to use. This version of Pharo uses
>> FileSystem a new framework developed by Colin Putney. We revisited and
>> integrated deeply into Pharo core. A full chapter is available in the new
>> book http://rmod.lille.inria.fr/pbe2/. The work includes a complete removal
>> of FileDirectory. There is a compatibility package to support the
>> transition. Enjoy the new and clean API.
>>
>>   * *DateAndTime refactoring.*  All the DateAndTime internals are now
>> UTC-based. This prevents bugs in certain edge-cases where the image is moved
>> through different time-zones, most prominently for daylight saving time.
>>
>> ==VM==
>>   *  Latests cog builds
>>   *  SSLPlugin
>>   *  FilePlugin enhancements
>>   *  SocketPlugin fixes
>>   *  Included libraries: freetype2, cairo
>>
>> ==Large Cleanups==
>>   * *FileDirectory removal.* FileDirectory the old file system has been
>> removed. It is packaged as a separate package to support migration to
>> Pharo2.0.
>>
>>   *  *Deprecation of old serialization framework.* *ReferenceStream* and
>> *SmartRefStream* are removed. In addition, *DataStream* is cleaned to be
>> only used by Monticello. For a general purpose serializer, use
>> *[http://rmod.lille.inria.fr/web/pier/software/Fuel Fuel]* instead.
>>
>>   * *Large amount of bugs fixes.* You already guessed in addition we
>> integrated *a lot* of small improvements, cleanups and bug fixes.
>>
>> ==Continuous Integration==
>>   * *Zeroconf scripts.* Weren't you fed up not be able to install Pharo
>> from a single command line or to pass it arguments?  Using a nice debugger
>> and an interactive environment development does not mean that Pharo
>> developers do not value automatic scripts and love command line. Yes we do
>> and we want the best of both worlds! Since Pharo 2.0, Pharo supports a way
>> to define and handle command line argument and offer zero conf scripts. We
>> even wrote a chapter on them.
>> Here is a nice start with a zero-conf bash scripts: `wget --quiet -O -
>> http://files.pharo.org/script/ciPharo20PharoVM.sh | bash`
>>
>>   * *CI for everything.* A new infrastructure to support continuous
>> integration is now in place.
>>        * First new images and vms are mirrored under
>> http://files.pharo.org/
>>        * Second the key parts of pharo are automatically built on
>> [https://ci.inria.fr/pharo/]
>>        * Third community project can be hosted at
>> [http://ci.inria.fr/pharo-contribution/]
>>
>>
>

Reply via email to