Recent

Author Topic: More open positions  (Read 4208 times)

JuhaManninen

  • Global Moderator
  • Hero Member
  • *****
  • Posts: 3644
  • I like bugs.
More open positions
« on: April 28, 2013, 12:14:58 pm »
Related to the splash screen discussion I promised to look for some easy tasks and bug fixes.

One easy but boring task is documentation. LCL is poorly documented. Patches to the XML files are welcome.

Below is a list of reports about bugs and features in IDE.
They typically don't require studying too much code. They are not trivial but doable.
The list is surely not comprehensive, I just briefly looked at some recently modified issues.

The best way still is to select your own favorite feature and then implement it, or the bug that most bothers you and then fix it. It gives the most satisfaction when it is done.

There are > 1600 open issue reports. You can select any of them, including the ones that are assigned.
In practise most of the assigned issues are on the author's ToDo list but not actively worked on.
You can also implement a feature without an existing report.

Precise technical questions are answered by developers once you have made effort and studied the code yourself.

---

24037: Implement text 'Select All' in code editor with mouse right-click
  http://bugs.freepascal.org/view.php?id=24037 (most trivial in this list)

24026: menu accelerators and initial letters treated inconsistently
  http://bugs.freepascal.org/view.php?id=24026

18804: Package dialog settings
  http://bugs.freepascal.org/view.php?id=18804

24337: Adding a single source file to project or to package is complicated
  http://bugs.freepascal.org/view.php?id=24337
related to:
21333: Project inspector add files doesn't add files properly
  http://bugs.freepascal.org/view.php?id=21333

23267: Mark "deprecated" Properties in ObjectInspector and Code-Explorer
  http://bugs.freepascal.org/view.php?id=23267

23151: Differentiate multi-selected object properties in the Object Inspector panel
  http://bugs.freepascal.org/view.php?id=23151

18734: "Set to default value" in Object Inspector doesn't work for non-trivial properties
  http://bugs.freepascal.org/view.php?id=18734 (may require studying some Designer related code)

Bart

  • Hero Member
  • *****
  • Posts: 3538
    • Bart en Mariska's Webstek
Re: More open positions
« Reply #1 on: April 28, 2013, 01:27:42 pm »
Hardly trivial IMHO.
I wouldn't even know where to look for the PopupMenu for the SourceEditor in the first place.
Try Ctrl-clicking in the IDE code, and most of the time you end up in some abstract method (because it is passed as a parameter with the type of some base class, en God only knows what the actual class is (@desing time that is)).

Without familiarity with the insides of the IDE, you'll spend lot's of time.
(Once you found it, the solution may be trivial.)

Bart

marcov

  • Global Moderator
  • Hero Member
  • *****
  • Posts: 7493
Re: More open positions
« Reply #2 on: April 28, 2013, 02:02:33 pm »
Hardly trivial IMHO.
 
Without familiarity with the insides of the IDE, you'll spend lot's of time.
(Once you found it, the solution may be trivial.)

In general you start diving into a part that you are interested/familiar with, and only cherry pick those reports. Once you fixed a few, you venture further etc.

JuhaManninen

  • Global Moderator
  • Hero Member
  • *****
  • Posts: 3644
  • I like bugs.
Re: More open positions
« Reply #3 on: April 28, 2013, 02:05:22 pm »
Quote
(Once you found it, the solution may be trivial.)
True, Bart.
I meant it is trivial once you know how to do it. :)
Still, the code for IDE's menus is easy to locate compared to most other code.
You can search existing strings with Ctrl-Shift-F in all Lazarus sources. Once the OS has cached the files, the search is very fast.
I tweaked the editor menus myself, it cannot be very difficult.

The most difficult areas in Lazarus code for me are the Designer code and LCL-GTK2 bindings code. I think I never manager to fix a single bug for LCL-GTK2 although I tried.
Codetools are rather difficult, too. Debugging it is difficult because it uses pointers extensively. Yet, it is an impressive piece of code.

Anyway, code must be learned before you can fix it or add features there.
Both Find in Files and code browsing features are very usefull then.

