Project of the Month, July 2010

Scintilla

Scintilla is a source code editing component. Any project can add Scintilla to allow their users to edit source code and can augment
Scintilla with application-specific features. Scintilla cleanly separates platform code from generic code which allows it to integrate with all of the popular GUI toolkits. A small editor application, SciTE, is available which has proved useful to many and also acts as example code showing how to use Scintilla.

Home page: http://www.scintilla.org/

Why and how did you get started?

I was using Python on Windows and the best IDE available was PythonWin but it had a poor editor so I wanted to improve this. Established languages like Delphi, C++, and Visual Basic had slick development environments and the upcoming languages, particularly dynamic languages, were being held back by primitive tools. Providing an editing component that could be easily dropped into new projects helped remedy this. The first announcement and code drop was March 14, 1999.

Who is the software’s intended audience?

The immediate audience is developers of editors and other development tools like debuggers. Through them the wider audience of all software developers is reached.

What are a couple of notable examples of how people are using your software?

Komodo is a commercial IDE for dynamic languages that is based on Mozilla and its UI language XUL. It works on Windows, OS X and Linux and uses platform-native versions of Scintilla for good performance and platform fidelity. Komodo extends Scintilla’s syntax highlighting with the Luddite language which can be used for new languages and to ease adding variants to languages such as a new templating language over HTML.

Padre is an open source IDE for the Perl language. It overrides more Scintilla functionality than many applications do allowing users to search using real Perl regular expressions and choose syntax highlighting implemented in Perl. Scintilla is just a starting point and much of its functionality can be augmented or changed to closely match a particular application niche.

What are the system requirements for your software, and what do people need to know about getting it set up and running?

Any currently popular operating system with a graphical user interface (Linux, OS X, or Windows) and some development tools. Most will find this easiest with a C or C++ compiler although it is possible to use Scintilla with other environments such as Delphi or Visual Basic.

To use Scintilla, they should understand how to program GUI applications for their particular environment and should read some of the example code. SciTE includes most of the features wanted in an editor so the design or code of features can be copied.

What gave you an indication that your project was becoming successful?

When the number of projects using Scintilla started to grow rapidly and it started to be used in widely used projects like Komodo and Notepad++.

What has been your biggest surprise?

That nothing has supplanted it yet – there are several other source editing component projects but they only work with a specific GUI toolkit.

What has been your biggest challenge?

To maintain compatibility and limit complexity while still expanding in scope.

Why do you think your project has been so well received?

It arrived at a time when there was a need for it and it has worked reliably for a long period so people are comfortable in choosing it. Download a current version of SciTE and replace its copy of Scintilla with one from 10 years ago and the combination will work. While there have been some incompatible changes, they are mostly minor and can be easily worked around.

What advice would you give to a project that’s just starting out?

Be prepared to say no to contributions. Sometimes a patch needs continued work until it is solid enough to include and sometimes features just do not belong in a project. You can always change your mind and add a feature that you have rejected once but its very hard to remove features that other projects depend on.

Where do you see your project going?

It will not change radically in the future but will continue to accumulate functionality.

What’s on your project wish list?

Deeper analysis of source code. Currently, source code is looked at quite superficially and there is scope to provide more information to the user. Some IDEs provide information about variable scope and preprocessor state and this type of feature can be added to Scintilla and hence to downstream projects.

What are you most proud of?

The breadth of use.

If you could change something about the project, what would it be?

A better basic design. The weight of history constrains what is possible and makes it hard to do some things.

How do you coordinate the project?

The Scintilla project does not have a formalised structure with people having particular roles. Much of the project is driven by changes introduced by downstream projects. Bugs are either handled by me or left open until someone decides to fix them. There is a regression test suite run on most builds but it only covers the major features and most popular languages – there is certainly room for additional tests.

How many hours a month do you and/or your team devote to the project?

My involvement varies a lot but over the longer term it probably averages 50 hours per month.

What is your development environment like?

Athlon-64 based PC running Windows XP with mainly Visual Studio 2010 and BoundsChecker but also checking with Borland C++ and MinGW. Same machine running current Fedora or Ubuntu Linux with gcc and Qt Creator for debugging. MacBook with XCode.

Milestones:

Date Milestone
March 1999 0.8 – Initial release
May, 1999 1.0 – First useable release
August, 2002 1.47 – GTK+ 2.x supported
September, 2003 1.55 – Line wrapping performed incrementally, improving
performance
June, 2007 1.74 – OS X Carbon support
August, 2009 2.0 – Allowed multiple selection and virtual space
April, 2010 2.10 – Case insensitivity for different languages. DroppedGTK+ 1.x support.
August, 2010? 2.20 – Lexers can use extra state to more deeply analyze source

How can others contribute?

People are most productive when scratching their own itches, so find something that doesn’t work well for you and propose a patch. Otherwise look for something close to your interests: you can look on the bug and feature request tracker for open issues in a language you use.


Ten-year badge

This month and for the rest of 2010, we’re highlighting some of our most venerable projects. This month’s Project of the Month is one of about 1,000 that began hosting on SourceForge.net in the site’s first year of existence, beginning in November 1999.


More projects of the month

Project name: Scintilla

Date founded: March, 1999

Project page: https://sourceforge.net/projects/scintilla/

Project Leader


Neil Hodgson

Neil Hodgson

Occupation:Software Developer

Location: Sydney, Australia

Key Developers


Robin Dunn

Robin Dunn http://wxpython.org/blog/

Occupation:Occupation or experience: 25+ years as a Software Engineer in variousdisciplines
Location: Vancouver, WA, USA

Phil Thompson

Occupation: Software Engineer, Director Riverbank Computing Ltd Education: BSc. Computer Science & Electronics

Location: UK


Mike Lischke

Mike Lischke

Occupation:Senior Software Engineer at Sun Microsystems/Oracle
Location: Limbach-Oberfrohna, Germany

Philippe Lhoste

Occupation:Senior developer
Location: Near Paris, France


Steve Donovan

Steve Donovan

Occupation:Software Developer, CSIR CMI, Johannesburg
Location: Johannesburg, South Africa


Jason Oster

Jason Oster

Occupation:Information Technology
Location: Flagstaff, AZ

Mitchell Foral

Occupation: Software Engineer
Location: USA



John Ehresman

Occupation:Software Engineer
Location: Boston, MA  USA


Stephan Deibel

Stephan Deibel

Occupation:Software developer at Wingware



Shane Caraveo

Shane Caraveo

Location: Vancouver, CA

Trent Mick

Occupation:Senior Developer at ActiveState
Location: Vancouver, CA


Todd Whiteman

Todd Whiteman

Occupation:Senior Developer at ActiveState
Location: Vancouver, CA


Eric Promislow

Eric Promislow

Occupation:Senior Developer at ActiveState
Location: Vancouver, CA




Why did you place the project on SourceForge.net?

It was one of the few open source hosting sites available at the time, it offered several needed facilities and it accepted the “Historical Permission Notice and Disclaimer” license.

How has SourceForge.net helped your project succeed?

By providing stable facilities over a long period of time, it has allowed us to concentrate on developing the project rather than worry about infrastructure. It provides a wide variety of facilities so that it has been possible to, for example, experiment with moving from one version control system (CVS) to either Bazaar or Git.

What is the number one benefit of using SourceForge.net?

Stability.