Just for the record, I'm still trying to develop a "proper" RichEdit control. I've written from scratch with RichEdit compatibility in mind, so I don't expect any copyright or suitability problems. At least, unless I screw something up or I'm less smart than I think.
If someone isn't afraid of running closed-source .exe from barely known developer (or can run it in a controlled environment), you can find the latest binary at:
I'm not releasing the source yet, because I don't think it's hackable, until at least its architecture is complete. What's more, I'm planning to license a heavily modified derived product comercially to some company (a rich text viewer/editor tailored for a specific application), so any copyright-related problems are undesirable.
What IS done:
- basic text wrapping with support for proportional fonts and character formatting, no major known bugs (the only supported attribute is Bold, but the rest will be relatively easy to add) - simple editing (typing text, backspace, delete, no overwrite mode yet) - a very incomplete implementation of Shift-arrow selection (done in a few hours yesterday :-) ), mouse operations don't support selection yet - per-paragraph alignment - pitiful low-level style management - bold attribute - some basic optimizations (avoiding rewrapping unmodified paragraphs unless editor window is resized) - uses UNICODE internally (not necessarily a good thing)
What isn't done:
- RichEdit API (which is a mess; I'm taking care of it in order to ensure compatibility wrt how editing functions work, however, basic editing functionality is the number one priority, as it's more difficult to achieve) - RTF interface - Undo - Clipboard - tabs - bulleted lists - setting paragraph attributes (margins are implemented internally but can't be changed with current interface, setting alignment by Ctrl+L/E/R works) - all RichEdit f3 functionality - MBCS support (and it would be very hard to add) - BiDi and CTL support (ditto) - everything not mentioned in the first list
Krzysztof
Krzysztof Foltman wrote:
- MBCS support (and it would be very hard to add)
Then you are doing something very wrong. Aren't you working in Unicode?
Shachar
Shachar Shemesh wrote:
- MBCS support (and it would be very hard to add)
Then you are doing something very wrong. Aren't you working in Unicode?
I am. However, I've assumed that one character = one wchar_t, and there are no prefix/suffix non-printable characters.
However, I'm speaking about encodings where character size may vary depending on a character. Like using utf-8 internally.
All string operations (even benign ones like calculating number of characters) become much more complex, instead of O(1) mapping between character index (in characters) and character offset (in bytes or words), we have O(N).
Chris
I have been working on richedit a little also, and am quite keen to get the ball rolling by having some richedit 2.0 code in winehq that others can help work on it. I'm quite interested to see the source for this.
Whether you show us or not, the copyright for the source still belongs to you. If you choose to license it under LGPL, then you can still release it under a different license later, so long as you are the sole author.
I think you'll find that the development proceeds much quicker if you release your source, and get it integrated into the Wine tree sooner rather than later. People will submit patches fixing your code, and new features.
When you do release your "completed" riched20 code, LGPL patches will still be submitted against it, and you'll experience the same licensing problems if you wish to incorporate other people's code.
Frankly speaking, people promising to release their source code "at a later date" is an impedement to development, because nobody is motivated to work on the promised feature in the mean time.
Please consider "release early, release often", so we can work together on this :)
Mike
Krzysztof Foltman wrote:
Just for the record, I'm still trying to develop a "proper" RichEdit control. I've written from scratch with RichEdit compatibility in mind, so I don't expect any copyright or suitability problems. At least, unless I screw something up or I'm less smart than I think.
If someone isn't afraid of running closed-source .exe from barely known developer (or can run it in a controlled environment), you can find the latest binary at:
I'm not releasing the source yet, because I don't think it's hackable, until at least its architecture is complete. What's more, I'm planning to license a heavily modified derived product comercially to some company (a rich text viewer/editor tailored for a specific application), so any copyright-related problems are undesirable.
What IS done:
- basic text wrapping with support for proportional fonts and character
formatting, no major known bugs (the only supported attribute is Bold, but the rest will be relatively easy to add)
- simple editing (typing text, backspace, delete, no overwrite mode yet)
- a very incomplete implementation of Shift-arrow selection (done in a
few hours yesterday :-) ), mouse operations don't support selection yet
- per-paragraph alignment
- pitiful low-level style management
- bold attribute
- some basic optimizations (avoiding rewrapping unmodified paragraphs
unless editor window is resized)
- uses UNICODE internally (not necessarily a good thing)
What isn't done:
- RichEdit API (which is a mess; I'm taking care of it in order to
ensure compatibility wrt how editing functions work, however, basic editing functionality is the number one priority, as it's more difficult to achieve)
- RTF interface
- Undo
- Clipboard
- tabs
- bulleted lists
- setting paragraph attributes (margins are implemented internally but
can't be changed with current interface, setting alignment by Ctrl+L/E/R works)
- all RichEdit f3 functionality
- MBCS support (and it would be very hard to add)
- BiDi and CTL support (ditto)
- everything not mentioned in the first list
Krzysztof
Mike McCormack wrote:
I have been working on richedit a little also, and am quite keen to get the ball rolling by having some richedit 2.0 code in winehq that others can help work on it. I'm quite interested to see the source for this.
I may send the source code to people who are potentially interested, so that it may get taken over if I get very busy or bored of it, and so they can make up their minds about if the design and the actual code is good enough for WINE.
Whether you show us or not, the copyright for the source still belongs to you. If you choose to license it under LGPL, then you can still release it under a different license later,
I think I'll dual license it (LGPL/BSD). I can think of some closed source applications (freeware or not) that would definitely benefit from a free rich text editor that doesn't suck as much as RICHEDIT20 does. However, "straight" LGPL would be OK too, if BSD puts anybody off.
so long as you are the sole author.
That's where part of the problem is: as long as someone sends me just a "Ctrl-arrow" patch, I can always be suspected of stealing that patch. It puts me in a very uncomfortable position.
release your source, and get it integrated into the Wine tree sooner rather than later. People will submit patches fixing your code, and new features.
I'm not going to wait until it's finished, I just don't want people to add features that must be removed or rewritten a week later because of half of functions have their parameters changed.
For example, adding Undo functionality from scratch after everything else is done would be a disaster.
When you do release your "completed" riched20 code, LGPL patches will still be submitted against it, and you'll experience the same licensing problems if you wish to incorporate other people's code.
Another reason not to accept patches just now. Luckily, a commercial version (made for particular use in two or three applications of a particular company) will be actually very simple, having little more features than it has now, and no RICHEDIT API at all. After that, I may safely fork the source.
Frankly speaking, people promising to release their source code "at a later date" is an impedement to development, because nobody is motivated to work on the promised feature in the mean time.
That's what I'm afraid of, too. I'm currently thinking of solutions for that problem.
Please consider "release early, release often", so we can work together on this :)
I agree, this project has a lot of space for collaboration. For example, achieving high degree of compatibility with RICHEDIT will require a lot of reverse engineering and finetuning. However, doing advanced features with basic architecture screwed up is not going to work.
Krzysztof
Krzysztof Foltman wrote:
Mike McCormack wrote:
...
so long as you are the sole author.
That's where part of the problem is: as long as someone sends me just a "Ctrl-arrow" patch, I can always be suspected of stealing that patch. It puts me in a very uncomfortable position.
Perhaps a suggestion... ask that for some period of time, people who submit patches against your code do so under a BSD or X11 license. Wine itself was under an X11 style license for quite a few years, so that probably won't scare too many people off. Be specific (and reasonable) about the period of time, though.