Martin_fr

  • Administrator
  • Hero Member
  • *
  • Posts: 5691
    • wiki
Re: More open positions
« Reply #4 on: April 28, 2013, 03:10:56 pm »
Hardly trivial IMHO.
I wouldn't even know where to look for the PopupMenu for the SourceEditor in the first place.
Try Ctrl-clicking in the IDE code, and most of the time you end up in some abstract method (because it is passed as a parameter with the type of some base class, en God only knows what the actual class is (@desing time that is)).

Without familiarity with the insides of the IDE, you'll spend lot's of time.
(Once you found it, the solution may be trivial.)

"trivial" is not equal to "not time consuming"

About the finding the real class. Depending on the name of a function, you can search in files, and find all declared methods of that name. Or you can run the IDE in the debugger. (open  ide/lazarus.lpi and press F9)

About the popup:

Simple start (incremental searching) for "popup in SourceEditor. It gets you to  lin 243
Code: [Select]
    FPopUpMenu: TPopupMenu;
    FMouseActionPopUpMenu: TPopupMenu;
For the difference, look at the mouse options, in he ide option dialog, and find that you can open more than one context menu, by assigning stuff to shift-right mouse etc....

Or ask. Assuming you did: It is "FPopUpMenu" you want to look at.

Search for other occurrences of those.

You should find
Code: [Select]
procedure TSourceEditor.SetPopupMenu(NewPopupMenu: TPopupMenu);
begin
  if NewPopupMenu<>FPopupMenu then begin
    FPopupMenu:=NewPopupMenu;
Setter of a property. Search for write access to that property "PopupMenu := "
and find:
Code: [Select]
    PopupMenu := TabPopupMenu;
Code: [Select]
AnEditor.PopupMenu := SrcPopupMenu;

Now it is a bit of a random search for the to, you will find the first is for click on a tab, the 2nd for click on the editor text.
You can search that, and you will find where it is created and items are assigned.


I needed to search them myself too. I don't remember all of them.
And as a side effect, you may discover existing IDE functionality that you didnt know.

---------
There are alternative ways:

You know that for example there is a section about bookmarks, so you can search that.

Or you search in files for the English resource string, of an item in the menu, then search that identifier, and work your way back...

---
Since I did the search, here is the final result:
    procedure SrcPopUpMenuPopup(Sender: TObject);

took me 5 minutes, but If I had been new to it, I admit, it may have taken 30 to 60 minutes to find. Depending on which route I had taken

--EDIT

Even searching for clipboard would have gotten you there
Code: [Select]
  {%region *** Clipboard section ***}
    // Clipboard section:

« Last Edit: April 28, 2013, 03:20:18 pm by Martin_fr »

BigChimp

  • Hero Member
  • *****
  • Posts: 5740
  • Add to the wiki - it's free ;)
    • FPCUp, PaperTiger scanning and other open source projects
Re: More open positions
« Reply #5 on: April 28, 2013, 03:33:46 pm »
Exactly.

Let's focus on the positives: getting more people involved in improving the product instead of the negatives - that it may take them some effort to help improve the product.
Thanks, Martin, for another clear explanation and positive post.

"If I can figure out Lazarus enough to write some patches, anyone can" (TM)
Want quicker answers to your questions? Read http://wiki.lazarus.freepascal.org/Lazarus_Faq#What_is_the_correct_way_to_ask_questions_in_the_forum.3F

Open source including papertiger OCR/PDF scanning:
https://bitbucket.org/reiniero

Lazarus trunk+FPC trunk x86, Windows x64 unless otherwise specified

JuhaManninen

  • Global Moderator
  • Hero Member
  • *****
  • Posts: 3644
  • I like bugs.
Re: More open positions
« Reply #6 on: April 29, 2013, 03:45:39 pm »
I committed many existing patches which were waiting for too long. New patches are welcome.

I listed open issues for the IDE but there are other areas with relatively easy tasks, too.
Many components would need care, and also packages like ToDoList.

Then there are big tasks for the future, like Project Groups and web interface for package installation etc.
They are not trivial, start with something simpler.