FontForge and moving forward
The annual Libre Graphics Meeting conference provides a regular update on the development of a number of free-software applications for visual graphics and design work. At this year's event in Toronto, one of the most talked-about sessions was Dave Crossland's take on the future of FontForge, the free-software font-editing tool.
Despite all of the progress that FontForge has made in the past few years, he said, recent developments have convinced him that the momentum lies elsewhere. In particular, newer projects started by dissatisfied FontForge users are likely to close the feature gap, and the type-design community seems more interested in engaging with those efforts. Perhaps predictably, that assessment of the current state of affairs sparked quite a bit of discussion—including a debate on the relative merits of desktop versus web-based applications.
Crossland began by recounting his personal experience with FontForge. He discovered the project while studying graphic design in college, and subsequently used it during his graduate work in the University of Reading's type-design program. Needless to say, virtually every other student used one of the proprietary, commercial font-design applications instead, and FontForge proved difficult to use in a number of ways.
![Dave Crossland [Dave Crossland at LGM 2015]](https://static.lwn.net/images/2015/05-lwn-crossland-sm.jpg)
It was after that experience that Crossland got directly involved in FontForge's development. Working with Google's Web Fonts office (which exclusively uses open fonts and relies on an open-source toolchain) he was able to fund some contractors to improve FontForge. He personally underwrote additional development with his share of the proceeds from Crafting Type, a series of type-design workshops that he co-hosted.
The workshops used FontForge, and the development work that they prompted led to important bug fixes and new features (such as collaborative editing). They also led to a significantly improved packaging situation for Windows and Mac users. Nevertheless, even after several hundred students went through the workshops, only a tiny fraction of them stayed with FontForge (in the post-talk discussion, Crossland estimated the number was in the single digits).
FontForge's technical debt was clearly a problem. The application had been initially developed as a one-off project by a developer who later lost interest and left the project. Although it more or less worked, the code was not organized in a way that let new developers get involved, it contained a lot of hard-coded designs that were hard to change, and relied on a custom widget set that was difficult to maintain.
Crossland cited one example for reference: when users asked that a certain text-entry box be made elastic in size rather than fixed-width (so it could expand to fill the available horizontal space), implementing the change took more than three hours. That was far from an ideal situation, but, he said, it also shed light on a deeper problem: users would not stick with the project and help make FontForge better because contributing small design patches or even observational notes was difficult to impossible.
Freedom to compete
Meanwhile, a growing collection of new free-software font editors was cropping up, the vast majority of which are implemented as web applications. He cited four in particular: Typism, Fontclod, Prototypo, and Glyphr Studio. These web-based tools are not as full-featured as FontForge, he said, but they are developing at a rapid clip and, even more importantly, they are attracting considerable input and involvement from working type designers.
Thus, when Crossland got involved with the Metapolator project (a whole-font-interpolation program that can be used, for example, to rapidly generate multiple weights from one font), he pushed that team to adopt a similar model: build a web-based application, and solicit input from type designers. That strategy has been successful enough, he said, that he decided he cannot justify making further contributions to FontForge.
The latest round of FontForge development has given the application robust support for importing and exporting the Unified Font Object (UFO) interchange format. Soon, users will be able to create a basic font in FontForge, interpolate its weight and other properties in Metapolator, then perform any additional tweaks in FontForge.
But he expects Prototypo, Glyphr Studio, and other UFO editors to catch up to FontForge's functionality; that and the already existing ecosystem of open-source UFO scripts and utilities (most of which originate from users of other, proprietary font editors) may make FontForge irrelevant. "It seems like a lot of people want a free-software font editor and get so frustrated with FontForge that they leave and start their own," he said in summary. "Maybe we need to work on 'conservation' of FontForge rather than 'restoration' work trying to turn it into a modern editor."
Moreover, the web-based applications have demonstrated an ability to draw end users into the development and design process—something that desktop applications rarely, if ever, achieve. One of the ultimate goals of free software's "four freedoms" is to enable the user to participate in development, Crossland said. The newer, web-based font-development applications can do so in a way that FontForge has never been able to. JavaScript and CSS are easier to understand and tweak than are C and C++.
Feedback
At the end of the session, a number of audience members took issue with what they interpreted as advice from Crossland for developers to stop working on FontForge. For example, one audience member noted that he had looked at Glyphr Studio and found it to be far behind FontForge in terms of its supported features.
Another audience member suggested that if a shortage of contributors was holding FontForge back, then the project should figure out what it needs and run a public crowdfunding campaign to raise support. Crowdfunding is an approach that has been increasingly successful for free-software graphics applications of late, and Crossland had mentioned successful Kickstarter drives by the competing web-based font editors in his talk.
To those points, Crossland responded that the technical debt of FontForge is beyond what a crowdfunding campaign can raise to fix, and that the web-based editors may be behind today, but are catching up quickly. Furthermore, he added, C-based desktop applications still separate users and developers into disjoint classes. Type designers are required to learn CSS and JavaScript as part of their jobs, so they can easily get involved with web-application development. "The ideal cultural impact of software freedom is co-creation. We want a proactive culture of design and development, and I don't think traditional desktop software is the ideal way to create that."
Øyvind "Pippin" Kolås from GIMP then disagreed strongly with the notion that web-development languages could compete with C and C++. CSS and JavaScript user interfaces rely on levels of abstraction to keep things simple, he said; the core development underneath is just as complex in a "web stack" as it is in native code.
It is easy to get started writing something new (regardless of the development platform); but over time, he said, web applications will become just as complicated as native ones—if not worse, given the abstraction layers required. Thus, ditching FontForge in favor of partially completed web applications—just to solicit UI patches from type designers—is throwing the baby out with the bathwater. The community has something that works now, while the alternatives do not do much of anything by comparison.
Crossland replied that he was not trying to make a blanket statement about native development, much less telling anyone to stop working on GIMP, Scribus, or other desktop tools. He conceded Kolås's point about the underlying complexity of applications, regardless of the programming stack. He would also be happy to see others push FontForge development forward, he added; he just cannot justify it for himself. As time on the clock was running out, FontForge developer Frank Trampe cheerfully assured the crowd that he was continuing to contribute to the project, which got a round of applause.
Because the session was the last talk of the day, the discussion carried over into the evening event that followed. Ultimately, most people seemed to come away with a clearer understanding of the distinct points under debate, which were a bit conflated at the outset. The size and scope of the technical debt in FontForge is one issue; the broader competition between web-development and native application stacks is a separate one. Crossland later posted a FAQ entry on the Metapolator wiki to explain his concerns and Kolås's, together and in more detail.
The larger question about if or when a project accumulates too much technical debt to be manageable was one that resonated with a lot of attendees at the event. There were, in fact, several other web-based applications on display in the other sessions, some of which are taking on established free-software desktop application projects. Technical debt and support problems for aging code can plague any project; no one seems to have a silver bullet.
It was also noted in the discussion that web and desktop
programming platforms have begun to overlap in a number of ways.
GNOME Shell is scripted in JavaScript, for example, while GTK+3 and
Qt's QML both rely on CSS-like styling. On the other hand, Mozilla
and Google are both exploring approaches (such as asm.js and Native Client)
that bring C and C++ to web applications. As hard as it may be to
predict where FontForge and Glyphr Studio will be in a year's time, it
is clear that the tug-of-war between desktop and web development is
far from over.
Index entries for this article | |
---|---|
Conference | Libre Graphics Meeting/2015 |
Posted May 7, 2015 14:16 UTC (Thu)
by alankila (guest, #47141)
[Link] (6 responses)
This statement sounds pretty stupid. I hope it had better context, because it's so clearly not true in practice. Firstly, there are very few to none who write web backends in either C or C++. Java and the scripting languages of various kind basically own this space. For web application server side, C and C++ are basically nonstarters.
Secondly, neither C nor C++ can be comfortably used as a development language. JavaScript won over these despite its (subjective) ugliness and steep performance and memory penalty. But these days, it's not that bad. If anything, there is less point today than ever to even consider choosing C or C++ for writing web application frontends.
The quote contains a measure of truth in that the algorithms and datastructures have to be more or less the same in order to solve a similar problem, so writing in JavaScript does not equate to magically waving a wand that eliminates the core of the problem. However, it does eliminate a giant portion of the other kind of complexity which definitely matters.
Posted May 7, 2015 15:32 UTC (Thu)
by halla (subscriber, #14185)
[Link] (5 responses)
I'm pretty sure that if you write a fontforge, a krita, a scribus, a blender, a gimp in javascript/webgl, that you'd end up with something at least as complex and impenetrable, and probably something much worse. If, with the current state of web technology, it can be done at all.
Posted May 7, 2015 19:39 UTC (Thu)
by alankila (guest, #47141)
[Link] (3 responses)
On the other hand, I have no expectation that every kind of application can be ran from the browser sandbox. indeed, application such as Blender or some video or sound editor would probably prove to be either impossible or perform very poorly. However, this is more a question about the APIs available to developer than about the fundamental implausibility of the task.
Posted May 14, 2015 10:01 UTC (Thu)
by ssokolow (guest, #94568)
[Link] (2 responses)
(If you haven't tried the Rust 1.0 beta, I highly recommend trying the 1.0 final release that's coming out tomorrow. It's got string handling, package management, segfault-immunity, and GTK bindings that place it in competition with languages like Python and JavaScript but it compiles to GC-less native code with performance comparable to C or C++ and not only does it have a great FFI for calling C code, it makes it really easy to generate libraries that C code can call.)
http://rust-lang.org/ (Downloads)
Noteworthy tutorials:
Noteworthy Libraries:
...and the subreddit and IRC channel are very helpful.
Posted May 14, 2015 16:50 UTC (Thu)
by dashesy (guest, #74652)
[Link] (1 responses)
Posted May 15, 2015 5:26 UTC (Fri)
by ssokolow (guest, #94568)
[Link]
However, crates.io does appear to already have a couple of different BLAS bindings, so there are obviously some people interested in that use.
Posted May 8, 2015 6:37 UTC (Fri)
by massimiliano (subscriber, #3048)
[Link]
If, with the current state of web technology, it can be done at all.
The "current state of web technology" is a very fast moving target, and incredibly diversified.
Given the variety of different frameworks that one can call "web technologies", I am convinced that the complexity of a large "web based" software product can vary a lot depending on design decisions and frameworks adopted (which is of course true also in the C and C++ world).
However, the "web" ecosystem is becoming truly amazing, and in particular it is providing tools that support very clean software design and implementation. I would contend that making the right choices one can not only implement projects "as complex as the C and C++ ones", but also do them "better" and in a fraction of the time.
Just look at how many desktop projects are choosing something like node-webkit, or the new "electron" by Github, as a base framework. Heck, you can laugh at it, even Microsoft used electron for their new free (as in beer) cross platform development environment!
We should stop assuming (by preconception) that "web development" equals necessarily "an entangled unmaintainable mess of PHP and spaghetti Javascript". The world is moving on :-)
Posted May 8, 2015 14:58 UTC (Fri)
by rsidd (subscriber, #2582)
[Link] (1 responses)
Posted May 8, 2015 15:00 UTC (Fri)
by rsidd (subscriber, #2582)
[Link]
FontForge and moving forward
FontForge and moving forward
FontForge and moving forward
FontForge and moving forward
https://play.rust-lang.org/ (In-browser compile+run playpen)
https://github.com/ctjhoa/rust-learning (Curated list of learning materials)
https://github.com/kud1ing/awesome-rust (Curated list of libraries)
https://crates.io/ (NPM/PyPI equivalent)
https://www.reddit.com/r/rust/comments/35ue7y/rust_with_e... (Source for my Emscripten comment)
https://www.youtube.com/watch?v=LazvK39Oc4U (Ghe concepts behind Rust and calling Rust from Ruby)
https://www.youtube.com/watch?v=3CwJ0MH-4MA (Calling Rust from Python)
http://doc.rust-lang.org/1.0.0/book/
http://www.rustforrubyists.com/
https://github.com/rust-gnome (PyGTK/PyGI equivalent)
http://www.piston.rs/ (PyGame equivalent)
https://github.com/kbknapp/clap-rs/ (Very nice command-line argument parser)
http://arewewebyet.com/ (Overview of server-side web frameworks)
I have only read praise about Rust, and am very eager to try it in what seems to be a good fit. What is the state of scientific computing in Rust? is there any equivalent of SciPy, NumPy, Scikits, Pandas, IPython and the most important one for me matplotlib in Rust?
FontForge and moving forward
FontForge and moving forward
FontForge and moving forward
FontForge and moving forward
FontForge and moving forward